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.zhang@xxxxxxxxx>
>
> 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@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|