|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] pvcalls: Document explicitly the padding for all arches
On 29.04.2020 16:01, Julien Grall wrote:
> Hi,
>
> On 22/04/2020 10:20, Jan Beulich wrote:
>>> Even if it was possible to use the sub-structs defined in the header
>>> that way, keep in mind that we also wrote:
>>>
>>> /* dummy member to force sizeof(struct xen_pvcalls_request)
>>> * to match across archs */
>>> struct xen_pvcalls_dummy {
>>> uint8_t dummy[56];
>>> } dummy;
>>
>> This has nothing to do with how a consumer may use the structs.
>>
>>> And the spec also clarifies that the size of each specific request is
>>> always 56 bytes.
>>
>> Sure, and I didn't mean to imply that a consumer would be allowed
>> to break this requirement. Still something like this
>>
>> int pvcall_new_socket(struct xen_pvcalls_socket *s) {
>> struct xen_pvcalls_request req = {
>> .req_id = REQ_ID,
>> .cmd = PVCALLS_SOCKET,
>> .u.socket = *s,
>> };
>>
>> return pvcall(&req);
>> }
>>
>> may break.
>
> I think I understand your concern now. So yes I agree this would break 32-bit
> consumer.
>
> As the padding is at the end of the structure, I think a 32-bit frontend and
> 64-bit backend (or vice-versa) should currently work without any trouble. The
> problem would come later if we decide to extend a command.
Can commands be extended at all, i.e. don't extensions require new
commands? The issue I've described has nothing to do with future
extending of any of the affected structures.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |