applied, thanks.

On Sun, Jan 04, 2009 at 03:22:06PM +0800, Zhang, Xiantao wrote:
> Hi, Isaku 
>     When debugging  a windows BSOD issue,  we found it is caused by 
> mis-setting pte's ED bit for itlb entry.  For hash vTLB, it uses unified tlb 
> and doesn't differentiate itc and dtc in its implementation, so itlb_miss 
> handler may reference dtlb entry in hash vTLB.  But it may result in issues, 
> because dtlb's ED bit may be different with itlb's setting.  Since the case 
> is very rare, so just purge the corresponding entry in hash vTLB and let 
> guest OS to determin how to set ED bit for itlb mapping once found it. 
> Xiantao
> 
> Signed-off-by : Xiantao Zhang <xiantao.zh...@intel.com>
> 
> diff -r e97216802360 xen/arch/ia64/vmx/vtlb.c
> --- a/xen/arch/ia64/vmx/vtlb.c  Fri Dec 12 10:43:39 2008 +0900
> +++ b/xen/arch/ia64/vmx/vtlb.c  Sun Jan 04 10:43:19 2009 +0800
> @@ -678,11 +678,20 @@ thash_data_t *vtlb_lookup(VCPU *v, u64 v
>          cch = vtlb_thash(hcb->pta, va, vrr.rrval, &tag);
>          do {
>              if (cch->etag == tag && cch->ps == ps)
> -                return cch;
> +                goto found;
>              cch = cch->next;
>          } while(cch);
>      }
>      return NULL;
> +found:
> +    if (is_data == ISIDE_TLB && !cch->ed) {
> +      /*The case is very rare, and it may lead to incorrect setting
> +      for itlb's ed bit! Purge it from hash vTLB and let guest os
> +      determin the ed bit of the itlb entry.*/
> +       vtlb_purge(v, va, ps);
> +       cch = NULL;
> +    }
> +    return cch;
>  }

> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@lists.xensource.com
> http://lists.xensource.com/xen-ia64-devel

-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to