[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 4/4] x86: adjustments to guest handle treatment
Hi, On 21/04/2020 18:30, Roger Pau Monné wrote: On Tue, Apr 21, 2020 at 11:13:23AM +0200, Jan Beulich wrote:First of all avoid excessive conversions. copy_{from,to}_guest(), for example, work fine with all of XEN_GUEST_HANDLE{,_64,_PARAM}().I'm not sure I understand the difference between those two, as they are both placeholders for linear guest addresses? AFAICT XEN_GUEST_HANDLE should be used for guest pointers inside of an hypercall struct, while XEN_GUEST_HANDLE_PARAM is for guest pointers as hypercall arguments. But those are both just guest pointers, whether they are a parameter to the hypercall or a field in a struct, and hence could use the same type? I assume there's some reason for not doing so, and I see the comment about other arches, but again a linear guest address is just that in all arches, regardless of it's placement. On Arm:* XEN_GUEST_HANDLE() will always be 64-bit on both 32-bit and 64-bit hypervisor. * XEN_GUEST_HANDLE_PARAM() will be 32-bit for 32-bit hypervisor. For 64-bit hypervisor, it will be 64-bit. Per the ABI, each argument only fit a register. So you could not use XEN_GUEST_HANDLE() as now an argument will be held in 2 registers on 32-bit. We also want the structure layout to be the same for 32-bit and 64-bit. So using XEN_GUEST_HANDLE_PARAM() everywhere is not the solution as the virtual address is not the same. We could possibly convert internally XEN_GUEST_HANDLE_PARAM() to XEN_GUEST_HANDLE(), but I am not sure how this would be beneficial. We would have to use 2 registers for arm 32-bit everytime. Cheers, -- Julien Grall
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |