[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.