|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] Fix invalidation of shadow LDT on SMP systems.
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 9d9b75569d0ee8c55d353f7d8ced8dc93485f5f5
# Parent 9d51c5afda92380052aee14eb54f46040fd7963f
Fix invalidation of shadow LDT on SMP systems.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r 9d51c5afda92 -r 9d9b75569d0e xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Sat Oct 15 15:25:29 2005
+++ b/xen/arch/x86/mm.c Sat Oct 15 15:26:03 2005
@@ -582,6 +582,7 @@
unsigned long pfn = l1e_get_pfn(l1e);
struct pfn_info *page = &frame_table[pfn];
struct domain *e;
+ struct vcpu *v;
if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) || !pfn_valid(pfn) )
return;
@@ -615,10 +616,12 @@
/* We expect this is rare so we blow the entire shadow LDT. */
if ( unlikely(((page->u.inuse.type_info & PGT_type_mask) ==
PGT_ldt_page)) &&
- unlikely(((page->u.inuse.type_info & PGT_count_mask) != 0)) )
-
- // XXX SMP BUG?
- invalidate_shadow_ldt(e->vcpu[0]);
+ unlikely(((page->u.inuse.type_info & PGT_count_mask) != 0)) &&
+ (d == e) )
+ {
+ for_each_vcpu ( d, v )
+ invalidate_shadow_ldt(v);
+ }
put_page(page);
}
}
@@ -1311,7 +1314,7 @@
}
}
- switch (type & PGT_type_mask)
+ switch ( type & PGT_type_mask )
{
case PGT_l1_page_table:
free_l1_table(page);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] Fix invalidation of shadow LDT on SMP systems.,
Xen patchbot -unstable <=
|
|
|
|
|