[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] We need to do sync when mov_to_cr3 to a value already shadowed.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 73d19afe543c271ec61169a224b007537b4be4cd # Parent b6dfdbeb2780d771fda70c353268775aaf1b270e We need to do sync when mov_to_cr3 to a value already shadowed. The L2 page and already shadowed L1 page may be out of sync. This fixes the problems of segmentation faults and strange prints when booting Redhat FC3 and make kernel in FC3 in VMX domain. Signed-off-by: Xiaofeng Ling <xiaofeng.ling@xxxxxxxxx> diff -r b6dfdbeb2780 -r 73d19afe543c xen/arch/x86/shadow.c --- a/xen/arch/x86/shadow.c Wed Nov 30 11:13:53 2005 +++ b/xen/arch/x86/shadow.c Wed Nov 30 11:16:35 2005 @@ -2154,7 +2154,8 @@ #elif CONFIG_PAGING_LEVELS == 4 smfn = shadow_l4_table(d, gpfn, gmfn); #endif - } + }else + shadow_sync_all(d); if ( !get_shadow_ref(smfn) ) BUG(); old_smfn = pagetable_get_pfn(v->arch.shadow_table); diff -r b6dfdbeb2780 -r 73d19afe543c xen/arch/x86/shadow32.c --- a/xen/arch/x86/shadow32.c Wed Nov 30 11:13:53 2005 +++ b/xen/arch/x86/shadow32.c Wed Nov 30 11:16:35 2005 @@ -2911,6 +2911,8 @@ */ if ( unlikely(!(smfn = __shadow_status(d, gpfn, PGT_base_page_table))) ) smfn = shadow_l2_table(d, gpfn, gmfn); + else + shadow_sync_all(d); if ( !get_shadow_ref(smfn) ) BUG(); old_smfn = pagetable_get_pfn(v->arch.shadow_table); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |