From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AB7BBC43334 for ; Thu, 21 Jul 2022 10:28:17 +0000 (UTC) Received: from localhost ([::1]:35002 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oETPk-0002ye-5A for qemu-devel@archiver.kernel.org; Thu, 21 Jul 2022 06:28:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40284) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oETNA-0001o9-AM for qemu-devel@nongnu.org; Thu, 21 Jul 2022 06:25:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:52210) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oETN0-0008Q7-UX for qemu-devel@nongnu.org; Thu, 21 Jul 2022 06:25:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1658399126; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references; bh=ljozf0zpaNQ6jO86eQ3tUK7Vrs7PUttaQX2tMlthYM8=; b=UghCT5Rp1zvuZ1kazcrgZj53e9fKEb95G4s15XS08fQ2rjoaPOCjfTBK/+Mcok2MLYfmk1 iEDWhHfBxaRBRukOSaKuTURhYxUocGsE34RJX0hE9dXw+s3uHF+l9w2rq8by4Ys9FowwDn P66sxtrVL4ZAGsl5Px8ozGeWuvWljWg= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-93-c5asNV5WMp2RsyLR6zjRxw-1; Thu, 21 Jul 2022 06:25:22 -0400 X-MC-Unique: c5asNV5WMp2RsyLR6zjRxw-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E686C1C004F4; Thu, 21 Jul 2022 10:25:21 +0000 (UTC) Received: from redhat.com (unknown [10.33.36.107]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7C31B140EBE3; Thu, 21 Jul 2022 10:25:16 +0000 (UTC) Date: Thu, 21 Jul 2022 11:25:13 +0100 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= To: Jagannathan Raman , Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Thomas Huth , Aarushi Mehta , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Elena Ufimtseva , Marcel Apfelbaum , Laurent Vivier , qemu-block@nongnu.org, "Dr. David Alan Gilbert" , Richard Henderson , virtio-fs@redhat.com, Hanna Reitz , David Hildenbrand , Alex =?utf-8?Q?Benn=C3=A9e?= , Eric Blake , Kevin Wolf , Beraldo Leal , Peter Xu , Eduardo Habkost , Qiuhao Li , Paolo Bonzini , Markus Armbruster , Bandan Das , "Michael S. Tsirkin" , Stefano Garzarella , Alexander Bulekov , Julia Suvorova , Darren Kenny , Wainer dos Santos Moschetta , John G Johnson Subject: Re: [PULL 06/18] vfio-user: build library Message-ID: References: <20220615155129.1025811-1-stefanha@redhat.com> <20220615155129.1025811-7-stefanha@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220615155129.1025811-7-stefanha@redhat.com> User-Agent: Mutt/2.2.6 (2022-06-05) X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Hi Jay / Stefan, We've got a non-determinsitic hang in QEMU CI since this series merged, which we tracked down to a libvfio-user test that is flakey: https://gitlab.com/qemu-project/qemu/-/issues/1114 John Levon has proposed a PR to libvfio-user to turn off the test, but we'll need one of you to update the git submodule for libvfio-user on the QEMU side, as I can't find a nice way to selectively skip the test from QEMU side alone. With regards Daniel On Wed, Jun 15, 2022 at 04:51:17PM +0100, Stefan Hajnoczi wrote: > From: Jagannathan Raman > > add the libvfio-user library as a submodule. build it as a meson > subproject. > > libvfio-user is distributed with BSD 3-Clause license and > json-c with MIT (Expat) license > > Signed-off-by: Elena Ufimtseva > Signed-off-by: John G Johnson > Signed-off-by: Jagannathan Raman > Reviewed-by: Stefan Hajnoczi > Message-id: c2adec87958b081d1dc8775d4aa05c897912f025.1655151679.git.jag.raman@oracle.com > > [Changed submodule URL to QEMU's libvfio-user mirror on GitLab. The QEMU > project mirrors its dependencies so that it can provide full source code > even in the event that its dependencies become unavailable. Note that > the mirror repo is manually updated, so please contact me to make newer > libvfio-user commits available. If I become a bottleneck we can set up a > cronjob. > > Updated scripts/meson-buildoptions.sh to match the meson_options.txt > change. Failure to do so can result in scripts/meson-buildoptions.sh > being modified by the build system later on and you end up with a dirty > working tree. > --Stefan] > > Signed-off-by: Stefan Hajnoczi > --- > MAINTAINERS | 1 + > meson_options.txt | 2 ++ > configure | 17 +++++++++++++++++ > meson.build | 23 ++++++++++++++++++++++- > .gitlab-ci.d/buildtest.yml | 1 + > .gitmodules | 3 +++ > Kconfig.host | 4 ++++ > hw/remote/Kconfig | 4 ++++ > hw/remote/meson.build | 2 ++ > scripts/meson-buildoptions.sh | 4 ++++ > subprojects/libvfio-user | 1 + > tests/docker/dockerfiles/centos8.docker | 2 ++ > 12 files changed, 63 insertions(+), 1 deletion(-) > create mode 160000 subprojects/libvfio-user > > diff --git a/MAINTAINERS b/MAINTAINERS > index 5ba93348aa..d0fcaf0edb 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -3642,6 +3642,7 @@ F: hw/remote/proxy-memory-listener.c > F: include/hw/remote/proxy-memory-listener.h > F: hw/remote/iohub.c > F: include/hw/remote/iohub.h > +F: subprojects/libvfio-user > > EBPF: > M: Jason Wang > diff --git a/meson_options.txt b/meson_options.txt > index 0e8197386b..f3e2f22c1e 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -88,6 +88,8 @@ option('cfi_debug', type: 'boolean', value: 'false', > description: 'Verbose errors in case of CFI violation') > option('multiprocess', type: 'feature', value: 'auto', > description: 'Out of process device emulation support') > +option('vfio_user_server', type: 'feature', value: 'disabled', > + description: 'vfio-user server support') > option('dbus_display', type: 'feature', value: 'auto', > description: '-display dbus support') > option('tpm', type : 'feature', value : 'auto', > diff --git a/configure b/configure > index 4b12a8094c..c14e7f590a 100755 > --- a/configure > +++ b/configure > @@ -315,6 +315,7 @@ meson_args="" > ninja="" > bindir="bin" > skip_meson=no > +vfio_user_server="disabled" > > # The following Meson options are handled manually (still they > # are included in the automatically generated help message) > @@ -909,6 +910,10 @@ for opt do > ;; > --disable-blobs) meson_option_parse --disable-install-blobs "" > ;; > + --enable-vfio-user-server) vfio_user_server="enabled" > + ;; > + --disable-vfio-user-server) vfio_user_server="disabled" > + ;; > --enable-tcmalloc) meson_option_parse --enable-malloc=tcmalloc tcmalloc > ;; > --enable-jemalloc) meson_option_parse --enable-malloc=jemalloc jemalloc > @@ -2132,6 +2137,17 @@ write_container_target_makefile() { > > > > +########################################## > +# check for vfio_user_server > + > +case "$vfio_user_server" in > + enabled ) > + if test "$git_submodules_action" != "ignore"; then > + git_submodules="${git_submodules} subprojects/libvfio-user" > + fi > + ;; > +esac > + > ########################################## > # End of CC checks > # After here, no more $cc or $ld runs > @@ -2672,6 +2688,7 @@ if test "$skip_meson" = no; then > test "$slirp" != auto && meson_option_add "-Dslirp=$slirp" > test "$smbd" != '' && meson_option_add "-Dsmbd=$smbd" > test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg" > + test "$vfio_user_server" != auto && meson_option_add "-Dvfio_user_server=$vfio_user_server" > run_meson() { > NINJA=$ninja $meson setup --prefix "$prefix" "$@" $cross_arg "$PWD" "$source_path" > } > diff --git a/meson.build b/meson.build > index 9e65cc5367..ca19ddc30c 100644 > --- a/meson.build > +++ b/meson.build > @@ -308,6 +308,10 @@ multiprocess_allowed = get_option('multiprocess') \ > .require(targetos == 'linux', error_message: 'Multiprocess QEMU is supported only on Linux') \ > .allowed() > > +vfio_user_server_allowed = get_option('vfio_user_server') \ > + .require(targetos == 'linux', error_message: 'vfio-user server is supported only on Linux') \ > + .allowed() > + > have_tpm = get_option('tpm') \ > .require(targetos != 'windows', error_message: 'TPM emulation only available on POSIX systems') \ > .allowed() > @@ -2380,7 +2384,8 @@ host_kconfig = \ > (have_virtfs ? ['CONFIG_VIRTFS=y'] : []) + \ > ('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \ > (have_pvrdma ? ['CONFIG_PVRDMA=y'] : []) + \ > - (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) > + (multiprocess_allowed ? ['CONFIG_MULTIPROCESS_ALLOWED=y'] : []) + \ > + (vfio_user_server_allowed ? ['CONFIG_VFIO_USER_SERVER_ALLOWED=y'] : []) > > ignored = [ 'TARGET_XML_FILES', 'TARGET_ABI_DIR', 'TARGET_ARCH' ] > > @@ -2672,6 +2677,21 @@ if have_system > endif > endif > > +libvfio_user_dep = not_found > +if have_system and vfio_user_server_allowed > + have_internal = fs.exists(meson.current_source_dir() / 'subprojects/libvfio-user/meson.build') > + > + if not have_internal > + error('libvfio-user source not found - please pull git submodule') > + endif > + > + libvfio_user_proj = subproject('libvfio-user') > + > + libvfio_user_lib = libvfio_user_proj.get_variable('libvfio_user_dep') > + > + libvfio_user_dep = declare_dependency(dependencies: [libvfio_user_lib]) > +endif > + > fdt = not_found > if have_system > fdt_opt = get_option('fdt') > @@ -3790,6 +3810,7 @@ summary_info += {'target list': ' '.join(target_dirs)} > if have_system > summary_info += {'default devices': get_option('default_devices')} > summary_info += {'out of process emulation': multiprocess_allowed} > + summary_info += {'vfio-user server': vfio_user_server_allowed} > endif > summary(summary_info, bool_yn: true, section: 'Targets and accelerators') > > diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml > index cb7cad44b5..8a4353ef93 100644 > --- a/.gitlab-ci.d/buildtest.yml > +++ b/.gitlab-ci.d/buildtest.yml > @@ -168,6 +168,7 @@ build-system-centos: > IMAGE: centos8 > CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system > --enable-modules --enable-trace-backends=dtrace --enable-docs > + --enable-vfio-user-server > TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu > x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu > MAKE_CHECK_ARGS: check-build > diff --git a/.gitmodules b/.gitmodules > index b8bff47df8..aedd9a03d4 100644 > --- a/.gitmodules > +++ b/.gitmodules > @@ -64,3 +64,6 @@ > [submodule "tests/lcitool/libvirt-ci"] > path = tests/lcitool/libvirt-ci > url = https://gitlab.com/libvirt/libvirt-ci.git > +[submodule "subprojects/libvfio-user"] > + path = subprojects/libvfio-user > + url = https://gitlab.com/qemu-project/libvfio-user.git > diff --git a/Kconfig.host b/Kconfig.host > index 1165c4eacd..d763d89269 100644 > --- a/Kconfig.host > +++ b/Kconfig.host > @@ -42,3 +42,7 @@ config MULTIPROCESS_ALLOWED > config FUZZ > bool > select SPARSE_MEM > + > +config VFIO_USER_SERVER_ALLOWED > + bool > + imply VFIO_USER_SERVER > diff --git a/hw/remote/Kconfig b/hw/remote/Kconfig > index 08c16e235f..2d6b4f4cf4 100644 > --- a/hw/remote/Kconfig > +++ b/hw/remote/Kconfig > @@ -2,3 +2,7 @@ config MULTIPROCESS > bool > depends on PCI && PCI_EXPRESS && KVM > select REMOTE_PCIHOST > + > +config VFIO_USER_SERVER > + bool > + depends on MULTIPROCESS > diff --git a/hw/remote/meson.build b/hw/remote/meson.build > index e6a5574242..7da83350c8 100644 > --- a/hw/remote/meson.build > +++ b/hw/remote/meson.build > @@ -7,6 +7,8 @@ remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('remote-obj.c')) > remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy.c')) > remote_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('iohub.c')) > > +remote_ss.add(when: 'CONFIG_VFIO_USER_SERVER', if_true: libvfio_user_dep) > + > specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('memory.c')) > specific_ss.add(when: 'CONFIG_MULTIPROCESS', if_true: files('proxy-memory-listener.c')) > > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh > index 1fc1d2e2c3..24eb5f35ea 100644 > --- a/scripts/meson-buildoptions.sh > +++ b/scripts/meson-buildoptions.sh > @@ -153,6 +153,8 @@ meson_options_help() { > printf "%s\n" ' usb-redir libusbredir support' > printf "%s\n" ' vde vde network backend support' > printf "%s\n" ' vdi vdi image format support' > + printf "%s\n" ' vfio-user-server' > + printf "%s\n" ' vfio-user server support' > printf "%s\n" ' vhost-crypto vhost-user crypto backend support' > printf "%s\n" ' vhost-kernel vhost kernel backend support' > printf "%s\n" ' vhost-net vhost-net kernel acceleration support' > @@ -415,6 +417,8 @@ _meson_option_parse() { > --disable-vde) printf "%s" -Dvde=disabled ;; > --enable-vdi) printf "%s" -Dvdi=enabled ;; > --disable-vdi) printf "%s" -Dvdi=disabled ;; > + --enable-vfio-user-server) printf "%s" -Dvfio_user_server=enabled ;; > + --disable-vfio-user-server) printf "%s" -Dvfio_user_server=disabled ;; > --enable-vhost-crypto) printf "%s" -Dvhost_crypto=enabled ;; > --disable-vhost-crypto) printf "%s" -Dvhost_crypto=disabled ;; > --enable-vhost-kernel) printf "%s" -Dvhost_kernel=enabled ;; > diff --git a/subprojects/libvfio-user b/subprojects/libvfio-user > new file mode 160000 > index 0000000000..0b28d20557 > --- /dev/null > +++ b/subprojects/libvfio-user > @@ -0,0 +1 @@ > +Subproject commit 0b28d205572c80b568a1003db2c8f37ca333e4d7 > diff --git a/tests/docker/dockerfiles/centos8.docker b/tests/docker/dockerfiles/centos8.docker > index 4b20925bbf..10618bfa83 100644 > --- a/tests/docker/dockerfiles/centos8.docker > +++ b/tests/docker/dockerfiles/centos8.docker > @@ -51,6 +51,7 @@ RUN dnf update -y && \ > libbpf-devel \ > libcacard-devel \ > libcap-ng-devel \ > + libcmocka-devel \ > libcurl-devel \ > libdrm-devel \ > libepoxy-devel \ > @@ -59,6 +60,7 @@ RUN dnf update -y && \ > libgcrypt-devel \ > libiscsi-devel \ > libjpeg-devel \ > + json-c-devel \ > libnfs-devel \ > libpmem-devel \ > libpng-devel \ > -- > 2.36.1 > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|