|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] x86: Only unshadow on failed emulation, n
# 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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] x86: Only unshadow on failed emulation, not when an exception is raised.,
Xen patchbot-unstable <=
|
|
|
|
|