* [Qemu-devel] [PATCH QEMU 2/2] xen: fix usage of xc_domain_create in domain builder [not found] <1447412752-24545-1-git-send-email-roger.pau@citrix.com> @ 2015-11-13 11:05 ` Roger Pau Monne 2015-11-13 11:09 ` Stefano Stabellini 0 siblings, 1 reply; 7+ messages in thread From: Roger Pau Monne @ 2015-11-13 11:05 UTC (permalink / raw) To: xen-devel; +Cc: Stefano Stabellini, qemu-devel, Roger Pau Monne Due to the addition of HVMlite and the requirement to always provide a valid xc_domain_configuration_t, xc_domain_create now always takes an arch domain config, which can be NULL in order to mimic previous behaviour. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: qemu-devel@nongnu.org --- hw/xenpv/xen_domainbuild.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index c0ab753..a737908 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, int rc; memcpy(uuid, qemu_uuid, sizeof(uuid)); - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); + rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid, NULL); if (rc < 0) { fprintf(stderr, "xen: xc_domain_create() failed\n"); goto err; -- 1.9.5 (Apple Git-50.3) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH QEMU 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 11:05 ` [Qemu-devel] [PATCH QEMU 2/2] xen: fix usage of xc_domain_create in domain builder Roger Pau Monne @ 2015-11-13 11:09 ` Stefano Stabellini 2015-11-13 12:18 ` [Qemu-devel] [PATCH QEMU v2 " Roger Pau Monne 0 siblings, 1 reply; 7+ messages in thread From: Stefano Stabellini @ 2015-11-13 11:09 UTC (permalink / raw) To: Roger Pau Monne; +Cc: xen-devel, qemu-devel, Stefano Stabellini [-- Attachment #1: Type: text/plain, Size: 1288 bytes --] On Fri, 13 Nov 2015, Roger Pau Monne wrote: > Due to the addition of HVMlite and the requirement to always provide a valid > xc_domain_configuration_t, xc_domain_create now always takes an arch domain > config, which can be NULL in order to mimic previous behaviour. > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Give a look at include/hw/xen/xen_common.h and add a compatibility shim there. Keep in mind that QEMU needs to build against any version of Xen from 4.0 onward. > Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > Cc: qemu-devel@nongnu.org > --- > hw/xenpv/xen_domainbuild.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c > index c0ab753..a737908 100644 > --- a/hw/xenpv/xen_domainbuild.c > +++ b/hw/xenpv/xen_domainbuild.c > @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, > int rc; > > memcpy(uuid, qemu_uuid, sizeof(uuid)); > - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); > + rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid, NULL); > if (rc < 0) { > fprintf(stderr, "xen: xc_domain_create() failed\n"); > goto err; > -- > 1.9.5 (Apple Git-50.3) > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH QEMU v2 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 11:09 ` Stefano Stabellini @ 2015-11-13 12:18 ` Roger Pau Monne 2015-11-13 13:46 ` Stefano Stabellini 0 siblings, 1 reply; 7+ messages in thread From: Roger Pau Monne @ 2015-11-13 12:18 UTC (permalink / raw) To: xen-devel; +Cc: Stefano Stabellini, qemu-devel, Roger Pau Monne Due to the addition of HVMlite and the requirement to always provide a valid xc_domain_configuration_t, xc_domain_create now always takes an arch domain config, which can be NULL in order to mimic previous behaviour. Add a small stub called xen_domain_create that encapsulates the correct call to xc_domain_create depending on the libxc version detected. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: qemu-devel@nongnu.org --- Changes since v1: - Add a compat layer to support previous libxc versions. - Add machinery to detect current Xen unstable (4.7). --- configure | 17 +++++++++++++++++ hw/xenpv/xen_domainbuild.c | 2 +- include/hw/xen/xen_common.h | 12 ++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 779623a..001982f 100755 --- a/configure +++ b/configure @@ -1863,6 +1863,23 @@ EOF elif cat > $TMPC <<EOF && #include <xenctrl.h> +#include <stdint.h> +int main(void) { + xc_interface *xc = NULL; + xen_domain_handle_t handle; + xc_domain_create(xc, 0, handle, 0, NULL, NULL); + return 0; +} +EOF + compile_prog "" "$xen_libs" + then + xen_ctrl_version=470 + xen=yes + + # Xen 4.6 + elif + cat > $TMPC <<EOF && +#include <xenctrl.h> #include <xenstore.h> #include <stdint.h> #include <xen/hvm/hvm_info_table.h> diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index c0ab753..07814f6 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, int rc; memcpy(uuid, qemu_uuid, sizeof(uuid)); - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); + rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid, NULL); if (rc < 0) { fprintf(stderr, "xen: xc_domain_create() failed\n"); goto err; diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h index 5923290..e5ba732 100644 --- a/include/hw/xen/xen_common.h +++ b/include/hw/xen/xen_common.h @@ -417,4 +417,16 @@ static inline int xen_set_ioreq_server_state(XenXC xc, domid_t dom, #endif +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, + xen_domain_handle_t handle, uint32_t flags, + uint32_t *pdomid, + xc_domain_configuration_t *config) +{ +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 470 + return xc_domain_create(xc, ssidref, handle, flags, pdomid); +#else + return xc_domain_create(xc, ssidref, handle, flags, pdomid, config); +#endif +} + #endif /* QEMU_HW_XEN_COMMON_H */ -- 1.9.5 (Apple Git-50.3) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH QEMU v2 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 12:18 ` [Qemu-devel] [PATCH QEMU v2 " Roger Pau Monne @ 2015-11-13 13:46 ` Stefano Stabellini 2015-11-13 13:54 ` Ian Campbell 0 siblings, 1 reply; 7+ messages in thread From: Stefano Stabellini @ 2015-11-13 13:46 UTC (permalink / raw) To: Roger Pau Monne; +Cc: xen-devel, Ian Campbell, qemu-devel, Stefano Stabellini [-- Attachment #1: Type: text/plain, Size: 3604 bytes --] On Fri, 13 Nov 2015, Roger Pau Monne wrote: > Due to the addition of HVMlite and the requirement to always provide a valid > xc_domain_configuration_t, xc_domain_create now always takes an arch domain > config, which can be NULL in order to mimic previous behaviour. > > Add a small stub called xen_domain_create that encapsulates the correct call > to xc_domain_create depending on the libxc version detected. > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> FYI this is going to conflict with Ian's series: 1447070487-31229-1-git-send-email-ian.campbell@citrix.com Is the corresponding libxc change already in Xen? > Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > Cc: qemu-devel@nongnu.org > --- > Changes since v1: > - Add a compat layer to support previous libxc versions. > - Add machinery to detect current Xen unstable (4.7). > --- > configure | 17 +++++++++++++++++ > hw/xenpv/xen_domainbuild.c | 2 +- > include/hw/xen/xen_common.h | 12 ++++++++++++ > 3 files changed, 30 insertions(+), 1 deletion(-) > > diff --git a/configure b/configure > index 779623a..001982f 100755 > --- a/configure > +++ b/configure > @@ -1863,6 +1863,23 @@ EOF > elif > cat > $TMPC <<EOF && > #include <xenctrl.h> > +#include <stdint.h> > +int main(void) { > + xc_interface *xc = NULL; > + xen_domain_handle_t handle; > + xc_domain_create(xc, 0, handle, 0, NULL, NULL); > + return 0; > +} > +EOF > + compile_prog "" "$xen_libs" > + then > + xen_ctrl_version=470 > + xen=yes > + > + # Xen 4.6 > + elif > + cat > $TMPC <<EOF && > +#include <xenctrl.h> > #include <xenstore.h> > #include <stdint.h> > #include <xen/hvm/hvm_info_table.h> > diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c > index c0ab753..07814f6 100644 > --- a/hw/xenpv/xen_domainbuild.c > +++ b/hw/xenpv/xen_domainbuild.c > @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, > int rc; > > memcpy(uuid, qemu_uuid, sizeof(uuid)); > - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); > + rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid, NULL); > if (rc < 0) { > fprintf(stderr, "xen: xc_domain_create() failed\n"); > goto err; > diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h > index 5923290..e5ba732 100644 > --- a/include/hw/xen/xen_common.h > +++ b/include/hw/xen/xen_common.h > @@ -417,4 +417,16 @@ static inline int xen_set_ioreq_server_state(XenXC xc, domid_t dom, > > #endif > > +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, > + xen_domain_handle_t handle, uint32_t flags, > + uint32_t *pdomid, > + xc_domain_configuration_t *config) > +{ > +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 470 > + return xc_domain_create(xc, ssidref, handle, flags, pdomid); > +#else > + return xc_domain_create(xc, ssidref, handle, flags, pdomid, config); > +#endif > +} > + > #endif /* QEMU_HW_XEN_COMMON_H */ Please follow the existing scheme by introducing two xen_domain_create functions. In addition, the patch causes a build failure against most Xen versions: In file included from /local/scratch/sstabellini/qemu/include/hw/xen/xen_backend.h:4:0, from hw/block/xen_disk.c:38: /local/scratch/sstabellini/qemu/include/hw/xen/xen_common.h:445:37: error: unknown type name ‘xc_domain_configuration_t’ CC hw/bt/hci-csr.o make: *** [hw/block/xen_disk.o] Error 1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH QEMU v2 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 13:46 ` Stefano Stabellini @ 2015-11-13 13:54 ` Ian Campbell 2015-11-13 16:46 ` [Qemu-devel] [PATCH QEMU v3 " Roger Pau Monne 0 siblings, 1 reply; 7+ messages in thread From: Ian Campbell @ 2015-11-13 13:54 UTC (permalink / raw) To: Stefano Stabellini, Roger Pau Monne; +Cc: xen-devel, qemu-devel On Fri, 2015-11-13 at 13:46 +0000, Stefano Stabellini wrote: > On Fri, 13 Nov 2015, Roger Pau Monne wrote: > > Due to the addition of HVMlite and the requirement to always provide a > > valid > > xc_domain_configuration_t, xc_domain_create now always takes an arch > > domain > > config, which can be NULL in order to mimic previous behaviour. > > > > Add a small stub called xen_domain_create that encapsulates the correct > > call > > to xc_domain_create depending on the libxc version detected. > > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > FYI this is going to conflict with Ian's series: > > 1447070487-31229-1-git-send-email-ian.campbell@citrix.com The bit being patched here is disabled by "xen: make it possible to build without the Xen PV domain builder" in that series. In any case I think Roger's stuff would be better off going in first and I can easily rebase over it. > In addition, the patch causes a build failure against most Xen versions: > > In file included from > /local/scratch/sstabellini/qemu/include/hw/xen/xen_backend.h:4:0, > from hw/block/xen_disk.c:38: > /local/scratch/sstabellini/qemu/include/hw/xen/xen_common.h:445:37: > error: unknown type name ‘xc_domain_configuration_t’ > CC hw/bt/hci-csr.o > make: *** [hw/block/xen_disk.o] Error 1 Given the only caller today passes NULL I'd suggest moving the NULL down into the wrapper, i.e. dropping the argument from xen_domain_create. If someone wants to resurrect the domain build in QEMU _and_ teach it to do pvh, then they will surely be able to refactor this to suit their needs. Ian. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH QEMU v3 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 13:54 ` Ian Campbell @ 2015-11-13 16:46 ` Roger Pau Monne 2015-11-13 17:35 ` Stefano Stabellini 0 siblings, 1 reply; 7+ messages in thread From: Roger Pau Monne @ 2015-11-13 16:46 UTC (permalink / raw) To: xen-devel; +Cc: Stefano Stabellini, qemu-devel, Roger Pau Monne Due to the addition of HVMlite and the requirement to always provide a valid xc_domain_configuration_t, xc_domain_create now always takes an arch domain config, which can be NULL in order to mimic previous behaviour. Add a small stub called xen_domain_create that encapsulates the correct call to xc_domain_create depending on the libxc version detected. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> --- Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Cc: qemu-devel@nongnu.org --- Changes since v2: - Drop the last parameter to xen_create_domain since it's always NULL ATM and was causing build problems with older Xen versions. - Create two different inline functions instead of putting ifdefs inside of a single one. Changes since v1: - Add a compat layer to support previous libxc versions. - Add machinery to detect current Xen unstable (4.7). --- configure | 17 +++++++++++++++++ hw/xenpv/xen_domainbuild.c | 2 +- include/hw/xen/xen_common.h | 16 ++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 779623a..001982f 100755 --- a/configure +++ b/configure @@ -1863,6 +1863,23 @@ EOF elif cat > $TMPC <<EOF && #include <xenctrl.h> +#include <stdint.h> +int main(void) { + xc_interface *xc = NULL; + xen_domain_handle_t handle; + xc_domain_create(xc, 0, handle, 0, NULL, NULL); + return 0; +} +EOF + compile_prog "" "$xen_libs" + then + xen_ctrl_version=470 + xen=yes + + # Xen 4.6 + elif + cat > $TMPC <<EOF && +#include <xenctrl.h> #include <xenstore.h> #include <stdint.h> #include <xen/hvm/hvm_info_table.h> diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index c0ab753..ac0e5ac 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, int rc; memcpy(uuid, qemu_uuid, sizeof(uuid)); - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); + rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); if (rc < 0) { fprintf(stderr, "xen: xc_domain_create() failed\n"); goto err; diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h index 5923290..04bf6da 100644 --- a/include/hw/xen/xen_common.h +++ b/include/hw/xen/xen_common.h @@ -417,4 +417,20 @@ static inline int xen_set_ioreq_server_state(XenXC xc, domid_t dom, #endif +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 470 +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, + xen_domain_handle_t handle, uint32_t flags, + uint32_t *pdomid) +{ + return xc_domain_create(xc, ssidref, handle, flags, pdomid); +} +#else +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, + xen_domain_handle_t handle, uint32_t flags, + uint32_t *pdomid) +{ + return xc_domain_create(xc, ssidref, handle, flags, pdomid, NULL); +} +#endif + #endif /* QEMU_HW_XEN_COMMON_H */ -- 1.9.5 (Apple Git-50.3) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH QEMU v3 2/2] xen: fix usage of xc_domain_create in domain builder 2015-11-13 16:46 ` [Qemu-devel] [PATCH QEMU v3 " Roger Pau Monne @ 2015-11-13 17:35 ` Stefano Stabellini 0 siblings, 0 replies; 7+ messages in thread From: Stefano Stabellini @ 2015-11-13 17:35 UTC (permalink / raw) To: Roger Pau Monne; +Cc: xen-devel, qemu-devel, Stefano Stabellini [-- Attachment #1: Type: text/plain, Size: 3486 bytes --] On Fri, 13 Nov 2015, Roger Pau Monne wrote: > Due to the addition of HVMlite and the requirement to always provide a valid > xc_domain_configuration_t, xc_domain_create now always takes an arch domain > config, which can be NULL in order to mimic previous behaviour. > > Add a small stub called xen_domain_create that encapsulates the correct call > to xc_domain_create depending on the libxc version detected. > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> I'll apply it to my tree > Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > Cc: qemu-devel@nongnu.org > --- > Changes since v2: > - Drop the last parameter to xen_create_domain since it's always NULL ATM > and was causing build problems with older Xen versions. > - Create two different inline functions instead of putting ifdefs inside of > a single one. > > Changes since v1: > - Add a compat layer to support previous libxc versions. > - Add machinery to detect current Xen unstable (4.7). > --- > configure | 17 +++++++++++++++++ > hw/xenpv/xen_domainbuild.c | 2 +- > include/hw/xen/xen_common.h | 16 ++++++++++++++++ > 3 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/configure b/configure > index 779623a..001982f 100755 > --- a/configure > +++ b/configure > @@ -1863,6 +1863,23 @@ EOF > elif > cat > $TMPC <<EOF && > #include <xenctrl.h> > +#include <stdint.h> > +int main(void) { > + xc_interface *xc = NULL; > + xen_domain_handle_t handle; > + xc_domain_create(xc, 0, handle, 0, NULL, NULL); > + return 0; > +} > +EOF > + compile_prog "" "$xen_libs" > + then > + xen_ctrl_version=470 > + xen=yes > + > + # Xen 4.6 > + elif > + cat > $TMPC <<EOF && > +#include <xenctrl.h> > #include <xenstore.h> > #include <stdint.h> > #include <xen/hvm/hvm_info_table.h> > diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c > index c0ab753..ac0e5ac 100644 > --- a/hw/xenpv/xen_domainbuild.c > +++ b/hw/xenpv/xen_domainbuild.c > @@ -234,7 +234,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk, > int rc; > > memcpy(uuid, qemu_uuid, sizeof(uuid)); > - rc = xc_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); > + rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid); > if (rc < 0) { > fprintf(stderr, "xen: xc_domain_create() failed\n"); > goto err; > diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h > index 5923290..04bf6da 100644 > --- a/include/hw/xen/xen_common.h > +++ b/include/hw/xen/xen_common.h > @@ -417,4 +417,20 @@ static inline int xen_set_ioreq_server_state(XenXC xc, domid_t dom, > > #endif > > +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 470 > +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, > + xen_domain_handle_t handle, uint32_t flags, > + uint32_t *pdomid) > +{ > + return xc_domain_create(xc, ssidref, handle, flags, pdomid); > +} > +#else > +static inline int xen_domain_create(XenXC xc, uint32_t ssidref, > + xen_domain_handle_t handle, uint32_t flags, > + uint32_t *pdomid) > +{ > + return xc_domain_create(xc, ssidref, handle, flags, pdomid, NULL); > +} > +#endif > + > #endif /* QEMU_HW_XEN_COMMON_H */ > -- > 1.9.5 (Apple Git-50.3) > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-11-13 17:36 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1447412752-24545-1-git-send-email-roger.pau@citrix.com> 2015-11-13 11:05 ` [Qemu-devel] [PATCH QEMU 2/2] xen: fix usage of xc_domain_create in domain builder Roger Pau Monne 2015-11-13 11:09 ` Stefano Stabellini 2015-11-13 12:18 ` [Qemu-devel] [PATCH QEMU v2 " Roger Pau Monne 2015-11-13 13:46 ` Stefano Stabellini 2015-11-13 13:54 ` Ian Campbell 2015-11-13 16:46 ` [Qemu-devel] [PATCH QEMU v3 " Roger Pau Monne 2015-11-13 17:35 ` Stefano Stabellini
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).