freebsd-skq/sys/kern
peter 4d88d6566a 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
..
bus_if.m Use protected names (_foo) to cutdown on boatloads of lint warnings. 2002-04-21 11:16:10 +00:00
clock_if.m Add a generic implementation of inittodr() and resettodr(), as well as 2002-04-04 23:39:10 +00:00
device_if.m
genassym.sh Allow one to specify the AWK used in the environment(commandline). 2002-02-11 03:54:30 +00:00
imgact_aout.c Clean up execve locking: 2002-07-06 07:00:01 +00:00
imgact_elf.c Clean up execve locking: 2002-07-06 07:00:01 +00:00
imgact_gzip.c Modernize my email address. 2002-03-25 13:52:45 +00:00
imgact_shell.c Return a more meaningful errno when the length of the interpreter 2001-11-28 03:26:58 +00:00
inflate.c Modernize my email address. 2002-03-25 13:52:45 +00:00
init_main.c Remove an unused argument in vfs_mountroot(). 2002-07-03 08:52:37 +00:00
init_sysent.c regen for freebsd4_sendfile(2) compat. 2002-07-12 06:52:44 +00:00
kern_acct.c Open accounting file for appending, not general writing. 2002-07-10 17:31:58 +00:00
kern_acl.c Fix a bug that prevented the deletion of non-default ACLs from being 2002-06-27 19:31:15 +00:00
kern_clock.c Fixed breakage of binary compatibility of the kern.clockrate sysctl in 2002-05-05 04:33:09 +00:00
kern_condvar.c Fix failure to correctly transition back to sleep mode. 2002-07-02 05:33:46 +00:00
kern_conf.c Break the following implementation of panic(3): 2002-04-25 13:17:33 +00:00
kern_descrip.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
kern_environment.c Cosmetic tweaks. Try and keep the style more consistent, catch some stray 2002-05-01 02:51:50 +00:00
kern_event.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
kern_exec.c o Lock accesses to the page queues. 2002-07-11 18:48:05 +00:00
kern_exit.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
kern_fork.c Revert removal of cred_free_thread(): It is used to ensure that a thread's 2002-07-11 02:18:33 +00:00
kern_idle.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
kern_intr.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
kern_jail.c The jail syscall calls chroot, which is not mpsafe, so put back a 2002-07-01 20:46:01 +00:00
kern_kse.c Collect all the (now equivalent) pmap_new_proc/pmap_dispose_proc/ 2002-07-07 23:05:27 +00:00
kern_kthread.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
kern_ktr.c Remove a stale comment. 2002-04-06 08:44:04 +00:00
kern_ktrace.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
kern_linker.c - Delay unlocking a vnode in linker_hints_lookup until we're actually done 2002-07-07 22:35:47 +00:00
kern_lock.c Record the file, line, and pid of the last successful shared lock holder. This 2002-05-30 05:55:22 +00:00
kern_lockf.c More caddr_t removal. 2002-06-29 00:29:12 +00:00
kern_malloc.c - Replace the bandaid introduced in revision 1.110 with 2002-05-31 09:41:09 +00:00
kern_mib.c - Add a mutex to lock the global securelevel value. 2002-04-02 17:43:17 +00:00
kern_module.c - Remove Giant acquisition from modevent(), modfnext(), modstat() and 2002-06-26 00:31:44 +00:00
kern_mtxpool.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
kern_mutex.c Add mtx_ prefixes to the fields used for mutex profiling, and fix a bug 2002-07-03 01:50:27 +00:00
kern_ntptime.c Hide the private parts of timecounter from a couple of places that don't 2002-04-26 21:31:44 +00:00
kern_physio.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
kern_poll.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
kern_proc.c Collect all the (now equivalent) pmap_new_proc/pmap_dispose_proc/ 2002-07-07 23:05:27 +00:00
kern_prot.c Revert removal of cred_free_thread(): It is used to ensure that a thread's 2002-07-11 02:18:33 +00:00
kern_resource.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
kern_sema.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
kern_shutdown.c Add a missing newline during panic printf's for SMP systems that don't 2002-07-11 21:56:37 +00:00
kern_sig.c Rearrange the code so that it checks whether the file is something 2002-07-10 06:31:35 +00:00
kern_subr.c Fix compilation with ENABLE_VFS_IOOPT turned on and ZERO_COPY_SOCKETS 2002-07-12 02:23:55 +00:00
kern_switch.c Remove debugging code that I originally only wanted to be there for a couple of days after merge. 2002-07-11 22:47:58 +00:00
kern_sx.c Set the lock type equal to the lock name for now as all of the current 2002-04-04 20:49:35 +00:00
kern_synch.c make this repect ps_sigintr if there is a pre-existing signal 2002-07-06 08:47:24 +00:00
kern_syscalls.c - Lock down the ``module'' structure by adding an SX lock that is used by 2002-03-18 07:45:30 +00:00
kern_sysctl.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
kern_tc.c Time counter stats are unsigned, advertise them to sysctl(8) that way. 2002-06-11 19:47:44 +00:00
kern_thread.c Collect all the (now equivalent) pmap_new_proc/pmap_dispose_proc/ 2002-07-07 23:05:27 +00:00
kern_time.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
kern_timeout.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
kern_uuid.c Fix a minor whitespace style nit that broke 'grep ^uuidgen'. 2002-07-09 19:36:50 +00:00
kern_xxx.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
ksched.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
link_aout.c Simple p_ucred -> td_ucred changes to start using the per-thread ucred 2002-02-27 18:32:23 +00:00
link_elf_obj.c Don't use the symbol name to lookup the symbol value when we can use 2002-04-25 01:22:16 +00:00
link_elf.c Don't use the symbol name to lookup the symbol value when we can use 2002-04-25 01:22:16 +00:00
linker_if.m Add the sysctl "kern.function_list", which currently exports all 2001-10-30 15:21:45 +00:00
Make.tags.inc Don't hardcode /sys when making tags, instead use ${.CURDIR}/.. this 2002-02-27 10:07:15 +00:00
Makefile Don't generate <sys/syscalls-hide.h> it has never had any users anywhere in 2001-10-13 09:17:49 +00:00
makesyscalls.sh Introduce syscall.master option 'COMPAT4' which allows one to wrap 2002-07-12 06:38:34 +00:00
md4c.c
md5c.c Bring sys/kern/md5c.c in sync with the userland version. 2002-06-24 14:15:25 +00:00
p1003_1b.c Change p_can{debug,see,sched,signal}()'s first argument to be a thread 2002-05-19 00:14:50 +00:00
posix4_mib.c
subr_acl_posix1e.c Fix a bug that prevented the deletion of non-default ACLs from being 2002-06-27 19:31:15 +00:00
subr_autoconf.c Remove __P. 2002-03-19 21:25:46 +00:00
subr_blist.c Now that daddr_t has grown up, use %lld to printf it and cast it to long 2002-05-18 23:46:04 +00:00
subr_bus.c Don't call malloc(9) to allocate zero bytes softc data for devices. 2002-04-23 15:48:23 +00:00
subr_clist.c Remove __P. 2002-03-19 21:25:46 +00:00
subr_clock.c Add a generic implementation of inittodr() and resettodr(), as well as 2002-04-04 23:39:10 +00:00
subr_devstat.c GC: BIO_ORDERED, various infrastructure dealing with BIO_ORDERED. 2002-02-22 09:26:35 +00:00
subr_disk.c Implement DIOCGFRONTSTUFF ioctl which reports how many bytes from the start 2002-04-09 15:43:32 +00:00
subr_disklabel.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
subr_diskmbr.c Remove __P. 2002-03-19 21:25:46 +00:00
subr_diskslice.c This commit adds basic support for the UFS2 filesystem. The UFS2 2002-06-21 06:18:05 +00:00
subr_eventhandler.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
subr_hints.c Cosmetic tweaks. Try and keep the style more consistent, catch some stray 2002-05-01 02:51:50 +00:00
subr_kobj.c Convert hit and miss counters to unsigned values. Surely negative values 2002-06-10 22:40:26 +00:00
subr_log.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
subr_mbuf.c m_extadd takes a void (*freef)(void *, void *) now, not a 2002-06-29 00:01:46 +00:00
subr_mchain.c Move the new byte order function prototypes from <sys/param.h> to 2002-04-26 22:48:23 +00:00
subr_module.c
subr_param.c Improve the implementation of adjtime(2). 2002-04-15 12:23:11 +00:00
subr_pcpu.c Add a per-cpu variable, cpumask, the preshifted equivalent of 1 << cpuid. 2002-01-05 09:35:50 +00:00
subr_power.c Add generalized power profile code. 2002-03-04 18:46:13 +00:00
subr_prf.c dd %i as an alias for %d for greater compatibility with our *BSD bretheren 2002-07-05 18:36:49 +00:00
subr_prof.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
subr_rman.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
subr_rtc.c Add a generic implementation of inittodr() and resettodr(), as well as 2002-04-04 23:39:10 +00:00
subr_sbuf.c Fix warnings on gcc-3.1+ where __func__ is a const char * instead of a 2002-03-19 10:56:46 +00:00
subr_scanf.c
subr_smp.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
subr_taskqueue.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
subr_trap.c Revert removal of cred_free_thread(): It is used to ensure that a thread's 2002-07-11 02:18:33 +00:00
subr_turnstile.c Add mtx_ prefixes to the fields used for mutex profiling, and fix a bug 2002-07-03 01:50:27 +00:00
subr_witness.c Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
subr_xxx.c Here follows the new kernel dumping infrastructure. 2002-03-31 22:37:00 +00:00
sys_generic.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
sys_pipe.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
sys_process.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
sys_socket.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
syscalls.c regen for freebsd4_sendfile(2) compat. 2002-07-12 06:52:44 +00:00
syscalls.master Create a bug-for-bug FreeBSD4 compatible version of sendfile and move the 2002-07-12 06:51:57 +00:00
sysv_ipc.c Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
sysv_msg.c Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
sysv_sem.c Remove __P. 2002-03-19 21:25:46 +00:00
sysv_shm.c Remove __P. 2002-03-19 21:25:46 +00:00
tty_compat.c Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 05:09:11 +00:00
tty_conf.c KSE Milestone 2 2001-09-12 08:38:13 +00:00
tty_cons.c Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
tty_pty.c - Lock proctree_lock instead of pgrpsess_lock. 2002-04-16 17:09:22 +00:00
tty_subr.c Remove __P. 2002-03-19 21:25:46 +00:00
tty_tty.c Remove __P. 2002-03-19 21:25:46 +00:00
tty.c Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
uipc_accf.c
uipc_cow.c Remove the advertising clause from the Duke BSD copyright on the 2002-07-06 02:44:15 +00:00
uipc_domain.c Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
uipc_jumbo.c Remove the advertising clause from the Duke BSD copyright on the 2002-07-06 02:44:15 +00:00
uipc_mbuf2.c In m_aux_delete, no need to chase beyond victim. 2002-05-23 15:59:48 +00:00
uipc_mbuf.c Fix a bug in m_split(): the "m->m_ext.ext_size" field of an mbuf was being 2002-05-31 22:09:57 +00:00
uipc_proto.c Implement a LOCAL_PEERCRED socket option which returns a 2001-08-17 22:01:18 +00:00
uipc_sockbuf.c More caddr_t removal. 2002-06-29 00:29:12 +00:00
uipc_socket2.c More caddr_t removal. 2002-06-29 00:29:12 +00:00
uipc_socket.c More caddr_t removal. 2002-06-29 00:29:12 +00:00
uipc_syscalls.c Create a bug-for-bug FreeBSD4 compatible version of sendfile and move the 2002-07-12 06:51:57 +00:00
uipc_usrreq.c nuke caddr_t. 2002-06-28 23:17:36 +00:00
vfs_acl.c Fix a bug that prevented the deletion of non-default ACLs from being 2002-06-27 19:31:15 +00:00
vfs_aio.c Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
vfs_bio.c Replace the global buffer hash table with per-vnode splay trees using a 2002-07-10 17:02:32 +00:00
vfs_cache.c nuke caddr_t. 2002-06-28 23:17:36 +00:00
vfs_cluster.c Replace the global buffer hash table with per-vnode splay trees using a 2002-07-10 17:02:32 +00:00
vfs_default.c Remove vfs_stdmount() and vfs_stdunmount(). They are not 2002-07-09 22:50:29 +00:00
vfs_export.c Partial backout of 1.318, remove error handling added because it may be 2002-06-30 05:23:58 +00:00
vfs_extattr.c Move every code related to mount(2) in a new file, vfs_mount.c. 2002-07-02 17:09:22 +00:00
vfs_init.c We don't need to check the return value of malloc() against 2002-06-22 21:44:11 +00:00
vfs_lookup.c Catch up to changes in ktrace API. 2002-06-07 05:37:18 +00:00
vfs_mount.c - Use standard locking functions in syncer's opv 2002-07-09 19:54:20 +00:00
vfs_subr.c Replace the global buffer hash table with per-vnode splay trees using a 2002-07-10 17:02:32 +00:00
vfs_syscalls.c Move every code related to mount(2) in a new file, vfs_mount.c. 2002-07-02 17:09:22 +00:00
vfs_vnops.c More caddr_t removal, make fo_ioctl take a void * instead of a caddr_t. 2002-06-29 01:50:25 +00:00
vnode_if.src - Use the new vop_lookup_{pre,post} instead of simpler locking specification. 2002-07-09 19:55:06 +00:00