|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] Allow 64-bit Xen to run 64-bit hvm SMP guests.
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 4840c3da25219c1163dd65ce5847c414320fe03e
# Parent beb37b3409033fc6a8872bb9f6963ece67e6004c
Allow 64-bit Xen to run 64-bit hvm SMP guests.
Signed-off-by: Jun Nakajima <jun.nakajima@xxxxxxxxx>
diff -r beb37b340903 -r 4840c3da2521 xen/arch/x86/shadow.c
--- a/xen/arch/x86/shadow.c Sun Mar 26 10:43:53 2006
+++ b/xen/arch/x86/shadow.c Sun Mar 26 10:45:35 2006
@@ -1807,6 +1807,16 @@
entry_has_changed(
guest_pt[i], snapshot_pt[i], PAGE_FLAG_MASK) )
{
+
+ unsigned long gpfn;
+
+ gpfn = entry_get_pfn(guest_pt[i]);
+ /*
+ * Looks like it's longer a page table.
+ */
+ if ( unlikely(gpfn != (gpfn & PGT_mfn_mask)) )
+ continue;
+
need_flush |= validate_entry_change(
d, &guest_pt[i], &shadow_pt[i],
shadow_type_to_level(stype));
@@ -1851,6 +1861,14 @@
{
#ifndef GUEST_PGENTRY_32
l4_pgentry_t *shadow4 = shadow;
+ unsigned long gpfn;
+
+ gpfn = l4e_get_pfn(new_root_e);
+ /*
+ * Looks like it's longer a page table.
+ */
+ if ( unlikely(gpfn != (gpfn & PGT_mfn_mask)) )
+ continue;
if ( d->arch.ops->guest_paging_levels == PAGING_L4 )
{
@@ -1894,7 +1912,7 @@
unmap_domain_page(snapshot);
unmap_domain_page(guest);
- if ( unlikely(unshadow) )
+ if ( unlikely(unshadow && stype == PGT_root_page_table) )
{
for_each_vcpu(d, v)
if(smfn == pagetable_get_pfn(v->arch.shadow_table))
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] Allow 64-bit Xen to run 64-bit hvm SMP guests.,
Xen patchbot -unstable <=
|
|
|
|
|