From patchwork Tue Mar 14 20:23:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Stabellini X-Patchwork-Id: 9624433 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AD886604A9 for ; Tue, 14 Mar 2017 20:26:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 95075285FD for ; Tue, 14 Mar 2017 20:26:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 82A7A285FE; Tue, 14 Mar 2017 20:26:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7597828620 for ; Tue, 14 Mar 2017 20:26:03 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnsyU-0007KV-1K; Tue, 14 Mar 2017 20:23:18 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnsyT-0007KP-7C for xen-devel@lists.xenproject.org; Tue, 14 Mar 2017 20:23:17 +0000 Received: from [85.158.139.211] by server-3.bemta-5.messagelabs.com id 68/B1-01936-43158C85; Tue, 14 Mar 2017 20:23:16 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFIsWRWlGSWpSXmKPExsVybKJsh65x4Ik IgxU7tSy+b5nM5MDocfjDFZYAxijWzLyk/IoE1ow/kz4wFzR7VBx/coS1gfG/XRcjF4eQwFRG iX8tX5khnDlMEq/v/AByODlYBLQlbj2YwgJiswkYSvx9somti5GDQwLIXvKZAyQsIqAvsel2I ztIL7NAE5PEt0PfmUASwgKREkdvfASzOQW8Jb4+mwI2k1fAS2L1s7XsEMu+M0pcOLqAFSQhKq ArcejfHzaIIkGJkzOfgC1mFtCSWD59G5gtIZAhMa9nDiuE7SWx6MYlKFtN4uq5TcwTGAVnIWm fhaR9ASPTKkaN4tSistQiXUNjvaSizPSMktzEzBxdQwNTvdzU4uLE9NScxKRiveT83E2MwBBl AIIdjP+2eR5ilORgUhLlVRE8ESHEl5SfUpmRWJwRX1Sak1p8iFGGg0NJgjcpACgnWJSanlqRl pkDjBaYtAQHj5IIrzRImre4IDG3ODMdInWK0Zhjzuzdb5g4bu07/oZJiCUvPy9VSpw3DqRUAK Q0ozQPbhAsii8xykoJ8zICnSbEU5BalJtZgir/ilGcg1FJmPeEP9AUnsy8Erh9r4BOYQI6JfH nEZBTShIRUlINjNIyO1caWz9ziJ/PwHBsgadu3hSm217RytslZM6uiXnw8OCMFw8WRTW4Hsoy USt0mKkyrdX8FMfBpzWsfS/yzvnVxP3KVZKb/mXJGt7Z+lzcBRxlixuutbBxvxMzfXH108Z19 V09l6Xe/sjcseRKZOMm895di1LOCJV0Cs1doT7lkzbzAZZ6LiWW4oxEQy3mouJEAKE7/szdAg AA X-Env-Sender: sstabellini@kernel.org X-Msg-Ref: server-4.tower-206.messagelabs.com!1489522994!89432111!1 X-Originating-IP: [198.145.29.136] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 1739 invoked from network); 14 Mar 2017 20:23:15 -0000 Received: from mail.kernel.org (HELO mail.kernel.org) (198.145.29.136) by server-4.tower-206.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 14 Mar 2017 20:23:15 -0000 Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2217220380; Tue, 14 Mar 2017 20:23:12 +0000 (UTC) Received: from [10.1.10.194] (96-82-76-110-static.hfc.comcastbusiness.net [96.82.76.110]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 44B892037E; Tue, 14 Mar 2017 20:23:10 +0000 (UTC) Date: Tue, 14 Mar 2017 13:23:09 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-X260 To: Stefano Stabellini In-Reply-To: Message-ID: References: <1489449360-14411-1-git-send-email-sstabellini@kernel.org> <1b077b13-2464-224a-3942-db0015951c32@redhat.com> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 X-Virus-Scanned: ClamAV using ClamSMTP Cc: peter.maydell@linaro.org, groug@kaod.org, qemu-devel@nongnu.org, Stefano Stabellini , stefanha@redhat.com, xen-devel@lists.xenproject.org, anthony.perard@citrix.com, Paolo Bonzini , rth@twiddle.net Subject: Re: [Xen-devel] [PATCH v2 1/9] configure: change CONFIG_XEN_BACKEND to be a target property X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP On Tue, 14 Mar 2017, Stefano Stabellini wrote: > On Tue, 14 Mar 2017, Paolo Bonzini wrote: > > On 14/03/2017 00:55, Stefano Stabellini wrote: > > > CONFIG_XEN_BACKEND is currently set when the host supports Xen, > > > regardless of the chosen targets. As a consequence, Xen backends can be > > > enabled even on targets that don't support Xen. > > > > > > Fix the issue by setting CONFIG_XEN_BACKEND only for targets that > > > support Xen. > > > > > > Signed-off-by: Stefano Stabellini > > > CC: groug@kaod.org > > > CC: groug@kaod.org > > > CC: pbonzini@redhat.com > > > CC: peter.maydell@linaro.org > > > CC: rth@twiddle.net > > > CC: stefanha@redhat.com > > > --- > > > configure | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/configure b/configure > > > index 6c21975..6d8f752 100755 > > > --- a/configure > > > +++ b/configure > > > @@ -5442,7 +5442,6 @@ if test "$virglrenderer" = "yes" ; then > > > echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak > > > fi > > > if test "$xen" = "yes" ; then > > > - echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak > > > echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak > > > if test "$xen_pv_domain_build" = "yes" ; then > > > echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak > > > @@ -6028,6 +6027,7 @@ case "$target_name" in > > > i386|x86_64) > > > if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then > > > echo "CONFIG_XEN=y" >> $config_target_mak > > > + echo "CONFIG_XEN_BACKEND=y" >> $config_target_mak > > > if test "$xen_pci_passthrough" = yes; then > > > echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" > > > fi > > > > > > > This messes up a bit the way xen_nic.o and friends are compiled, I > > think, because they are common-obj-y but they are only found when > > compiling in the target subdirectories. So you end up building > > x86_64-softmmu/../hw/net/xen_nic.o > > > > If you're unlucky, I believe this can lead to a link failure where a > > target is building xen_nic.o, while the other tries to link to a > > partially written object file. > > > > I think the files should be changed from > > common-obj-$(CONFIG_XEN_BACKEND) to common-obj-$(CONFIG_XEN). > > > > The Makefile.objs change ensures that Xen backends are not enabled on > > targets that support Xen. > > Actually I thought about doing that instead of the configure change. It > makes sense to me. > > > > Then you add to Makefile: > > > > CONFIG_SOFTMMU := $(if $(filter %-softmmu,$(TARGET_DIRS)),y) > > CONFIG_USER_ONLY := $(if $(filter %-user,$(TARGET_DIRS)),y) > > +CONFIG_XEN := $(CONFIG_XEN_BACKEND) > > CONFIG_ALL=y > > -include config-all-devices.mak > > -include config-all-disas.mak > > > > The Makefile change ensures that they are built before descending in the > > target-specific directories. > > But I don't understand this. Please correct me if I am wrong, but this > change looks like it would end up setting CONFIG_XEN every time that > CONFIG_XEN_BACKEND is set. Without the configure change at the top, it > would end up setting CONFIG_XEN whenever the host supports Xen, even for > non-x86 and non-ARM targets. What am I missing? FYI I made the following changes: I applied the rest of the series and did ./configure --enable-virtfs --enable-xen; make -j5 I got the following error: LINK aarch64-softmmu/qemu-system-aarch64 ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_alloc': /local/qemu/hw/9pfs/xen-9p-backend.c:387: undefined reference to `xenstore_write_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:388: undefined reference to `xenstore_write_be_int' ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_connect': /local/qemu/hw/9pfs/xen-9p-backend.c:292: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:313: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:357: undefined reference to `xen_pv_printf' /local/qemu/hw/9pfs/xen-9p-backend.c:307: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:362: undefined reference to `xenstore_read_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:363: undefined reference to `xenstore_read_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:366: undefined reference to `xenstore_read_fe_str' /local/qemu/hw/9pfs/xen-9p-backend.c:353: undefined reference to `xen_pv_printf' ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_alloc': /local/qemu/hw/9pfs/xen-9p-backend.c:389: undefined reference to `xenstore_write_be_int' collect2: error: ld returned 1 exit status make[1]: *** [qemu-system-arm] Error 1 make: *** [subdir-arm-softmmu] Error 2 ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_alloc': /local/qemu/hw/9pfs/xen-9p-backend.c:387: undefined reference to `xenstore_write_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:388: undefined reference to `xenstore_write_be_int' ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_connect': /local/qemu/hw/9pfs/xen-9p-backend.c:292: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:313: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:357: undefined reference to `xen_pv_printf' /local/qemu/hw/9pfs/xen-9p-backend.c:307: undefined reference to `xenstore_read_fe_int' /local/qemu/hw/9pfs/xen-9p-backend.c:362: undefined reference to `xenstore_read_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:363: undefined reference to `xenstore_read_be_str' /local/qemu/hw/9pfs/xen-9p-backend.c:366: undefined reference to `xenstore_read_fe_str' /local/qemu/hw/9pfs/xen-9p-backend.c:353: undefined reference to `xen_pv_printf' ../hw/9pfs/xen-9p-backend.o: In function `xen_9pfs_alloc': /local/qemu/hw/9pfs/xen-9p-backend.c:389: undefined reference to `xenstore_write_be_int' collect2: error: ld returned 1 exit status make[1]: *** [qemu-system-aarch64] Error 1 make: *** [subdir-aarch64-softmmu] Error 2 diff --git a/Makefile b/Makefile index 1c4c04f..b246138 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ endif CONFIG_SOFTMMU := $(if $(filter %-softmmu,$(TARGET_DIRS)),y) CONFIG_USER_ONLY := $(if $(filter %-user,$(TARGET_DIRS)),y) +CONFIG_XEN := $(CONFIG_XEN_BACKEND) CONFIG_ALL=y -include config-all-devices.mak -include config-all-disas.mak diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs index d4c3ab7..e0ed980 100644 --- a/hw/block/Makefile.objs +++ b/hw/block/Makefile.objs @@ -4,7 +4,7 @@ common-obj-$(CONFIG_SSI_M25P80) += m25p80.o common-obj-$(CONFIG_NAND) += nand.o common-obj-$(CONFIG_PFLASH_CFI01) += pflash_cfi01.o common-obj-$(CONFIG_PFLASH_CFI02) += pflash_cfi02.o -common-obj-$(CONFIG_XEN_BACKEND) += xen_disk.o +common-obj-$(CONFIG_XEN) += xen_disk.o common-obj-$(CONFIG_ECC) += ecc.o common-obj-$(CONFIG_ONENAND) += onenand.o common-obj-$(CONFIG_NVME_PCI) += nvme.o diff --git a/hw/char/Makefile.objs b/hw/char/Makefile.objs index 6ea76fe..725fdc4 100644 --- a/hw/char/Makefile.objs +++ b/hw/char/Makefile.objs @@ -7,7 +7,7 @@ common-obj-$(CONFIG_SERIAL_ISA) += serial-isa.o common-obj-$(CONFIG_SERIAL_PCI) += serial-pci.o common-obj-$(CONFIG_VIRTIO) += virtio-console.o common-obj-$(CONFIG_XILINX) += xilinx_uartlite.o -common-obj-$(CONFIG_XEN_BACKEND) += xen_console.o +common-obj-$(CONFIG_XEN) += xen_console.o common-obj-$(CONFIG_CADENCE) += cadence_uart.o obj-$(CONFIG_EXYNOS4) += exynos4210_uart.o diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index 063889b..3d02e8b 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -5,7 +5,7 @@ common-obj-$(CONFIG_JAZZ_LED) += jazz_led.o common-obj-$(CONFIG_PL110) += pl110.o common-obj-$(CONFIG_SSD0303) += ssd0303.o common-obj-$(CONFIG_SSD0323) += ssd0323.o -common-obj-$(CONFIG_XEN_BACKEND) += xenfb.o +common-obj-$(CONFIG_XEN) += xenfb.o common-obj-$(CONFIG_VGA_PCI) += vga-pci.o common-obj-$(CONFIG_VGA_ISA) += vga-isa.o diff --git a/hw/net/Makefile.objs b/hw/net/Makefile.objs index 610ed3e..6a95d92 100644 --- a/hw/net/Makefile.objs +++ b/hw/net/Makefile.objs @@ -1,5 +1,5 @@ common-obj-$(CONFIG_DP8393X) += dp8393x.o -common-obj-$(CONFIG_XEN_BACKEND) += xen_nic.o +common-obj-$(CONFIG_XEN) += xen_nic.o # PCI network cards common-obj-$(CONFIG_NE2000_PCI) += ne2000.o diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs index 98b5c9d..5958be8 100644 --- a/hw/usb/Makefile.objs +++ b/hw/usb/Makefile.objs @@ -40,5 +40,5 @@ common-obj-$(CONFIG_USB_REDIR) += redirect.o quirks.o common-obj-y += $(patsubst %,host-%.o,$(HOST_USB)) ifeq ($(CONFIG_USB_LIBUSB),y) -common-obj-$(CONFIG_XEN_BACKEND) += xen-usb.o +common-obj-$(CONFIG_XEN) += xen-usb.o endif diff --git a/hw/xen/Makefile.objs b/hw/xen/Makefile.objs index 591cdc2..4be3ec9 100644 --- a/hw/xen/Makefile.objs +++ b/hw/xen/Makefile.objs @@ -1,5 +1,5 @@ # xen backend driver support -common-obj-$(CONFIG_XEN_BACKEND) += xen_backend.o xen_devconfig.o xen_pvdev.o +common-obj-$(CONFIG_XEN) += xen_backend.o xen_devconfig.o xen_pvdev.o obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen-host-pci-device.o obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pt.o xen_pt_config_init.o xen_pt_graphics.o xen_pt_msi.o