[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: Only unshadow on failed emulation, not when an exception is raised.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1172089837 0 # Node ID eb190b1faa527370ac520f3611670664f54ef28d # Parent 4e50678c364c779bfa3972d30952acd0d9c7a655 x86: Only unshadow on failed emulation, not when an exception is raised. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- xen/arch/x86/mm/shadow/multi.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletion(-) diff -r 4e50678c364c -r eb190b1faa52 xen/arch/x86/mm/shadow/multi.c --- a/xen/arch/x86/mm/shadow/multi.c Wed Feb 21 20:03:56 2007 +0000 +++ b/xen/arch/x86/mm/shadow/multi.c Wed Feb 21 20:30:37 2007 +0000 @@ -2915,7 +2915,12 @@ static int sh_page_fault(struct vcpu *v, if ( !(regs->error_code & PFEC_user_mode) ) r = x86_emulate(&emul_ctxt.ctxt, emul_ops); - if ( (r == X86EMUL_UNHANDLEABLE) || (r == X86EMUL_EXCEPTION) ) + /* + * NB. We do not unshadow on X86EMUL_EXCEPTION. It's not clear that it + * would be a good unshadow hint. If we *do* decide to unshadow-on-fault + * then it must be 'failable': we cannot require the unshadow to succeed. + */ + if ( r == X86EMUL_UNHANDLEABLE ) { SHADOW_PRINTK("emulator failure, unshadowing mfn %#lx\n", mfn_x(gmfn)); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |