|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] paging_enabled and non-HVM guests
On Wed, 2006-05-10 at 08:06 +0200, Simon Kagstrom wrote:
>
> I won't argue for an incorrect fix, but as the code is right now it
> segmentation faults because the virtual address passed to
>
> page = page_array[va >> PAGE_SHIFT] << PAGE_SHIFT;
>
> (with libxc incorrectly believing paging is disabled) accesses outside
> of page_array. I'll keep the patch privately for now since gdbserver
> breaks without it.
Yes, and the reason is that page_array is supposed to be indexed with
*physical* addresses. The current code thinks that paging is disabled
(because CR0 is bad), assumes a virtual address is physical, and tries
to index into the array with it.
Pretty much every use of page_array needs to be abstracted so that it
does the right thing on both HVM and normal guests (normal guests will
have machine addresses in its page tables; HVM guests will have
physical). It's very unfortunate that the people who worked on this code
seem not to have tested or even thought about paravirtualized guests.
--
Hollis Blanchard
IBM Linux Technology Center
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|