[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] pointers in hcalls

This is a followup to our conversation at the Xen summit about userspace
passing virtual addresses to the hypervisor.

We talked about an API where data structures would be allocated from a
special area of memory. This API became rather hairy, which we can talk
about. However, it seems to me that the simplest way to handle this is
to disallow pointers entirely, instead embedding the structures in the
higher-level structure. I've had a look through this, and I actually
don't think that would be too bad.

When performing this conversion, we could initially exempt the
arch-specific hcalls. For consistency I think we'd want to do them all,
but that's not necessary for correctness. Also, constraining these
expanded structures to a single page would be best.

So I had a look through most (all?) of the hcalls in
xen/include/public/*.h to see which would pose problems. I don't see any
- some hcalls, such as dom0_setvcpucontext and dom0_getvcpucontext,
would be trivial to convert.
- I haven't looked at the ACM hcalls in detail, but I think they would
be trivial as well.
- xc_readconsolering() would need to copy up to a page of data into the
caller's buffer.
- it would introduce a hard restriction on the size of the extent array
in the memory operations (though it's worth noting that the balloon
driver already limits this to PAGE_SIZE).
- dom0_perfccontrol and dom0_getdomaininfolist would gain restrictions
similar to the memory ops.


Hollis Blanchard
IBM Linux Technology Center

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.