freebsd-nq/sys/amd64
Alan Cox de6c3db01f Simplify the reference counting of page table pages. Specifically, use
the page table page's wired count rather than its hold count to contain
the reference count.  My rationale for this change is based on several
factors:

1. The machine-independent and pmap layers used the same hold count field
   in subtly different ways.  The machine-independent layer uses the hold
   count to implement a form of ephemeral wiring that is used by pipes,
   physio, etc.  In other words, subsystems where we wish to temporarily
   block a page from being swapped out while it is mapped into the kernel's
   address space.  Such pages are never removed from the page queues.
   Instead, the page daemon recognizes a non-zero hold count to mean "hands
   off this page."  In contrast, page table pages are never in the page
   queues; they are wired from birth to death.  The hold count was being
   used as a kind of reference count, specifically, the number of valid
   page table entries within the page.  Not surprisingly, these two
   different uses imply different synchronization rules: in the machine-
   independent layer access to the hold count requires the page queues
   lock; whereas in the pmap layer the pmap lock is required.  Thus,
   continued use by the pmap layer of vm_page_unhold(), which asserts that
   the page queues lock is held, made no sense.

2. _pmap_unwire_pte_hold() was too forgiving in its handling of the wired
   count.  An unexpected wired count on a page table page was ignored and
   the underlying page leaked.

3. In a word, microoptimization.  Using the wired count exclusively, rather
   than a combination of the wired and hold counts, makes the code slightly
   smaller and faster.

Reviewed by: tegge@
2004-09-19 21:20:01 +00:00
..
acpica Sync with i386 - get the softc via the devclass rather than caching the dev 2004-08-16 23:10:18 +00:00
amd64 Simplify the reference counting of page table pages. Specifically, use 2004-09-19 21:20:01 +00:00
compile Make space for compilations. 2002-07-06 02:49:07 +00:00
conf Add device driver support for the VIA Networking Technologies 2004-09-10 20:57:46 +00:00
ia32 Remove sched_free_thread() which was only used 2004-08-31 06:12:13 +00:00
include Double the number of kernel page tables for amd64 and for i386/PAE. The old 2004-09-11 01:31:26 +00:00
isa Add new a function isa_dma_init() which returns an errno when it fails 2004-09-15 12:09:50 +00:00
linux32 Give setrunqueue() and sched_add() more of a clue as to 2004-09-01 02:11:28 +00:00
pci Add missing <sys/module.h> instances which were shadowed by the nested 2004-06-03 05:58:30 +00:00
Makefile This commit adds basic support for the UFS2 filesystem. The UFS2 2002-06-21 06:18:05 +00:00