From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Jagannathan Raman <jag.raman@oracle.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Cc: qemu-devel@nongnu.org, "Thomas Huth" <thuth@redhat.com>,
"Aarushi Mehta" <mehta.aaru20@gmail.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Laurent Vivier" <lvivier@redhat.com>,
qemu-block@nongnu.org,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
virtio-fs@redhat.com, "Hanna Reitz" <hreitz@redhat.com>,
"David Hildenbrand" <david@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Eric Blake" <eblake@redhat.com>, "Kevin Wolf" <kwolf@redhat.com>,
"Beraldo Leal" <bleal@redhat.com>, "Peter Xu" <peterx@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Qiuhao Li" <Qiuhao.Li@outlook.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Bandan Das" <bsd@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Stefano Garzarella" <sgarzare@redhat.com>,
"Alexander Bulekov" <alxndr@bu.edu>,
"Julia Suvorova" <jusual@redhat.com>,
"Darren Kenny" <darren.kenny@oracle.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"John G Johnson" <john.g.johnson@oracle.com>
Subject: Re: [PULL 06/18] vfio-user: build library
Date: Thu, 21 Jul 2022 11:25:13 +0100 [thread overview]
Message-ID: <Ytkpiao5Zk8Pj5Lq@redhat.com> (raw)
In-Reply-To: <20220615155129.1025811-7-stefanha@redhat.com>
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 <jag.raman@oracle.com>
>
> 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 <elena.ufimtseva@oracle.com>
> Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
> Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> 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 <stefanha@redhat.com>
> ---
> 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 <jasowang@redhat.com>
> 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 :|
next prev parent reply other threads:[~2022-07-21 10:28 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-15 15:51 [PULL 00/18] Block patches Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 01/18] MAINTAINERS: update Vladimir's address and repositories Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 02/18] Use io_uring_register_ring_fd() to skip fd operations Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 03/18] qdev: unplug blocker for devices Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 04/18] remote/machine: add HotplugHandler for remote machine Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 05/18] remote/machine: add vfio-user property Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 06/18] vfio-user: build library Stefan Hajnoczi
2022-07-12 8:39 ` Daniel P. Berrangé
2022-07-12 15:27 ` Jag Raman
2022-07-12 15:44 ` Daniel P. Berrangé
2022-07-12 17:13 ` Jag Raman
2022-07-21 10:25 ` Daniel P. Berrangé [this message]
2022-07-25 14:45 ` Jag Raman
2022-07-25 14:50 ` Daniel P. Berrangé
2022-07-25 15:00 ` Jag Raman
2022-06-15 15:51 ` [PULL 07/18] vfio-user: define vfio-user-server object Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 08/18] vfio-user: instantiate vfio-user context Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 09/18] vfio-user: find and init PCI device Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 10/18] vfio-user: run vfio-user context Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 11/18] vfio-user: handle PCI config space accesses Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 12/18] vfio-user: IOMMU support for remote device Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 13/18] vfio-user: handle DMA mappings Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 14/18] vfio-user: handle PCI BAR accesses Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 15/18] vfio-user: handle device interrupts Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 16/18] vfio-user: handle reset of remote device Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 17/18] linux-aio: fix unbalanced plugged counter in laio_io_unplug() Stefan Hajnoczi
2022-06-15 15:51 ` [PULL 18/18] linux-aio: explain why max batch is checked " Stefan Hajnoczi
2022-06-15 23:02 ` [PULL 00/18] Block patches Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Ytkpiao5Zk8Pj5Lq@redhat.com \
--to=berrange@redhat.com \
--cc=Qiuhao.Li@outlook.com \
--cc=alex.bennee@linaro.org \
--cc=alxndr@bu.edu \
--cc=armbru@redhat.com \
--cc=bleal@redhat.com \
--cc=bsd@redhat.com \
--cc=darren.kenny@oracle.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=elena.ufimtseva@oracle.com \
--cc=f4bug@amsat.org \
--cc=hreitz@redhat.com \
--cc=jag.raman@oracle.com \
--cc=john.g.johnson@oracle.com \
--cc=jusual@redhat.com \
--cc=kwolf@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mehta.aaru20@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
--cc=virtio-fs@redhat.com \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).