freebsd-nq/sys/amd64
Alan Cox a971139680 Correct a long-standing error in _pmap_unwire_pte_hold() affecting
multiprocessors.  Specifically, the error is conditioning the call to
pmap_invalidate_page() on whether the pmap is active on the current CPU.
This call must be unconditional.  Regardless of whether the pmap is active
on the CPU performing _pmap_unwire_pte_hold(), it could be active on another
CPU.  For example, a call to pmap_remove_all() by the page daemon could
result in a call to _pmap_unwire_pte_hold() with the pmap inactive on the
current CPU and active on another CPU.  In such circumstances, failing to
call pmap_invalidate_page() results in a stale TLB entry on the other CPU
that still maps the now deallocated page table page.  What happens next is
typically a mysterious panic in pmap_enter() by the other CPU, either
"pmap_enter: attempted pmap_enter on 4MB page" or "pmap_enter: pte vanished,
va: 0x%lx".  Both occur because the former page table page has been recycled
and allocated to a new purpose.  Consequently, it no longer contains zeroes.

See also Peter's i386/i386/pmap.c revision 1.448 and the related e-mail
thread last year.

Many thanks to the engineers at Sandvine for providing clear and concise
information until all of the pieces of the puzzle fell into place and
for testing an earlier patch.

MT5 Candidate
2004-09-22 05:01:48 +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 Correct a long-standing error in _pmap_unwire_pte_hold() affecting 2004-09-22 05:01:48 +00:00
compile
conf Minor sync-up with i386. Catch up on de-quoting and de-counting after 2004-09-22 01:04:54 +00:00
ia32 Remove sched_free_thread() which was only used 2004-08-31 06:12:13 +00:00
include MFi386: adapt rev 1.19 (debugger fixes) 2004-09-22 01:27:06 +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