qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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 :|



  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).