From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Ian Campbell <Ian.Campbell@citrix.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Vrabel <david.vrabel@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Julien Grall <julien.grall@linaro.org>,
<linux-kernel@vger.kernel.org>, <xen-devel@lists.xenproject.org>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: Re: [Xen-devel] [PATCH RFC] xen-block: correctly define structures in public headers
Date: Wed, 4 Dec 2013 10:43:16 +0100 [thread overview]
Message-ID: <529EF934.1020200@citrix.com> (raw)
In-Reply-To: <1386149319.13256.83.camel@kazak.uk.xensource.com>
On 04/12/13 10:28, Ian Campbell wrote:
> On Tue, 2013-12-03 at 15:11 -0500, Konrad Rzeszutek Wilk wrote:
>>>> If Konrad and Boris agree that breaking the kernel's ABI in this way is
>>>> acceptable in this specific case, I'll defer to them.
>>>
>>> My opinion as Xen on ARM hypervisor maintainer is that this is the right
>>> thing to do in this case.
>>
>> Heh. If somebody can guarantee me that (by testing the right variants and
>> mentioning this in the git commit) that this does not break x86, then
>> I am fine.
>>
>> And by 'break x86' I mean that this combination works:
>> 32-bit domU on 64-bit dom0
>> 64-bit domU on 32-bit dom0
>>
>> And perhaps also the obvious:
>> 64-bit domU on 64-bit dom0
>> 32-bit domU on 32-bit dom0
>
> One way to test this is with gdb on a vmlinux for each arch with
> CONFIG_DEBUG_INFO=y. For each MEMBER of each interesting STRUCT:
> (gdb) print &((struct STRUCT *)0)->MEMBER
> (this is effectively an open coded offsetof)
>
> This could probably even be semi automated by producing a script to feed
> to gdb which run through all of the options and diffing the result.
>
> If I could have the moon on a stick I would have a tool such as this
> running against the canonical Xen headers, to catch breakage as it is
> introduced upstream and a tool which could run against an arbitrary ELF
> binary to validate it against the upstream results.
> tools/include/xen-foreign/mkchecker.py goes some way towards that but
> isn't really extensible to the extent we would need/want.
>
> While I'm asking for unicorns a gcc __attribute__((warn_on_holes)) which
> could be applied to a struct to enforce the need for explicit padding
> would probably be incredibly useful for this of thing.
Right now I would be happy to add something like:
#if !defined(CONFIG_X86_32) && !defined(CONFIG_X86_64) &&
!defined(CONFIG_ARM...
#error This architecture is not supported by the Xen PV block ABI
#endif
To the Linux copy of blkif.h
>> Since the xen-blkback has its own version of the structs there is no
>> need to change change newer and older version of it.
>
> Someone should check that these are producing the right interface on ARM
> though!
AFAICT blkback on ARM is not using the structures defined in
blkback/common.h, since the protocol is "native", it's using the same
structures defined in the public header (just as blkfront). There's no
translation needed and blkback just does a memcpy from the ring to the
native struct.
next prev parent reply other threads:[~2013-12-04 9:43 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-03 10:57 [PATCH RFC] xen-block: correctly define structures in public headers Roger Pau Monne
2013-12-03 11:01 ` David Vrabel
2013-12-03 11:01 ` David Vrabel
2013-12-03 11:07 ` Paul Durrant
2013-12-03 11:07 ` [Xen-devel] " Paul Durrant
2013-12-03 11:08 ` Ian Campbell
2013-12-03 11:59 ` David Vrabel
2013-12-03 13:41 ` Ian Campbell
2013-12-03 15:11 ` David Vrabel
2013-12-03 15:11 ` [Xen-devel] " David Vrabel
2013-12-03 15:17 ` Ian Campbell
2013-12-03 15:17 ` [Xen-devel] " Ian Campbell
2013-12-03 15:51 ` One Thousand Gnomes
2013-12-03 15:51 ` [Xen-devel] " One Thousand Gnomes
2013-12-03 16:06 ` Ian Campbell
2013-12-03 16:06 ` Ian Campbell
2013-12-03 20:11 ` Konrad Rzeszutek Wilk
2013-12-03 20:11 ` [Xen-devel] " Konrad Rzeszutek Wilk
2013-12-04 9:28 ` Ian Campbell
2013-12-04 9:43 ` Roger Pau Monné [this message]
2013-12-04 9:43 ` Roger Pau Monné
2013-12-04 12:10 ` [Xen-devel] " Ian Campbell
2013-12-04 12:10 ` Ian Campbell
2013-12-04 9:28 ` Ian Campbell
2013-12-04 11:03 ` [Xen-devel] " Stefano Stabellini
2013-12-04 11:33 ` Stefano Stabellini
2013-12-04 11:33 ` [Xen-devel] " Stefano Stabellini
2013-12-04 11:03 ` Stefano Stabellini
2013-12-11 16:18 ` [Xen-devel] " Stefano Stabellini
2013-12-11 16:23 ` Roger Pau Monné
2013-12-11 16:23 ` [Xen-devel] " Roger Pau Monné
2013-12-11 16:29 ` Stefano Stabellini
2013-12-11 16:29 ` [Xen-devel] " Stefano Stabellini
2013-12-11 16:18 ` Stefano Stabellini
2013-12-03 13:41 ` Ian Campbell
2013-12-03 11:59 ` David Vrabel
2013-12-03 11:08 ` Ian Campbell
2013-12-03 11:09 ` Roger Pau Monné
2013-12-03 11:09 ` Roger Pau Monné
2013-12-03 11:05 ` [Xen-devel] " Ian Campbell
2013-12-03 11:11 ` Jan Beulich
2013-12-03 11:15 ` Ian Campbell
2013-12-03 11:15 ` [Xen-devel] " Ian Campbell
2013-12-03 11:11 ` Jan Beulich
2013-12-03 11:14 ` Roger Pau Monné
2013-12-03 11:14 ` [Xen-devel] " Roger Pau Monné
2013-12-03 11:05 ` Ian Campbell
2013-12-03 11:14 ` [Xen-devel] " Jan Beulich
2013-12-03 11:18 ` Roger Pau Monné
2013-12-03 11:18 ` Roger Pau Monné
2013-12-03 11:14 ` Jan Beulich
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=529EF934.1020200@citrix.com \
--to=roger.pau@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=julien.grall@linaro.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stefano.stabellini@eu.citrix.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.