Is it safe to pass three guest virtual addresses via a hypercall to Xen and expect Xen to safely copy data (two scalars and one array of pagesize-bytes... not necessarily aligned on a page boundary) back to the guest, or do I need to do something fancy to avoid weird corner cases, e.g. to ensure restartabililty in case of guest page fault? This is a privileged-only hypercall used only as part of save/restore/live-migrate (for tmem) if that is relevant. Thanks, Dan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jeremy Fitzhardinge
2009-Jul-23 21:26 UTC
Re: [Xen-devel] new hypercall implementation question
On 07/23/09 07:31, Dan Magenheimer wrote:> Is it safe to pass three guest virtual addresses via a hypercall > to Xen and expect Xen to safely copy data (two scalars and one > array of pagesize-bytes... not necessarily aligned on a page > boundary) back to the guest, or do I need to do something fancy > to avoid weird corner cases, e.g. to ensure restartabililty > in case of guest page fault? > > This is a privileged-only hypercall used only as part of > save/restore/live-migrate (for tmem) if that is relevant. >For x86 its OK to pass kernel vaddrs to Xen and have it interpret them with the current pagetable. There should be no pagefaults, or rather, the hypercall will fail with EFAULT. I think ia64 has problems with anything other than physical addresses being passed, and has to do all that handle stuff to convert. J _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Dan Magenheimer
2009-Jul-23 21:39 UTC
RE: [Xen-devel] new hypercall implementation question
> On 07/23/09 07:31, Dan Magenheimer wrote: > > Is it safe to pass three guest virtual addresses via a hypercall > > to Xen and expect Xen to safely copy data (two scalars and one > > array of pagesize-bytes... not necessarily aligned on a page > > boundary) back to the guest, or do I need to do something fancy > > to avoid weird corner cases, e.g. to ensure restartabililty > > in case of guest page fault? > > > > This is a privileged-only hypercall used only as part of > > save/restore/live-migrate (for tmem) if that is relevant. > > > > For x86 its OK to pass kernel vaddrs to Xen and have it interpret them > with the current pagetable. There should be no pagefaults, or rather, > the hypercall will fail with EFAULT. > > I think ia64 has problems with anything other than physical addresses > being passed, and has to do all that handle stuff to convert.Thanks for the reply. After sending, I remembered that the "proper" way to do this in Xen tools is to bracket the hypercall with lock_pages/unlock_pages for any vaddr passed to the hypercall. I hope that''s not too horribly expensive. Thanks, Dan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel