Mailing List Archive

[PATCH] enable QEMU for ARM builds
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>

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
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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
> ])
>



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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
> > ])
> >
>
>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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
>


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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
> >
>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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.


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [PATCH] enable QEMU for ARM builds [ In reply to ]
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>

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