ia64/xen-unstable

changeset 11322:28824bd2701c

Fix PAE-mode HVM guests with the new shadow code.

Signed-off-by: Steven Hand <steven@xensource.com>
author Steven Hand <steven@xensource.com>
date Mon Aug 28 21:25:13 2006 +0100 (2006-08-28)
parents f790546ecfda
children 78a25a7eac1f
files xen/arch/x86/mm/shadow/multi.c
line diff
     1.1 --- a/xen/arch/x86/mm/shadow/multi.c	Mon Aug 28 20:22:56 2006 +0100
     1.2 +++ b/xen/arch/x86/mm/shadow/multi.c	Mon Aug 28 21:25:13 2006 +0100
     1.3 @@ -2543,6 +2543,16 @@ static int validate_gl3e(struct vcpu *v,
     1.4  
     1.5      perfc_incrc(shadow_validate_gl3e_calls);
     1.6  
     1.7 +#if (SHADOW_PAGING_LEVELS == 3) && (GUEST_PAGING_LEVELS == 3)
     1.8 +    {
     1.9 +        /* If we've updated a subshadow which is unreferenced then 
    1.10 +           we don't care what value is being written - bail. */
    1.11 +        struct pae_l3_bookkeeping *info = sl3p_to_info(se); 
    1.12 +        if(!info->refcount)
    1.13 +            return result; 
    1.14 +    }
    1.15 +#endif
    1.16 +
    1.17      if ( guest_l3e_get_flags(*new_gl3e) & _PAGE_PRESENT )
    1.18      {
    1.19          gfn_t gl2gfn = guest_l3e_get_gfn(*new_gl3e);
    1.20 @@ -2634,7 +2644,7 @@ static int validate_gl1e(struct vcpu *v,
    1.21  
    1.22  
    1.23  /**************************************************************************/
    1.24 -/* Functions which translate and install a the shadows of arbitrary guest 
    1.25 +/* Functions which translate and install the shadows of arbitrary guest 
    1.26   * entries that we have just seen the guest write. */
    1.27  
    1.28  
    1.29 @@ -2934,7 +2944,7 @@ static int sh_page_fault(struct vcpu *v,
    1.30               && shadow_vcpu_mode_translate(v) 
    1.31               && mmio_space(gfn_to_paddr(gfn)) );
    1.32  
    1.33 -    /* For MMIO, the shadow holds the *gfn*; for normal accesses, if holds 
    1.34 +    /* For MMIO, the shadow holds the *gfn*; for normal accesses, it holds 
    1.35       * the equivalent mfn. */
    1.36      if ( mmio ) 
    1.37          gmfn = _mfn(gfn_x(gfn));