linux-sg2042/arch/x86
Jeremy Fitzhardinge 9f79991d41 xen: deal with stale cr3 values when unpinning pagetables
When a pagetable is no longer in use, it must be unpinned so that its
pages can be freed.  However, this is only possible if there are no
stray uses of the pagetable.  The code currently deals with all the
usual cases, but there's a rare case where a vcpu is changing cr3, but
is doing so lazily, and the change hasn't actually happened by the time
the pagetable is unpinned, even though it appears to have been completed.

This change adds a second per-cpu cr3 variable - xen_current_cr3 -
which tracks the actual state of the vcpu cr3.  It is only updated once
the actual hypercall to set cr3 has been completed.  Other processors
wishing to unpin a pagetable can check other vcpu's xen_current_cr3
values to see if any cross-cpu IPIs are needed to clean things up.

[ Stable folks: 2.6.23 bugfix ]

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Stable Kernel <stable@kernel.org>
2007-10-16 11:51:30 -07:00
..
boot x86_64: move kernel 2007-10-11 11:17:24 +02:00
crypto x86_64: move crypto 2007-10-11 11:17:03 +02:00
ia32 i386/x86_64: move headers to include/asm-x86 2007-10-11 11:20:03 +02:00
kernel paravirt: clean up lazy mode handling 2007-10-16 11:51:29 -07:00
lib x86_64: move lib 2007-10-11 11:17:08 +02:00
mach-default i386: move mach-default 2007-10-11 11:16:48 +02:00
mach-es7000 i386: move mach-es7000 2007-10-11 11:16:50 +02:00
mach-generic Merge branch 'dmi-const' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2007-10-11 19:18:45 -07:00
mach-visws i386: move mach-visws 2007-10-11 11:16:38 +02:00
mach-voyager i386: move kernel 2007-10-11 11:17:01 +02:00
math-emu i386: move math-emu 2007-10-11 11:16:31 +02:00
mm remove dead code in pgtable_cache_init 2007-10-16 11:51:29 -07:00
oprofile i386: move oprofile 2007-10-11 11:16:55 +02:00
pci PCI: X86: Introduce and enable PCI domain support 2007-10-12 15:03:19 -07:00
power i386: move power 2007-10-11 11:16:34 +02:00
vdso x86_64: move vdso 2007-10-11 11:17:10 +02:00
video i386: move video 2007-10-11 11:16:56 +02:00
xen xen: deal with stale cr3 values when unpinning pagetables 2007-10-16 11:51:30 -07:00