|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
RE: [Xen-ia64-devel] PATCH: vti bugs fix
>From: Tristan Gingold
>Sent: 2006?8?10? 19:21
>To: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx; Alex Williamson
>Subject: [Xen-ia64-devel] PATCH: vti bugs fix
>
>Hi,
>
>this patch fixes two bugs in vti code:
>* guest_vhpt_lookup fails on long-format vhpt instead of reading it as
> a short-format one.
> This patch could be improved by reading the entry. This is future work.
Yes, guest long format vhpt needs to be handled.
>* vtlb_purge loops infinitly if VA is high enough and some high bits are set
>in psbits.
Below fixes may be more efficient, and there was this logic, but was removed
by accident
diff -r 6f02c4b9a9d0 xen/arch/ia64/vmx/vtlb.c
135 --- a/xen/arch/ia64/vmx/vtlb.c Wed Aug 09 12:05:13 2006 +0800
136 +++ b/xen/arch/ia64/vmx/vtlb.c Fri Aug 11 09:54:37 2006 +0800
137 @@ -250,7 +250,7 @@ void vtlb_purge(VCPU *v, u64 va, u64 ps)
138 psbits = VMX(v, psbits[(va >> 61)]);
139 size = PSIZE(ps);
140 start = va & (-size);
141 - end = start + size;
142 + end = start + size -1;
143 while (psbits) {
144 curadr = start;
145 ps = __ffs(psbits);
146 @@ -281,7 +281,7 @@ static void vhpt_purge(VCPU *v, u64 va,
147 ia64_rr rr;
148 size = PSIZE(ps);
149 start = va & (-size);
150 - end = start + size;
151 + end = start + size -1;
152 rr.rrval = ia64_get_rr(va);
153 size = PSIZE(rr.ps);
154 while(start < end){
>
>Tested by running a VTi domain with a long-format vhpt.
Which guest OS do you run, which supports long-format vhpt?
virtualizing/handling protect key may be needed to support guest long-format
vhpt.
Thanks,
Anthony
>
>Tristan.
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
|
|
|
|