1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
freebsd/sys/amd64/include
Peter Wemm f1b665c8fe Revive backed out pmap related changes from Feb 2002. The highlights are:
- It actually works this time, honest!
- Fine grained TLB shootdowns for SMP on i386.  IPI's are very expensive,
  so try and optimize things where possible.
- Introduce ranged shootdowns that can be done as a single IPI.
- PG_G support for i386
- Specific-cpu targeted shootdowns.  For example, there is no sense in
  globally purging the TLB cache for where we are stealing a page from
  the local unshared process on the local cpu.  Use pm_active to track
  this.
- Add some instrumentation for the tlb shootdown code.
- Rip out SMP code from <machine/cpufunc.h>
- Try and fix some very bogus PG_G and PG_PS interactions that were bad
  enough to cause vm86 bios calls to break.  vm86 depended on our existing
  bugs and this was the cause of the VESA panics last time.
- Fix the silly one-line error that caused the 'panic: bad pte' last time.
- Fix a couple of other silly one-line errors that should have caused more
  pain than they did.

Some more work is needed:
- pmap_{zero,copy}_page[_idle].  These can be done without IPI's if we
  have a hook in cpu_switch.
- The IPI handlers need some cleanup.  I have a bogus %ds load that can
  be avoided.
- APTD handling is rather bogus and appears to be a large source of
  global TLB IPI shootdowns for no really good reason.

I see speedups of between 1.5% and ~4% on buildworlds in a while 1 loop.
I expect to see a bigger difference when there is significant pageout
activity or the system otherwise has memory shortages.

I have backed out a few optimizations that I had been using over the last
few days in order to be a little more conservative.  I'll revisit these
again over the next few days as the dust settles.

New option:  DISABLE_PG_G - In case I missed something.
2002-07-12 07:56:11 +00:00
..
pc
_inttypes.h Since printf(3) now supports the `j' conversion specifier, use that 2002-06-30 05:48:03 +00:00
_limits.h This is the start of the FreeBSD/x86_64 kernel. 2002-06-30 08:57:17 +00:00
apicreg.h
asm.h ASM versions of __FBSDID. 2002-03-23 02:01:27 +00:00
asmacros.h Silence preprocessor warning, No need to use CONCAT with "," and "word". 2002-06-01 20:22:33 +00:00
atomic.h Make MPLOCKED work again in asm files and stringify it explicitly 2002-02-28 06:17:05 +00:00
bus_amd64.h Add stubs for bus_space_unmap() and bus_space_free(). They are needed to 2002-02-18 13:43:19 +00:00
bus_at386.h Add stubs for bus_space_unmap() and bus_space_free(). They are needed to 2002-02-18 13:43:19 +00:00
bus_dma.h
bus_memio.h
bus_pio.h
bus.h Add the following functions/macros to support byte order conversions and 2002-02-27 17:16:18 +00:00
clock.h Remove __P. 2002-03-20 05:48:58 +00:00
cpu.h Remove __P. 2002-03-20 05:48:58 +00:00
cpufunc.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
cputypes.h
critical.h Remove the critmode sysctl - the new method for critical_enter/exit (already 2002-07-10 20:15:58 +00:00
db_machdep.h
elf.h Move the definition of ElfN_Hashelt to common headers. The only platform 2002-05-30 08:32:18 +00:00
endian.h This is the start of the FreeBSD/x86_64 kernel. 2002-06-30 08:57:17 +00:00
exec.h
float.h
floatingpoint.h Fixed the return value of fpsetmask(). The API requires inversion of the 2002-06-01 17:39:46 +00:00
fpu.h Remove __P. 2002-03-20 05:48:58 +00:00
frame.h Remove __P. 2002-03-20 05:48:58 +00:00
ieeefp.h
in_cksum.h
kse.h Add files that are new for KSE. 2002-06-29 07:04:59 +00:00
legacyvar.h
limits.h This is the start of the FreeBSD/x86_64 kernel. 2002-06-30 08:57:17 +00:00
md_var.h GC various bits and pieces of USERCONFIG from all over the place. 2002-04-09 11:18:46 +00:00
mptable.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
mutex.h GC #if 0'd assembly mutex micro operations. If someone wants to bring 2002-03-28 15:14:23 +00:00
npx.h Remove __P. 2002-03-20 05:48:58 +00:00
param.h This is the start of the FreeBSD/x86_64 kernel. 2002-06-30 07:42:36 +00:00
pcb_ext.h Remove __P. 2002-03-20 05:48:58 +00:00
pcb.h Compromise for critical*()/cpu_critical*() recommit. Cleanup the interrupt 2002-03-27 05:39:23 +00:00
pci_cfgreg.h
pcpu.h Compromise for critical*()/cpu_critical*() recommit. Cleanup the interrupt 2002-03-27 05:39:23 +00:00
pmap.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
proc.h Remove the critmode sysctl - the new method for critical_enter/exit (already 2002-07-10 20:15:58 +00:00
profile.h Stylify (mainly line up macro EOL-continuation \'s), and add a dummy 2002-04-21 10:49:00 +00:00
psl.h
ptrace.h Move the definition of PT_[GS]ET{,DB,FP}REGS from the MD ptrace.h to the 2002-03-16 00:25:53 +00:00
reg.h Remove __P. 2002-03-20 05:48:58 +00:00
reloc.h
resource.h
runq.h Move the "- 1" into the RQB_FFS(mask) macro itself so that 2002-06-20 06:21:20 +00:00
segments.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-23 15:09:35 +00:00
setjmp.h
sigframe.h Use struct __ucontext in prototypes and associated functions instead of 2002-02-17 17:40:34 +00:00
signal.h Use struct __ucontext in prototypes and associated functions instead of 2002-02-17 17:40:34 +00:00
smp.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
specialreg.h Add additional cpuid feature flags and put into a canonical format. 2002-06-22 23:00:33 +00:00
stdarg.h Gcc 3.1 varargs support. 2002-06-30 07:22:30 +00:00
sysarch.h Remove __P. 2002-03-20 05:48:58 +00:00
trap.h
tss.h
ucontext.h
varargs.h Gcc 3.1 varargs support. 2002-05-10 02:02:54 +00:00
vmparam.h