Message ID | alpine.DEB.2.02.1407091947340.29039@kaball.uk.xensource.com |
---|---|
State | Superseded |
Headers | show |
On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > disk and framebuffer in particular. > > Ideally we would also modify the configure options to only build what is > necessary: a machine just for PV backends. However that is a work in > progress and not yet available in QEMU (see > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > the usual i386 target, even though no i386 emulation is going to be done > by qemu-xen on ARM. As I mentioned IRL we need to confirm that this doesn't end up exposing a protocol property in the xenstore backend dir of XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. Likewise we need to be sure that the code actually implements the ARM protocol, not one of the x86 ones. Ian. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > diff --git a/tools/configure b/tools/configure > index 20f1aa9..b39012b 100755 > --- a/tools/configure > +++ b/tools/configure > @@ -3869,6 +3869,8 @@ else > case "$host_cpu" in > i[3456]86|x86_64) > qemu_xen=y;; > + arm*|aarch64) > + qemu_xen=y;; > *) qemu_xen=n;; > esac > > diff --git a/tools/configure.ac b/tools/configure.ac > index 6d70f04..d1c8e5e 100644 > --- a/tools/configure.ac > +++ b/tools/configure.ac > @@ -126,6 +126,8 @@ AC_ARG_WITH([system-qemu], > case "$host_cpu" in > i[[3456]]86|x86_64) > qemu_xen=y;; > + arm*|aarch64) > + qemu_xen=y;; > *) qemu_xen=n;; > esac > ]) >
On Thu, 10 Jul 2014, Ian Campbell wrote: > On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > disk and framebuffer in particular. > > > > Ideally we would also modify the configure options to only build what is > > necessary: a machine just for PV backends. However that is a work in > > progress and not yet available in QEMU (see > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > the usual i386 target, even though no i386 emulation is going to be done > > by qemu-xen on ARM. > > As I mentioned IRL we need to confirm that this doesn't end up exposing > a protocol property in the xenstore backend dir of > XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. QEMU doesn't write the protocol to xenstore. In fact the protocol is written to xenstore by the frontend so this shouldn't be a problem. > Likewise we need to be sure that the code actually implements the ARM > protocol, not one of the x86 ones. Sure. No matter the QEMU target architecture, qdisk and xenfb implement NATIVE as well as x86 protocols. > Ian. > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > > > diff --git a/tools/configure b/tools/configure > > index 20f1aa9..b39012b 100755 > > --- a/tools/configure > > +++ b/tools/configure > > @@ -3869,6 +3869,8 @@ else > > case "$host_cpu" in > > i[3456]86|x86_64) > > qemu_xen=y;; > > + arm*|aarch64) > > + qemu_xen=y;; > > *) qemu_xen=n;; > > esac > > > > diff --git a/tools/configure.ac b/tools/configure.ac > > index 6d70f04..d1c8e5e 100644 > > --- a/tools/configure.ac > > +++ b/tools/configure.ac > > @@ -126,6 +126,8 @@ AC_ARG_WITH([system-qemu], > > case "$host_cpu" in > > i[[3456]]86|x86_64) > > qemu_xen=y;; > > + arm*|aarch64) > > + qemu_xen=y;; > > *) qemu_xen=n;; > > esac > > ]) > > > >
On Thu, 2014-07-10 at 15:04 +0100, Stefano Stabellini wrote: > On Thu, 10 Jul 2014, Ian Campbell wrote: > > On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > > disk and framebuffer in particular. > > > > > > Ideally we would also modify the configure options to only build what is > > > necessary: a machine just for PV backends. However that is a work in > > > progress and not yet available in QEMU (see > > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > > the usual i386 target, even though no i386 emulation is going to be done > > > by qemu-xen on ARM. > > > > As I mentioned IRL we need to confirm that this doesn't end up exposing > > a protocol property in the xenstore backend dir of > > XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. > > QEMU doesn't write the protocol to xenstore. In fact the protocol is > written to xenstore by the frontend so this shouldn't be a problem. Oh good, I was misremembering which way round it was. > > Likewise we need to be sure that the code actually implements the ARM > > protocol, not one of the x86 ones. > > Sure. No matter the QEMU target architecture, qdisk and xenfb implement > NATIVE as well as x86 protocols. When built as an ARM binary with x86 as the target architecture what does it consider to be the NATIVE protocol? You didn't mention the ARM protocol, hopefully just an oversight? Ian
On 10.07.2014 13:18, Stefano Stabellini wrote: > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > disk and framebuffer in particular. In the Ubuntu packaging I moved to not build qemu from Xen to just depend on the qemu package (which should be the same) at least for x86. Since I have no Arm hw on my own, all the arm builds are more of a theoretical exercise (no feedback from anyone actually trying). This sounds like I should (again) depend on a qemu-system-x86, even for the Arm packages. Is that right? -Stefan > > Ideally we would also modify the configure options to only build what is > necessary: a machine just for PV backends. However that is a work in > progress and not yet available in QEMU (see > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > the usual i386 target, even though no i386 emulation is going to be done > by qemu-xen on ARM. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > diff --git a/tools/configure b/tools/configure > index 20f1aa9..b39012b 100755 > --- a/tools/configure > +++ b/tools/configure > @@ -3869,6 +3869,8 @@ else > case "$host_cpu" in > i[3456]86|x86_64) > qemu_xen=y;; > + arm*|aarch64) > + qemu_xen=y;; > *) qemu_xen=n;; > esac > > diff --git a/tools/configure.ac b/tools/configure.ac > index 6d70f04..d1c8e5e 100644 > --- a/tools/configure.ac > +++ b/tools/configure.ac > @@ -126,6 +126,8 @@ AC_ARG_WITH([system-qemu], > case "$host_cpu" in > i[[3456]]86|x86_64) > qemu_xen=y;; > + arm*|aarch64) > + qemu_xen=y;; > *) qemu_xen=n;; > esac > ]) > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel >
On Thu, 10 Jul 2014, Stefan Bader wrote: > On 10.07.2014 13:18, Stefano Stabellini wrote: > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > disk and framebuffer in particular. > > In the Ubuntu packaging I moved to not build qemu from Xen to just depend on > the qemu package (which should be the same) at least for x86. > Since I have no Arm hw on my own, all the arm builds are more of a theoretical > exercise (no feedback from anyone actually trying). > This sounds like I should (again) depend on a qemu-system-x86, even for the > Arm packages. Is that right? Right. If you have Xen installed on an ARM box and you build QEMU with --target-list=i386-softmmu, it should pick up Xen support automatically. > -Stefan > > > > Ideally we would also modify the configure options to only build what is > > necessary: a machine just for PV backends. However that is a work in > > progress and not yet available in QEMU (see > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > the usual i386 target, even though no i386 emulation is going to be done > > by qemu-xen on ARM. > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > > > diff --git a/tools/configure b/tools/configure > > index 20f1aa9..b39012b 100755 > > --- a/tools/configure > > +++ b/tools/configure > > @@ -3869,6 +3869,8 @@ else > > case "$host_cpu" in > > i[3456]86|x86_64) > > qemu_xen=y;; > > + arm*|aarch64) > > + qemu_xen=y;; > > *) qemu_xen=n;; > > esac > > > > diff --git a/tools/configure.ac b/tools/configure.ac > > index 6d70f04..d1c8e5e 100644 > > --- a/tools/configure.ac > > +++ b/tools/configure.ac > > @@ -126,6 +126,8 @@ AC_ARG_WITH([system-qemu], > > case "$host_cpu" in > > i[[3456]]86|x86_64) > > qemu_xen=y;; > > + arm*|aarch64) > > + qemu_xen=y;; > > *) qemu_xen=n;; > > esac > > ]) > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xen.org > > http://lists.xen.org/xen-devel > > >
On Thu, 10 Jul 2014, Ian Campbell wrote: > On Thu, 2014-07-10 at 15:04 +0100, Stefano Stabellini wrote: > > On Thu, 10 Jul 2014, Ian Campbell wrote: > > > On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > > > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > > > disk and framebuffer in particular. > > > > > > > > Ideally we would also modify the configure options to only build what is > > > > necessary: a machine just for PV backends. However that is a work in > > > > progress and not yet available in QEMU (see > > > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > > > the usual i386 target, even though no i386 emulation is going to be done > > > > by qemu-xen on ARM. > > > > > > As I mentioned IRL we need to confirm that this doesn't end up exposing > > > a protocol property in the xenstore backend dir of > > > XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. > > > > QEMU doesn't write the protocol to xenstore. In fact the protocol is > > written to xenstore by the frontend so this shouldn't be a problem. > > Oh good, I was misremembering which way round it was. > > > > Likewise we need to be sure that the code actually implements the ARM > > > protocol, not one of the x86 ones. > > > > Sure. No matter the QEMU target architecture, qdisk and xenfb implement > > NATIVE as well as x86 protocols. > > When built as an ARM binary with x86 as the target architecture what > does it consider to be the NATIVE protocol? ARM > You didn't mention the ARM protocol, hopefully just an oversight? NATIVE is defined as ARM when building on arm: xen/include/public/io/protocols.h and because aarch64 and arm use the same protocol qemu don't need to special case them.
On Thu, 2014-07-10 at 17:26 +0100, Stefano Stabellini wrote: > On Thu, 10 Jul 2014, Ian Campbell wrote: > > On Thu, 2014-07-10 at 15:04 +0100, Stefano Stabellini wrote: > > > On Thu, 10 Jul 2014, Ian Campbell wrote: > > > > On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > > > > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > > > > disk and framebuffer in particular. > > > > > > > > > > Ideally we would also modify the configure options to only build what is > > > > > necessary: a machine just for PV backends. However that is a work in > > > > > progress and not yet available in QEMU (see > > > > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > > > > the usual i386 target, even though no i386 emulation is going to be done > > > > > by qemu-xen on ARM. > > > > > > > > As I mentioned IRL we need to confirm that this doesn't end up exposing > > > > a protocol property in the xenstore backend dir of > > > > XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. > > > > > > QEMU doesn't write the protocol to xenstore. In fact the protocol is > > > written to xenstore by the frontend so this shouldn't be a problem. > > > > Oh good, I was misremembering which way round it was. > > > > > > Likewise we need to be sure that the code actually implements the ARM > > > > protocol, not one of the x86 ones. > > > > > > Sure. No matter the QEMU target architecture, qdisk and xenfb implement > > > NATIVE as well as x86 protocols. > > > > When built as an ARM binary with x86 as the target architecture what > > does it consider to be the NATIVE protocol? > > ARM > > > > You didn't mention the ARM protocol, hopefully just an oversight? > > NATIVE is defined as ARM when building on arm: > > xen/include/public/io/protocols.h > > and because aarch64 and arm use the same protocol qemu don't need to > special case them. Arguably that's a bug in Qemu when building for target!=arm, but I suppose it works in our favour right now, but bear it in mind for when you review the patch to "fix" this bug ;-) Acked-by: Ian Campbell <ian.campbell@citrix.com> I think application of this patch is dependent on the headers movement one, right? Ian.
On Wed, 16 Jul 2014, Ian Campbell wrote: > On Thu, 2014-07-10 at 17:26 +0100, Stefano Stabellini wrote: > > On Thu, 10 Jul 2014, Ian Campbell wrote: > > > On Thu, 2014-07-10 at 15:04 +0100, Stefano Stabellini wrote: > > > > On Thu, 10 Jul 2014, Ian Campbell wrote: > > > > > On Thu, 2014-07-10 at 12:18 +0100, Stefano Stabellini wrote: > > > > > > Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, > > > > > > disk and framebuffer in particular. > > > > > > > > > > > > Ideally we would also modify the configure options to only build what is > > > > > > necessary: a machine just for PV backends. However that is a work in > > > > > > progress and not yet available in QEMU (see > > > > > > http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build > > > > > > the usual i386 target, even though no i386 emulation is going to be done > > > > > > by qemu-xen on ARM. > > > > > > > > > > As I mentioned IRL we need to confirm that this doesn't end up exposing > > > > > a protocol property in the xenstore backend dir of > > > > > XEN_IO_PROTO_ABI_X86_* instead of XEN_IO_PROTO_ABI_ARM. > > > > > > > > QEMU doesn't write the protocol to xenstore. In fact the protocol is > > > > written to xenstore by the frontend so this shouldn't be a problem. > > > > > > Oh good, I was misremembering which way round it was. > > > > > > > > Likewise we need to be sure that the code actually implements the ARM > > > > > protocol, not one of the x86 ones. > > > > > > > > Sure. No matter the QEMU target architecture, qdisk and xenfb implement > > > > NATIVE as well as x86 protocols. > > > > > > When built as an ARM binary with x86 as the target architecture what > > > does it consider to be the NATIVE protocol? > > > > ARM > > > > > > > You didn't mention the ARM protocol, hopefully just an oversight? > > > > NATIVE is defined as ARM when building on arm: > > > > xen/include/public/io/protocols.h > > > > and because aarch64 and arm use the same protocol qemu don't need to > > special case them. > > Arguably that's a bug in Qemu when building for target!=arm, but I > suppose it works in our favour right now, but bear it in mind for when > you review the patch to "fix" this bug ;-) > > Acked-by: Ian Campbell <ian.campbell@citrix.com> > > I think application of this patch is dependent on the headers movement > one, right? Yep. Once the following series is applied, it can go in: <alpine.DEB.2.02.1407181831070.2295@kaball.uk.xensource.com>
diff --git a/tools/configure b/tools/configure index 20f1aa9..b39012b 100755 --- a/tools/configure +++ b/tools/configure @@ -3869,6 +3869,8 @@ else case "$host_cpu" in i[3456]86|x86_64) qemu_xen=y;; + arm*|aarch64) + qemu_xen=y;; *) qemu_xen=n;; esac diff --git a/tools/configure.ac b/tools/configure.ac index 6d70f04..d1c8e5e 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -126,6 +126,8 @@ AC_ARG_WITH([system-qemu], case "$host_cpu" in i[[3456]]86|x86_64) qemu_xen=y;; + arm*|aarch64) + qemu_xen=y;; *) qemu_xen=n;; esac ])
Build qemu-xen on ARM and ARM64: it is used to provide the PV backends, disk and framebuffer in particular. Ideally we would also modify the configure options to only build what is necessary: a machine just for PV backends. However that is a work in progress and not yet available in QEMU (see http://marc.info/?l=qemu-devel&m=139082425718379&w=2). So we just build the usual i386 target, even though no i386 emulation is going to be done by qemu-xen on ARM. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>