From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Paul Durrant <Paul.Durrant@citrix.com>,
Ian Campbell <Ian.Campbell@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
"Keir (Xen.org)" <keir@xen.org>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH] blkif: add indirect descriptors interface to public headers
Date: Thu, 14 Nov 2013 11:06:10 +0100 [thread overview]
Message-ID: <5284A092.6090902@citrix.com> (raw)
In-Reply-To: <9AAE0902D5BC7E449B7C8E4E778ABCD0171489@AMSPEX01CL01.citrite.net>
On 13/11/13 12:24, Paul Durrant wrote:
>> -----Original Message-----
>> From: Ian Campbell
>> Sent: 13 November 2013 11:11
>> To: Paul Durrant
>> Cc: Konrad Rzeszutek Wilk; xen-devel@lists.xenproject.org; Keir (Xen.org);
>> Jan Beulich; Roger Pau Monne
>> Subject: Re: [Xen-devel] [PATCH] blkif: add indirect descriptors interface to
>> public headers
>>
>> On Wed, 2013-11-13 at 11:07 +0000, Paul Durrant wrote:
>>>> -----Original Message-----
>>>> From: Ian Campbell
>>>> Sent: 13 November 2013 09:27
>>>> To: Paul Durrant
>>>> Cc: Konrad Rzeszutek Wilk; xen-devel@lists.xenproject.org; Keir
>> (Xen.org);
>>>> Jan Beulich; Roger Pau Monne
>>>> Subject: Re: [Xen-devel] [PATCH] blkif: add indirect descriptors interface
>> to
>>>> public headers
>>>>
>>>> On Tue, 2013-11-12 at 15:16 +0000, Paul Durrant wrote:
>>>>>> -----Original Message-----
>>>>>> From: Ian Campbell
>>>>>> Sent: 12 November 2013 14:29
>>>>>> To: Konrad Rzeszutek Wilk
>>>>>> Cc: Paul Durrant; xen-devel@lists.xenproject.org; Keir (Xen.org); Jan
>>>> Beulich;
>>>>>> Roger Pau Monne
>>>>>> Subject: Re: [Xen-devel] [PATCH] blkif: add indirect descriptors
>> interface
>>>> to
>>>>>> public headers
>>>>>>
>>>>>> On Tue, 2013-11-12 at 09:22 -0500, Konrad Rzeszutek Wilk wrote:
>>>>>>
>>>>>>>>> +struct blkif_request_indirect {
>>>>>>>>> + uint8_t operation; /* BLKIF_OP_INDIRECT */
>>>>>>>>> + uint8_t indirect_op; /* BLKIF_OP_{READ/WRITE}
>> */
>>>>>>>>> + uint16_t nr_segments; /* number of segments
>> */
>>>>>>>>
>>>>>>>> This is going to be a problem. What alignment boundary are you
>>>>>>> expecting the next field to start on? AFAIK 32-bit gcc will 4-byte
>>>>>>> align it, 32-bit MSVC will 8-byte align it.
>>>>>>>>
>>>>>>>
>>>>>>> Oh no. I thought that the Linux one had this set correctly, ah it did:
>>>>>>>
>>>>>>>
>>>>>>> struct blkif_request_indirect {
>>>>>>> [...]
>>>>>>> } __attribute__((__packed__));
>>>>>>
>>>>>> That attribute packed isn't allowed in the public interface headers.
>>>>>>
>>>>>> Since compilers do differ in their packing, and guests may be using
>>>>>> various pragmas, it might be useful to write down that for x86 these
>>>>>> headers are to be treated as using the <WHATEVER> ABI (gcc? Some
>> Intel
>>>>>> standard?).
>>>>>>
>>>>>
>>>>> Can we go for types aligned on their size then rather than gcc
>> brokenness.
>>>>
>>>> We should go for some existing well defined ABI spec not make up our
>>>> own.
>>>>
>>>> In effect the x86 ABI has historically been de-facto specified as the
>>>> gcc ABI.
>>>>
>>>
>>> Since the linux headers seem to hardcode the x64 ABI for this struct,
>>> do we need to support an x86 variant? After all there's no backwards
>>> compatibility issue here.
>>
>> I am talking about the general case for all xen/include/public headers,
>> not these structs specifically.
>>
>
> Ah ok. Then yes I guess the x86 gcc ABI has to be the default.
>
>> There should be a well specified default for the struct layout. If
>> particular structs diverge from this (and being consistent across 32-
>> and 64-bit is a good reason to do so) then suitable padding and perhaps
>> #ifdefs might be needed.
>>
>
> Yes, agreed. This patch therefore needs to be fixed.
I don't understand why or how this patch should be fixed, the ABI of
this new structures is defined by the way gcc generates it's layout
(different on i386 or amd64), it's not pretty, but it's how the blkif
protocol is defined. Doing something different now just for struct
blkif_request_indirect seems even worse.
next prev parent reply other threads:[~2013-11-14 10:06 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-12 10:36 [PATCH] blkif: add indirect descriptors interface to public headers Roger Pau Monne
2013-11-12 13:46 ` Paul Durrant
2013-11-12 14:12 ` David Vrabel
2013-11-12 14:18 ` Paul Durrant
2013-11-12 14:43 ` Jan Beulich
2013-11-12 14:49 ` David Vrabel
2013-11-12 14:54 ` Roger Pau Monné
2013-11-12 14:58 ` Jan Beulich
2013-11-14 9:57 ` Roger Pau Monné
2013-11-12 14:22 ` Konrad Rzeszutek Wilk
2013-11-12 14:29 ` Ian Campbell
2013-11-12 14:42 ` Konrad Rzeszutek Wilk
2013-11-12 14:54 ` Ian Campbell
2013-11-12 15:16 ` Paul Durrant
2013-11-13 9:26 ` Ian Campbell
2013-11-13 11:07 ` Paul Durrant
2013-11-13 11:11 ` Ian Campbell
2013-11-13 11:24 ` Paul Durrant
2013-11-14 10:06 ` Roger Pau Monné [this message]
2013-11-14 10:14 ` Paul Durrant
2013-11-14 10:27 ` Roger Pau Monné
2013-11-14 10:38 ` Paul Durrant
2013-11-14 10:52 ` Roger Pau Monné
2013-11-14 11:26 ` Paul Durrant
2013-11-14 16:24 ` Konrad Rzeszutek Wilk
2013-11-14 16:26 ` Paul Durrant
2013-11-14 16:34 ` Konrad Rzeszutek Wilk
2013-11-14 16:53 ` Paul Durrant
2013-11-14 16:57 ` Konrad Rzeszutek Wilk
2013-11-14 17:13 ` Paul Durrant
2013-11-14 18:14 ` Konrad Rzeszutek Wilk
2013-11-15 8:01 ` Roger Pau Monné
2013-11-15 9:05 ` Paul Durrant
2013-11-15 9:44 ` Ian Campbell
2013-11-14 19:16 ` Paul Durrant
2013-11-15 8:04 ` Roger Pau Monné
2013-11-13 12:01 ` Konrad Rzeszutek Wilk
2013-11-28 17:02 ` Roger Pau Monné
2013-11-29 10:14 ` Jan Beulich
2013-11-29 10:28 ` Ian Campbell
2013-11-29 12:47 ` Julien Grall
2013-11-29 12:49 ` Ian Campbell
2013-12-03 9:22 ` Keir Fraser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5284A092.6090902@citrix.com \
--to=roger.pau@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Paul.Durrant@citrix.com \
--cc=jbeulich@suse.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).