# HG changeset patch
# User Steven Hand <steven@xxxxxxxxxxxxx>
# Node ID 28824bd2701c59ae6d6ecda80043986f73d199f2
# Parent f790546ecfda03193a4b8983f7bb6b0f65924603
Fix PAE-mode HVM guests with the new shadow code.
Signed-off-by: Steven Hand <steven@xxxxxxxxxxxxx>
---
xen/arch/x86/mm/shadow/multi.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff -r f790546ecfda -r 28824bd2701c xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c Mon Aug 28 20:22:56 2006 +0100
+++ b/xen/arch/x86/mm/shadow/multi.c Mon Aug 28 21:25:13 2006 +0100
@@ -2543,6 +2543,16 @@ static int validate_gl3e(struct vcpu *v,
perfc_incrc(shadow_validate_gl3e_calls);
+#if (SHADOW_PAGING_LEVELS == 3) && (GUEST_PAGING_LEVELS == 3)
+ {
+ /* If we've updated a subshadow which is unreferenced then
+ we don't care what value is being written - bail. */
+ struct pae_l3_bookkeeping *info = sl3p_to_info(se);
+ if(!info->refcount)
+ return result;
+ }
+#endif
+
if ( guest_l3e_get_flags(*new_gl3e) & _PAGE_PRESENT )
{
gfn_t gl2gfn = guest_l3e_get_gfn(*new_gl3e);
@@ -2634,7 +2644,7 @@ static int validate_gl1e(struct vcpu *v,
/**************************************************************************/
-/* Functions which translate and install a the shadows of arbitrary guest
+/* Functions which translate and install the shadows of arbitrary guest
* entries that we have just seen the guest write. */
@@ -2934,7 +2944,7 @@ static int sh_page_fault(struct vcpu *v,
&& shadow_vcpu_mode_translate(v)
&& mmio_space(gfn_to_paddr(gfn)) );
- /* For MMIO, the shadow holds the *gfn*; for normal accesses, if holds
+ /* For MMIO, the shadow holds the *gfn*; for normal accesses, it holds
* the equivalent mfn. */
if ( mmio )
gmfn = _mfn(gfn_x(gfn));
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|