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

Re: [Xen-devel] [PATCH] blkif: add indirect descriptors interface to public headers



Paul Durrant <Paul.Durrant@xxxxxxxxxx> wrote:
>> -----Original Message-----
>> From: Roger Pau Monnà [mailto:roger.pau@xxxxxxxxxx]
>> Sent: 14 November 2013 10:27
>> To: Paul Durrant; Ian Campbell
>> Cc: Konrad Rzeszutek Wilk; xen-devel@xxxxxxxxxxxxxxxxxxxx; Keir
>(Xen.org);
>> Jan Beulich
>> Subject: Re: [Xen-devel] [PATCH] blkif: add indirect descriptors
>interface to
>> public headers
>> 
>> On 14/11/13 11:14, Paul Durrant wrote:
>> >> -----Original Message-----
>> >> From: Roger Pau Monnà [mailto:roger.pau@xxxxxxxxxx]
>> >> Sent: 14 November 2013 10:06
>> >> To: Paul Durrant; Ian Campbell
>> >> Cc: Konrad Rzeszutek Wilk; xen-devel@xxxxxxxxxxxxxxxxxxxx; Keir
>> (Xen.org);
>> >> Jan Beulich
>> >> Subject: Re: [Xen-devel] [PATCH] blkif: add indirect descriptors
>interface
>> to
>> >> public headers
>> >>
>> >> 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@xxxxxxxxxxxxxxxxxxxx; 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@xxxxxxxxxxxxxxxxxxxx;
>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@xxxxxxxxxxxxxxxxxxxx; 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.
>> >
>> > I don't see where it's defined that the protocol always uses the
>gcc ABI?
>> And if that's the case then why the need for
>__attribute__((__packed__)) all
>> over the linux header?
>> 
>> AFAIK there's no need for all the __attribute__((__packed__)) in
>Linux
>> blkif.h header, but it's Linux copy of the header, so it's arguably
>that
>> Linux can define those as wanted, as long as they have the same
>layout
>> as the one generated by a pristine copy of blkif.h from the Xen tree
>(as
>> it is now).
>> 
>> __attribute__((__packed__)) should only be needed in blkback in order
>to
>> define the i386 and amd64 version of those structures and handle
>> correctly requests from an i386 DomU on an amd64 Dom0 for example.
>
>Yes, agreed. So can we have a comment in the patch stating the ABI and
>the fact that it's different in x86 and x64 builds and hence frontends
>need to be careful about correctly setting the xenstore key?

Thr layout and size of the structure should be the same size on 32 and 64 bit 
builds.

I don't understand what the xenstore key has to do with this?
>
>  Paul



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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