* Tue Jun 11 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 4.0.0-4.el8
- kvm-Disable-VXHS-support.patch [bz#1714937] - kvm-aarch64-Add-virt-rhel8.1.0-machine-type-for-ARM.patch [bz#1713735] - kvm-aarch64-Allow-ARM-VIRT-iommu-option-in-RHEL8.1-machi.patch [bz#1713735] - kvm-usb-call-reset-handler-before-updating-state.patch [bz#1713679] - kvm-usb-host-skip-reset-for-untouched-devices.patch [bz#1713679] - kvm-usb-host-avoid-libusb_set_configuration-calls.patch [bz#1713679] - kvm-aarch64-Compile-out-IOH3420.patch [bz#1627283] - kvm-vl-Fix-drive-blockdev-persistent-reservation-managem.patch [bz#1714891] - kvm-vl-Document-why-objects-are-delayed.patch [bz#1714891] - Resolves: bz#1627283 (Compile out IOH3420 on aarch64) - Resolves: bz#1713679 (Detached device when trying to upgrade USB device firmware when in doing USB Passthrough via QEMU) - Resolves: bz#1713735 (Allow ARM VIRT iommu option in RHEL8.1 machine) - Resolves: bz#1714891 (Guest with persistent reservation manager for a disk fails to start) - Resolves: bz#1714937 (Disable VXHS support)
This commit is contained in:
		
							parent
							
								
									115fdcbf37
								
							
						
					
					
						commit
						0544bace3c
					
				
							
								
								
									
										293
									
								
								kvm-Disable-VXHS-support.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								kvm-Disable-VXHS-support.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,293 @@ | |||||||
|  | From 517e4a2f490ff56c8b3fbf9a56c8d4a6e167c2b6 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Miroslav Rezanina <mrezanin@redhat.com> | ||||||
|  | Date: Wed, 29 May 2019 16:09:59 +0100 | ||||||
|  | Subject: [PATCH 1/9] Disable VXHS support | ||||||
|  | 
 | ||||||
|  | RH-Author: Miroslav Rezanina <mrezanin@redhat.com> | ||||||
|  | Message-id: <1559146199-30110-1-git-send-email-mrezanin@redhat.com> | ||||||
|  | Patchwork-id: 88273 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH] Disable VXHS support | ||||||
|  | Bugzilla: 1714937 | ||||||
|  | RH-Acked-by: Markus Armbruster <armbru@redhat.com> | ||||||
|  | RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com> | ||||||
|  | RH-Acked-by: Danilo de Paula <ddepaula@redhat.com> | ||||||
|  | 
 | ||||||
|  | From: Miroslav Rezanina <mrezanin@redhat.com> | ||||||
|  | 
 | ||||||
|  | As we ended our partnership with Veritas, we do not support VXHS anymore. | ||||||
|  | Reverting our downstream changes included in "Initial redhat commit". | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com> | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  block/Makefile.objs           |   2 +- | ||||||
|  |  block/vxhs.c                  | 119 ++++-------------------------------------- | ||||||
|  |  configure                     |  33 ++++++++++-- | ||||||
|  |  redhat/qemu-kvm.spec.template |  11 +--- | ||||||
|  |  4 files changed, 41 insertions(+), 124 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/block/Makefile.objs b/block/Makefile.objs
 | ||||||
|  | index f4cf03b..7a81892 100644
 | ||||||
|  | --- a/block/Makefile.objs
 | ||||||
|  | +++ b/block/Makefile.objs
 | ||||||
|  | @@ -30,7 +30,7 @@ block-obj-$(CONFIG_LIBNFS) += nfs.o
 | ||||||
|  |  block-obj-$(CONFIG_CURL) += curl.o | ||||||
|  |  block-obj-$(CONFIG_RBD) += rbd.o | ||||||
|  |  block-obj-$(CONFIG_GLUSTERFS) += gluster.o | ||||||
|  | -#block-obj-$(CONFIG_VXHS) += vxhs.o
 | ||||||
|  | +block-obj-$(CONFIG_VXHS) += vxhs.o
 | ||||||
|  |  block-obj-$(CONFIG_LIBSSH2) += ssh.o | ||||||
|  |  block-obj-y += accounting.o dirty-bitmap.o | ||||||
|  |  block-obj-y += write-threshold.o | ||||||
|  | diff --git a/block/vxhs.c b/block/vxhs.c
 | ||||||
|  | index 3dbb954..2e18229 100644
 | ||||||
|  | --- a/block/vxhs.c
 | ||||||
|  | +++ b/block/vxhs.c
 | ||||||
|  | @@ -9,8 +9,7 @@
 | ||||||
|  |   */ | ||||||
|  |   | ||||||
|  |  #include "qemu/osdep.h" | ||||||
|  | -#include "block/vxhs_shim.h"
 | ||||||
|  | -#include <gmodule.h>
 | ||||||
|  | +#include <qnio/qnio_api.h>
 | ||||||
|  |  #include <sys/param.h> | ||||||
|  |  #include "block/block_int.h" | ||||||
|  |  #include "block/qdict.h" | ||||||
|  | @@ -60,97 +59,6 @@ typedef struct BDRVVXHSState {
 | ||||||
|  |      char *tlscredsid; /* tlscredsid */ | ||||||
|  |  } BDRVVXHSState; | ||||||
|  |   | ||||||
|  | -#define LIBVXHS_FULL_PATHNAME "/usr/lib64/qemu/libvxhs.so.1"
 | ||||||
|  | -static bool libvxhs_loaded;
 | ||||||
|  | -static GModule *libvxhs_handle;
 | ||||||
|  | -
 | ||||||
|  | -static LibVXHSFuncs libvxhs;
 | ||||||
|  | -
 | ||||||
|  | -typedef struct LibVXHSSymbols {
 | ||||||
|  | -    const char *name;
 | ||||||
|  | -    gpointer *addr;
 | ||||||
|  | -} LibVXHSSymbols;
 | ||||||
|  | -
 | ||||||
|  | -static LibVXHSSymbols libvxhs_symbols[] = {
 | ||||||
|  | -    {"iio_init",        (gpointer *) &libvxhs.iio_init},
 | ||||||
|  | -    {"iio_fini",        (gpointer *) &libvxhs.iio_fini},
 | ||||||
|  | -    {"iio_min_version", (gpointer *) &libvxhs.iio_min_version},
 | ||||||
|  | -    {"iio_max_version", (gpointer *) &libvxhs.iio_max_version},
 | ||||||
|  | -    {"iio_open",        (gpointer *) &libvxhs.iio_open},
 | ||||||
|  | -    {"iio_close",       (gpointer *) &libvxhs.iio_close},
 | ||||||
|  | -    {"iio_writev",      (gpointer *) &libvxhs.iio_writev},
 | ||||||
|  | -    {"iio_readv",       (gpointer *) &libvxhs.iio_readv},
 | ||||||
|  | -    {"iio_ioctl",       (gpointer *) &libvxhs.iio_ioctl},
 | ||||||
|  | -    {NULL}
 | ||||||
|  | -};
 | ||||||
|  | -
 | ||||||
|  | -static void bdrv_vxhs_set_funcs(GModule *handle, Error **errp)
 | ||||||
|  | -{
 | ||||||
|  | -    int i = 0;
 | ||||||
|  | -    while (libvxhs_symbols[i].name) {
 | ||||||
|  | -        const char *name = libvxhs_symbols[i].name;
 | ||||||
|  | -        if (!g_module_symbol(handle, name, libvxhs_symbols[i].addr)) {
 | ||||||
|  | -            error_setg(errp, "%s could not be loaded from libvxhs: %s",
 | ||||||
|  | -                       name, g_module_error());
 | ||||||
|  | -            return;
 | ||||||
|  | -        }
 | ||||||
|  | -        ++i;
 | ||||||
|  | -    }
 | ||||||
|  | -}
 | ||||||
|  | -
 | ||||||
|  | -static void bdrv_vxhs_load_libs(Error **errp)
 | ||||||
|  | -{
 | ||||||
|  | -    Error *local_err = NULL;
 | ||||||
|  | -    int32_t ver;
 | ||||||
|  | -
 | ||||||
|  | -    if (libvxhs_loaded) {
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    if (!g_module_supported()) {
 | ||||||
|  | -        error_setg(errp, "modules are not supported on this platform: %s",
 | ||||||
|  | -                     g_module_error());
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    libvxhs_handle = g_module_open(LIBVXHS_FULL_PATHNAME,
 | ||||||
|  | -                                   G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
 | ||||||
|  | -    if (!libvxhs_handle) {
 | ||||||
|  | -        error_setg(errp, "The VXHS library from Veritas might not be installed "
 | ||||||
|  | -                   "correctly (%s)", g_module_error());
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    g_module_make_resident(libvxhs_handle);
 | ||||||
|  | -
 | ||||||
|  | -    bdrv_vxhs_set_funcs(libvxhs_handle, &local_err);
 | ||||||
|  | -    if (local_err) {
 | ||||||
|  | -        error_propagate(errp, local_err);
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    /* Now check to see if the libvxhs we are using here is supported
 | ||||||
|  | -     * by the loaded version */
 | ||||||
|  | -
 | ||||||
|  | -    ver = (*libvxhs.iio_min_version)();
 | ||||||
|  | -    if (ver > QNIO_VERSION) {
 | ||||||
|  | -        error_setg(errp, "Trying to use libvxhs version %"PRId32" API, but "
 | ||||||
|  | -                         "only %"PRId32" or newer is supported by %s",
 | ||||||
|  | -                          QNIO_VERSION, ver, LIBVXHS_FULL_PATHNAME);
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    ver = (*libvxhs.iio_max_version)();
 | ||||||
|  | -    if (ver < QNIO_VERSION) {
 | ||||||
|  | -        error_setg(errp, "Trying to use libvxhs version %"PRId32" API, but "
 | ||||||
|  | -                         "only %"PRId32" or earlier is supported by %s",
 | ||||||
|  | -                          QNIO_VERSION, ver, LIBVXHS_FULL_PATHNAME);
 | ||||||
|  | -        return;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  | -    libvxhs_loaded = true;
 | ||||||
|  | -}
 | ||||||
|  | -
 | ||||||
|  |  static void vxhs_complete_aio_bh(void *opaque) | ||||||
|  |  { | ||||||
|  |      VXHSAIOCB *acb = opaque; | ||||||
|  | @@ -318,7 +226,7 @@ static void vxhs_refresh_limits(BlockDriverState *bs, Error **errp)
 | ||||||
|  |  static int vxhs_init_and_ref(void) | ||||||
|  |  { | ||||||
|  |      if (vxhs_ref++ == 0) { | ||||||
|  | -        if ((*libvxhs.iio_init)(QNIO_VERSION, vxhs_iio_callback)) {
 | ||||||
|  | +        if (iio_init(QNIO_VERSION, vxhs_iio_callback)) {
 | ||||||
|  |              return -ENODEV; | ||||||
|  |          } | ||||||
|  |      } | ||||||
|  | @@ -328,7 +236,7 @@ static int vxhs_init_and_ref(void)
 | ||||||
|  |  static void vxhs_unref(void) | ||||||
|  |  { | ||||||
|  |      if (--vxhs_ref == 0) { | ||||||
|  | -        (*libvxhs.iio_fini)();
 | ||||||
|  | +        iio_fini();
 | ||||||
|  |      } | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | @@ -398,17 +306,8 @@ static int vxhs_open(BlockDriverState *bs, QDict *options,
 | ||||||
|  |      char *client_key = NULL; | ||||||
|  |      char *client_cert = NULL; | ||||||
|  |   | ||||||
|  | -    bdrv_vxhs_load_libs(&local_err);
 | ||||||
|  | -    if (local_err) {
 | ||||||
|  | -        error_propagate(errp, local_err);
 | ||||||
|  | -        /* on error, cannot cleanup because the iio_fini() function
 | ||||||
|  | -         * is not loaded */
 | ||||||
|  | -        return -EINVAL;
 | ||||||
|  | -    }
 | ||||||
|  | -
 | ||||||
|  |      ret = vxhs_init_and_ref(); | ||||||
|  |      if (ret < 0) { | ||||||
|  | -        error_setg(&local_err, "libvxhs iio_init() failed");
 | ||||||
|  |          ret = -EINVAL; | ||||||
|  |          goto out; | ||||||
|  |      } | ||||||
|  | @@ -493,8 +392,8 @@ static int vxhs_open(BlockDriverState *bs, QDict *options,
 | ||||||
|  |      /* | ||||||
|  |       * Open qnio channel to storage agent if not opened before | ||||||
|  |       */ | ||||||
|  | -    dev_handlep = (*libvxhs.iio_open)(of_vsa_addr, s->vdisk_guid, 0,
 | ||||||
|  | -                                      cacert, client_key, client_cert);
 | ||||||
|  | +    dev_handlep = iio_open(of_vsa_addr, s->vdisk_guid, 0,
 | ||||||
|  | +                           cacert, client_key, client_cert);
 | ||||||
|  |      if (dev_handlep == NULL) { | ||||||
|  |          trace_vxhs_open_iio_open(of_vsa_addr); | ||||||
|  |          ret = -ENODEV; | ||||||
|  | @@ -554,11 +453,11 @@ static BlockAIOCB *vxhs_aio_rw(BlockDriverState *bs, uint64_t offset,
 | ||||||
|  |   | ||||||
|  |      switch (iodir) { | ||||||
|  |      case VDISK_AIO_WRITE: | ||||||
|  | -            ret = (*libvxhs.iio_writev)(dev_handle, acb, qiov->iov, qiov->niov,
 | ||||||
|  | +            ret = iio_writev(dev_handle, acb, qiov->iov, qiov->niov,
 | ||||||
|  |                               offset, size, iio_flags); | ||||||
|  |              break; | ||||||
|  |      case VDISK_AIO_READ: | ||||||
|  | -            ret = (*libvxhs.iio_writev)(dev_handle, acb, qiov->iov, qiov->niov,
 | ||||||
|  | +            ret = iio_readv(dev_handle, acb, qiov->iov, qiov->niov,
 | ||||||
|  |                              offset, size, iio_flags); | ||||||
|  |              break; | ||||||
|  |      default: | ||||||
|  | @@ -607,7 +506,7 @@ static void vxhs_close(BlockDriverState *bs)
 | ||||||
|  |       * Close vDisk device | ||||||
|  |       */ | ||||||
|  |      if (s->vdisk_hostinfo.dev_handle) { | ||||||
|  | -        (*libvxhs.iio_close)(s->vdisk_hostinfo.dev_handle);
 | ||||||
|  | +        iio_close(s->vdisk_hostinfo.dev_handle);
 | ||||||
|  |          s->vdisk_hostinfo.dev_handle = NULL; | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | @@ -629,7 +528,7 @@ static int64_t vxhs_get_vdisk_stat(BDRVVXHSState *s)
 | ||||||
|  |      int ret = 0; | ||||||
|  |      void *dev_handle = s->vdisk_hostinfo.dev_handle; | ||||||
|  |   | ||||||
|  | -    ret = (*libvxhs.iio_ioctl)(dev_handle, IOR_VDISK_STAT, &vdisk_size, 0);
 | ||||||
|  | +    ret = iio_ioctl(dev_handle, IOR_VDISK_STAT, &vdisk_size, 0);
 | ||||||
|  |      if (ret < 0) { | ||||||
|  |          trace_vxhs_get_vdisk_stat_err(s->vdisk_guid, ret, errno); | ||||||
|  |          return -EIO; | ||||||
|  | diff --git a/configure b/configure
 | ||||||
|  | index d6d5912..8cb6740 100755
 | ||||||
|  | --- a/configure
 | ||||||
|  | +++ b/configure
 | ||||||
|  | @@ -3616,7 +3616,7 @@ fi
 | ||||||
|  |   | ||||||
|  |  glib_req_ver=2.40 | ||||||
|  |  glib_modules=gthread-2.0 | ||||||
|  | -if test "$modules" = yes -o "$vxhs" = yes; then
 | ||||||
|  | +if test "$modules" = yes; then
 | ||||||
|  |      glib_modules="$glib_modules gmodule-export-2.0" | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  | @@ -5760,6 +5760,33 @@ if compile_prog "" "" ; then
 | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  |  ########################################## | ||||||
|  | +# Veritas HyperScale block driver VxHS
 | ||||||
|  | +# Check if libvxhs is installed
 | ||||||
|  | +
 | ||||||
|  | +if test "$vxhs" != "no" ; then
 | ||||||
|  | +  cat > $TMPC <<EOF
 | ||||||
|  | +#include <stdint.h>
 | ||||||
|  | +#include <qnio/qnio_api.h>
 | ||||||
|  | +
 | ||||||
|  | +void *vxhs_callback;
 | ||||||
|  | +
 | ||||||
|  | +int main(void) {
 | ||||||
|  | +    iio_init(QNIO_VERSION, vxhs_callback);
 | ||||||
|  | +    return 0;
 | ||||||
|  | +}
 | ||||||
|  | +EOF
 | ||||||
|  | +  vxhs_libs="-lvxhs -lssl"
 | ||||||
|  | +  if compile_prog "" "$vxhs_libs" ; then
 | ||||||
|  | +    vxhs=yes
 | ||||||
|  | +  else
 | ||||||
|  | +    if test "$vxhs" = "yes" ; then
 | ||||||
|  | +      feature_not_found "vxhs block device" "Install libvxhs See github"
 | ||||||
|  | +    fi
 | ||||||
|  | +    vxhs=no
 | ||||||
|  | +  fi
 | ||||||
|  | +fi
 | ||||||
|  | +
 | ||||||
|  | +##########################################
 | ||||||
|  |  # check for _Static_assert() | ||||||
|  |   | ||||||
|  |  have_static_assert=no | ||||||
|  | @@ -7195,8 +7222,8 @@ elif test "$pthread_setname_np_wo_tid" = "yes" ; then
 | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  |  if test "$vxhs" = "yes" ; then | ||||||
|  | -  echo "CONFIG_VXHS=m" >> $config_host_mak
 | ||||||
|  | -  echo "VXHS_LIBS= -lssl" >> $config_host_mak
 | ||||||
|  | +  echo "CONFIG_VXHS=y" >> $config_host_mak
 | ||||||
|  | +  echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
 | ||||||
|  |  fi | ||||||
|  |   | ||||||
|  |  if test "$libpmem" = "yes" ; then | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										56
									
								
								kvm-aarch64-Add-virt-rhel8.1.0-machine-type-for-ARM.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								kvm-aarch64-Add-virt-rhel8.1.0-machine-type-for-ARM.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | From c3e39ef14e99f903b95fa051936f40ebd6c35484 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Date: Mon, 3 Jun 2019 19:17:39 +0100 | ||||||
|  | Subject: [PATCH 2/9] aarch64: Add virt-rhel8.1.0 machine type for ARM | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Message-id: <20190603191740.32665-2-eric.auger@redhat.com> | ||||||
|  | Patchwork-id: 88461 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 1/2] aarch64: Add virt-rhel8.1.0 machine type for ARM | ||||||
|  | Bugzilla: 1713735 | ||||||
|  | RH-Acked-by: Andrew Jones <drjones@redhat.com> | ||||||
|  | RH-Acked-by: Laszlo Ersek <lersek@redhat.com> | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | 
 | ||||||
|  | This patch adds a new machine type, virt-rhel8.1.0, for QEMU rhel-av. | ||||||
|  | This machine type is based off 4.0 with the exception that it removes | ||||||
|  | support for dynamic sysbus devices: VFIO_CALXEDA_XGMAC, VFIO_AMD_XGBE, and | ||||||
|  | RAMFB_DEVICE because downstream RHEL doesn't support these devices. IOMMU | ||||||
|  | instantiation still is disabled but will be enabled in subsequent patches. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Eric Auger <eric.auger@redhat.com> | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  hw/arm/virt.c | 6 +++--- | ||||||
|  |  1 file changed, 3 insertions(+), 3 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/hw/arm/virt.c b/hw/arm/virt.c
 | ||||||
|  | index 5602d9f..9316a8d 100644
 | ||||||
|  | --- a/hw/arm/virt.c
 | ||||||
|  | +++ b/hw/arm/virt.c
 | ||||||
|  | @@ -2158,7 +2158,7 @@ static void rhel_machine_init(void)
 | ||||||
|  |  } | ||||||
|  |  type_init(rhel_machine_init); | ||||||
|  |   | ||||||
|  | -static void rhel800_virt_instance_init(Object *obj)
 | ||||||
|  | +static void rhel810_virt_instance_init(Object *obj)
 | ||||||
|  |  { | ||||||
|  |      VirtMachineState *vms = VIRT_MACHINE(obj); | ||||||
|  |      VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms); | ||||||
|  | @@ -2204,8 +2204,8 @@ static void rhel800_virt_instance_init(Object *obj)
 | ||||||
|  |      vms->irqmap=a15irqmap; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -static void rhel800_virt_options(MachineClass *mc)
 | ||||||
|  | +static void rhel810_virt_options(MachineClass *mc)
 | ||||||
|  |  { | ||||||
|  |      compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); | ||||||
|  |  } | ||||||
|  | -DEFINE_RHEL_MACHINE_AS_LATEST(8, 0, 0)
 | ||||||
|  | +DEFINE_RHEL_MACHINE_AS_LATEST(8, 1, 0)
 | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,66 @@ | |||||||
|  | From 59a46d11cad715b082d30c0de33317466a9bab9e Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Date: Mon, 3 Jun 2019 19:17:40 +0100 | ||||||
|  | Subject: [PATCH 3/9] aarch64: Allow ARM VIRT iommu option in RHEL8.1 machine | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Message-id: <20190603191740.32665-3-eric.auger@redhat.com> | ||||||
|  | Patchwork-id: 88460 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 2/2] aarch64: Allow ARM VIRT iommu option in RHEL8.1 machine | ||||||
|  | Bugzilla: 1713735 | ||||||
|  | RH-Acked-by: Andrew Jones <drjones@redhat.com> | ||||||
|  | RH-Acked-by: Laszlo Ersek <lersek@redhat.com> | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | 
 | ||||||
|  | This patch restores the ARM VIRT iommu option historically | ||||||
|  | introduced in qemu 3.0 and disabled in rhel8.0 (RHBZ#1656504 / | ||||||
|  | commit 7bfdb4cd2b49) as we did not have support of the feature | ||||||
|  | at libvirt level. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Eric Auger <eric.auger@redhat.com> | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  hw/arm/virt.c | 9 ++++++--- | ||||||
|  |  1 file changed, 6 insertions(+), 3 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/hw/arm/virt.c b/hw/arm/virt.c
 | ||||||
|  | index 9316a8d..670fa10 100644
 | ||||||
|  | --- a/hw/arm/virt.c
 | ||||||
|  | +++ b/hw/arm/virt.c
 | ||||||
|  | @@ -1785,7 +1785,6 @@ static void virt_set_gic_version(Object *obj, const char *value, Error **errp)
 | ||||||
|  |      } | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -#if 0 /* Disabled for Red Hat Enterprise Linux */
 | ||||||
|  |  static char *virt_get_iommu(Object *obj, Error **errp) | ||||||
|  |  { | ||||||
|  |      VirtMachineState *vms = VIRT_MACHINE(obj); | ||||||
|  | @@ -1813,7 +1812,6 @@ static void virt_set_iommu(Object *obj, const char *value, Error **errp)
 | ||||||
|  |          error_append_hint(errp, "Valid values are none, smmuv3.\n"); | ||||||
|  |      } | ||||||
|  |  } | ||||||
|  | -#endif /* disabled for RHEL */
 | ||||||
|  |   | ||||||
|  |  static CpuInstanceProperties | ||||||
|  |  virt_cpu_index_to_props(MachineState *ms, unsigned cpu_index) | ||||||
|  | @@ -2198,8 +2196,13 @@ static void rhel810_virt_instance_init(Object *obj)
 | ||||||
|  |                                          NULL); | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | -    /* IOMMU is disabled by default and non-configurable for RHEL */
 | ||||||
|  | +    /* Default disallows iommu instantiation */
 | ||||||
|  |      vms->iommu = VIRT_IOMMU_NONE; | ||||||
|  | +    object_property_add_str(obj, "iommu", virt_get_iommu, virt_set_iommu, NULL);
 | ||||||
|  | +    object_property_set_description(obj, "iommu",
 | ||||||
|  | +                                    "Set the IOMMU type. "
 | ||||||
|  | +                                    "Valid values are none and smmuv3",
 | ||||||
|  | +                                    NULL);
 | ||||||
|  |   | ||||||
|  |      vms->irqmap=a15irqmap; | ||||||
|  |  } | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										54
									
								
								kvm-aarch64-Compile-out-IOH3420.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								kvm-aarch64-Compile-out-IOH3420.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | From 59097210f25bfcabc82c9989d3c083a6febeadd6 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Date: Tue, 4 Jun 2019 15:23:26 +0100 | ||||||
|  | Subject: [PATCH 7/9] aarch64: Compile out IOH3420 | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Auger Eric <eric.auger@redhat.com> | ||||||
|  | Message-id: <20190604152326.18510-1-eric.auger@redhat.com> | ||||||
|  | Patchwork-id: 88525 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH v2] aarch64: Compile out IOH3420 | ||||||
|  | Bugzilla: 1627283 | ||||||
|  | RH-Acked-by: Andrew Jones <drjones@redhat.com> | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com> | ||||||
|  | RH-Acked-by: Laszlo Ersek <lersek@redhat.com> | ||||||
|  | 
 | ||||||
|  | BZ: 1627283 | ||||||
|  | BRANCH: rhel-av-8.1.0/master-4.0.0 | ||||||
|  | UPSTREAM: N/A | ||||||
|  | BREW: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=21989313 | ||||||
|  | TEST: On Sabre, no ioh3420 available | ||||||
|  | 
 | ||||||
|  | IOH3420 is not used on aarch64 or arm as we prefer the generic root port | ||||||
|  | so let's compile it out. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Eric Auger <eric.auger@redhat.com> | ||||||
|  | 
 | ||||||
|  | ---
 | ||||||
|  | 
 | ||||||
|  | v1 -> v2 | ||||||
|  | - do not touch arm-softmmu.mak
 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  default-configs/aarch64-rh-devices.mak | 1 - | ||||||
|  |  1 file changed, 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/default-configs/aarch64-rh-devices.mak b/default-configs/aarch64-rh-devices.mak
 | ||||||
|  | index 13ce7c7..224e29b 100644
 | ||||||
|  | --- a/default-configs/aarch64-rh-devices.mak
 | ||||||
|  | +++ b/default-configs/aarch64-rh-devices.mak
 | ||||||
|  | @@ -12,7 +12,6 @@ CONFIG_EDID=y
 | ||||||
|  |  CONFIG_FW_CFG_DMA=y | ||||||
|  |  CONFIG_GPIO_KEY=y | ||||||
|  |  CONFIG_I2C=y | ||||||
|  | -CONFIG_IOH3420=y
 | ||||||
|  |  CONFIG_IVSHMEM=y | ||||||
|  |  CONFIG_KVM=y | ||||||
|  |  CONFIG_LINUX=y | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										47
									
								
								kvm-usb-call-reset-handler-before-updating-state.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								kvm-usb-call-reset-handler-before-updating-state.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | From 646f497c8e1dcea5c1ec8731693e3f06be8f6cc2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Date: Tue, 4 Jun 2019 07:13:39 +0100 | ||||||
|  | Subject: [PATCH 4/9] usb: call reset handler before updating state | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: <20190604071341.3432-2-kraxel@redhat.com> | ||||||
|  | Patchwork-id: 88478 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 1/3] usb: call reset handler before updating state | ||||||
|  | Bugzilla: 1713679 | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com> | ||||||
|  | RH-Acked-by: Max Reitz <mreitz@redhat.com> | ||||||
|  | 
 | ||||||
|  | That way the device reset handler can see what | ||||||
|  | the before-reset state of the device is. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: 20190522094702.17619-2-kraxel@redhat.com | ||||||
|  | (cherry picked from commit 7ed4657396add28382081a15557c78cd480c1cf1) | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  hw/usb/core.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/hw/usb/core.c b/hw/usb/core.c
 | ||||||
|  | index 8fbd9c7..3ab48a1 100644
 | ||||||
|  | --- a/hw/usb/core.c
 | ||||||
|  | +++ b/hw/usb/core.c
 | ||||||
|  | @@ -87,10 +87,10 @@ void usb_device_reset(USBDevice *dev)
 | ||||||
|  |      if (dev == NULL || !dev->attached) { | ||||||
|  |          return; | ||||||
|  |      } | ||||||
|  | +    usb_device_handle_reset(dev);
 | ||||||
|  |      dev->remote_wakeup = 0; | ||||||
|  |      dev->addr = 0; | ||||||
|  |      dev->state = USB_STATE_DEFAULT; | ||||||
|  | -    usb_device_handle_reset(dev);
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  void usb_wakeup(USBEndpoint *ep, unsigned int stream) | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										68
									
								
								kvm-usb-host-avoid-libusb_set_configuration-calls.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								kvm-usb-host-avoid-libusb_set_configuration-calls.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | From a92cfe1254f947c32f15ebb1f81b825076c5625e Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Date: Tue, 4 Jun 2019 07:13:41 +0100 | ||||||
|  | Subject: [PATCH 6/9] usb-host: avoid libusb_set_configuration calls | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: <20190604071341.3432-4-kraxel@redhat.com> | ||||||
|  | Patchwork-id: 88477 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 3/3] usb-host: avoid libusb_set_configuration calls | ||||||
|  | Bugzilla: 1713679 | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com> | ||||||
|  | RH-Acked-by: Max Reitz <mreitz@redhat.com> | ||||||
|  | 
 | ||||||
|  | Seems some devices become confused when we call | ||||||
|  | libusb_set_configuration().  So before calling the function check | ||||||
|  | whenever the device has multiple configurations in the first place, and | ||||||
|  | in case it hasn't (which is the case for the majority of devices) simply | ||||||
|  | skip the call as it will have no effect anyway. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: 20190522094702.17619-4-kraxel@redhat.com | ||||||
|  | (cherry picked from commit bfe44898848614cfcb3a269bc965afbe1f0f331c) | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  hw/usb/host-libusb.c | 18 ++++++++++-------- | ||||||
|  |  1 file changed, 10 insertions(+), 8 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
 | ||||||
|  | index 4e9a45a..4f765d7 100644
 | ||||||
|  | --- a/hw/usb/host-libusb.c
 | ||||||
|  | +++ b/hw/usb/host-libusb.c
 | ||||||
|  | @@ -1225,19 +1225,21 @@ static void usb_host_set_address(USBHostDevice *s, int addr)
 | ||||||
|  |   | ||||||
|  |  static void usb_host_set_config(USBHostDevice *s, int config, USBPacket *p) | ||||||
|  |  { | ||||||
|  | -    int rc;
 | ||||||
|  | +    int rc = 0;
 | ||||||
|  |   | ||||||
|  |      trace_usb_host_set_config(s->bus_num, s->addr, config); | ||||||
|  |   | ||||||
|  |      usb_host_release_interfaces(s); | ||||||
|  | -    rc = libusb_set_configuration(s->dh, config);
 | ||||||
|  | -    if (rc != 0) {
 | ||||||
|  | -        usb_host_libusb_error("libusb_set_configuration", rc);
 | ||||||
|  | -        p->status = USB_RET_STALL;
 | ||||||
|  | -        if (rc == LIBUSB_ERROR_NO_DEVICE) {
 | ||||||
|  | -            usb_host_nodev(s);
 | ||||||
|  | +    if (s->ddesc.bNumConfigurations != 1) {
 | ||||||
|  | +        rc = libusb_set_configuration(s->dh, config);
 | ||||||
|  | +        if (rc != 0) {
 | ||||||
|  | +            usb_host_libusb_error("libusb_set_configuration", rc);
 | ||||||
|  | +            p->status = USB_RET_STALL;
 | ||||||
|  | +            if (rc == LIBUSB_ERROR_NO_DEVICE) {
 | ||||||
|  | +                usb_host_nodev(s);
 | ||||||
|  | +            }
 | ||||||
|  | +            return;
 | ||||||
|  |          } | ||||||
|  | -        return;
 | ||||||
|  |      } | ||||||
|  |      p->status = usb_host_claim_interfaces(s, config); | ||||||
|  |      if (p->status != USB_RET_SUCCESS) { | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										46
									
								
								kvm-usb-host-skip-reset-for-untouched-devices.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								kvm-usb-host-skip-reset-for-untouched-devices.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | From 507b4bb7a63544c72e8ef1713ada9ff7c2e0024f Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Date: Tue, 4 Jun 2019 07:13:40 +0100 | ||||||
|  | Subject: [PATCH 5/9] usb-host: skip reset for untouched devices | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: <20190604071341.3432-3-kraxel@redhat.com> | ||||||
|  | Patchwork-id: 88479 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 2/3] usb-host: skip reset for untouched devices | ||||||
|  | Bugzilla: 1713679 | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com> | ||||||
|  | RH-Acked-by: Max Reitz <mreitz@redhat.com> | ||||||
|  | 
 | ||||||
|  | If the guest didn't talk to the device yet, skip the reset. | ||||||
|  | Without this usb-host devices get resetted a number of times | ||||||
|  | at boot time for no good reason. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> | ||||||
|  | Message-id: 20190522094702.17619-3-kraxel@redhat.com | ||||||
|  | (cherry picked from commit 65f14ab98da1da920f98ee8734dc1588b01d6b2b) | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  hw/usb/host-libusb.c | 3 +++ | ||||||
|  |  1 file changed, 3 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
 | ||||||
|  | index 67b7465..4e9a45a 100644
 | ||||||
|  | --- a/hw/usb/host-libusb.c
 | ||||||
|  | +++ b/hw/usb/host-libusb.c
 | ||||||
|  | @@ -1459,6 +1459,9 @@ static void usb_host_handle_reset(USBDevice *udev)
 | ||||||
|  |      if (!s->allow_guest_reset) { | ||||||
|  |          return; | ||||||
|  |      } | ||||||
|  | +    if (udev->addr == 0) {
 | ||||||
|  | +        return;
 | ||||||
|  | +    }
 | ||||||
|  |   | ||||||
|  |      trace_usb_host_reset(s->bus_num, s->addr); | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										66
									
								
								kvm-vl-Document-why-objects-are-delayed.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								kvm-vl-Document-why-objects-are-delayed.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | |||||||
|  | From d5a193a4b838b00b064d441da5c038a5ff251f8b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Date: Thu, 6 Jun 2019 19:31:39 +0100 | ||||||
|  | Subject: [PATCH 9/9] vl: Document why objects are delayed | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Type: text/plain; charset=UTF-8 | ||||||
|  | Content-Transfer-Encoding: 8bit | ||||||
|  | 
 | ||||||
|  | RH-Author: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Message-id: <20190606193139.31976-3-armbru@redhat.com> | ||||||
|  | Patchwork-id: 88610 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 2/2] vl: Document why objects are delayed | ||||||
|  | Bugzilla: 1714891 | ||||||
|  | RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com> | ||||||
|  | RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com> | ||||||
|  | RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||||||
|  | 
 | ||||||
|  | Objects should not be "delayed" without a reason, as the previous | ||||||
|  | commit demonstrates.  The remaining ones have reasons.  State them. | ||||||
|  | and demand future ones come with such a statement. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Message-Id: <20190604151251.9903-3-armbru@redhat.com> | ||||||
|  | Reviewed-by: Michal Privoznik <mprivozn@redhat.com> | ||||||
|  | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | ||||||
|  | (cherry picked from commit edfb4389c26cbfd873707306024130bda6049780) | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  vl.c | 10 ++++++++-- | ||||||
|  |  1 file changed, 8 insertions(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/vl.c b/vl.c
 | ||||||
|  | index 627e37d..686c639 100644
 | ||||||
|  | --- a/vl.c
 | ||||||
|  | +++ b/vl.c
 | ||||||
|  | @@ -2852,19 +2852,25 @@ static bool object_create_initial(const char *type, QemuOpts *opts)
 | ||||||
|  |          exit(0); | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | +    /*
 | ||||||
|  | +     * Objects should not be made "delayed" without a reason.  If you
 | ||||||
|  | +     * add one, state the reason in a comment!
 | ||||||
|  | +     */
 | ||||||
|  | +
 | ||||||
|  | +    /* Reason: rng-egd property "chardev" */
 | ||||||
|  |      if (g_str_equal(type, "rng-egd")) { | ||||||
|  |          return false; | ||||||
|  |      } | ||||||
|  |   | ||||||
|  |  #if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) | ||||||
|  | +    /* Reason: cryptodev-vhost-user property "chardev" */
 | ||||||
|  |      if (g_str_equal(type, "cryptodev-vhost-user")) { | ||||||
|  |          return false; | ||||||
|  |      } | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |      /* | ||||||
|  | -     * return false for concrete netfilters since
 | ||||||
|  | -     * they depend on netdevs already existing
 | ||||||
|  | +     * Reason: filter-* property "netdev" etc.
 | ||||||
|  |       */ | ||||||
|  |      if (g_str_equal(type, "filter-buffer") || | ||||||
|  |          g_str_equal(type, "filter-dump") || | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
| @ -0,0 +1,66 @@ | |||||||
|  | From 6473a5d45b4ae75d5eef64b7b5dcd6735f498fb3 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Date: Thu, 6 Jun 2019 19:31:38 +0100 | ||||||
|  | Subject: [PATCH 8/9] vl: Fix -drive / -blockdev persistent reservation | ||||||
|  |  management | ||||||
|  | 
 | ||||||
|  | RH-Author: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Message-id: <20190606193139.31976-2-armbru@redhat.com> | ||||||
|  | Patchwork-id: 88609 | ||||||
|  | O-Subject: [RHEL-AV-8.1.0 qemu-kvm PATCH 1/2] vl: Fix -drive / -blockdev persistent reservation management | ||||||
|  | Bugzilla: 1714891 | ||||||
|  | RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com> | ||||||
|  | RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com> | ||||||
|  | RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com> | ||||||
|  | 
 | ||||||
|  | qemu-system-FOO's main() acts on command line arguments in its own | ||||||
|  | idiosyncratic order.  There's not much method to its madness. | ||||||
|  | Whenever we find a case where one kind of command line argument needs | ||||||
|  | to refer to something created for another kind later, we rejigger the | ||||||
|  | order. | ||||||
|  | 
 | ||||||
|  | Recent commit cda4aa9a5a "vl: Create block backends before setting | ||||||
|  | machine properties" was such a rejigger.  Block backends are now | ||||||
|  | created before "delayed" objects.  This broke persistent reservation | ||||||
|  | management.  Reproducer: | ||||||
|  | 
 | ||||||
|  |     $ qemu-system-x86_64 -object pr-manager-helper,id=pr-helper0,path=/tmp/pr-helper0.sock-drive -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2 | ||||||
|  |     qemu-system-x86_64: -drive file=/dev/mapper/crypt,file.pr-manager=pr-helper0,format=raw,if=none,id=drive-scsi0-0-0-2: No persistent reservation manager with id 'pr-helper0' | ||||||
|  | 
 | ||||||
|  | The delayed pr-manager-helper object is created too late for use by | ||||||
|  | -drive or -blockdev.  Normal objects are still created in time.
 | ||||||
|  | 
 | ||||||
|  | pr-manager-helper has always been a delayed object (commit 7c9e527659 | ||||||
|  | "scsi, file-posix: add support for persistent reservation | ||||||
|  | management").  Turns out there's no real reason for that.  Make it a | ||||||
|  | normal object. | ||||||
|  | 
 | ||||||
|  | Fixes: cda4aa9a5a08777cf13e164c0543bd4888b8adce | ||||||
|  | Signed-off-by: Markus Armbruster <armbru@redhat.com> | ||||||
|  | Message-Id: <20190604151251.9903-2-armbru@redhat.com> | ||||||
|  | Reviewed-by: Michal Privoznik <mprivozn@redhat.com> | ||||||
|  | Cc: qemu-stable@nongnu.org | ||||||
|  | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | ||||||
|  | (cherry picked from commit 9ea18ed25a36527167e9676f25d983df5e7f76e6) | ||||||
|  | Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  vl.c | 3 +-- | ||||||
|  |  1 file changed, 1 insertion(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/vl.c b/vl.c
 | ||||||
|  | index 2b95925..627e37d 100644
 | ||||||
|  | --- a/vl.c
 | ||||||
|  | +++ b/vl.c
 | ||||||
|  | @@ -2852,8 +2852,7 @@ static bool object_create_initial(const char *type, QemuOpts *opts)
 | ||||||
|  |          exit(0); | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | -    if (g_str_equal(type, "rng-egd") ||
 | ||||||
|  | -        g_str_has_prefix(type, "pr-manager-")) {
 | ||||||
|  | +    if (g_str_equal(type, "rng-egd")) {
 | ||||||
|  |          return false; | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | -- 
 | ||||||
|  | 1.8.3.1 | ||||||
|  | 
 | ||||||
| @ -8,7 +8,6 @@ | |||||||
| %global have_gluster  1 | %global have_gluster  1 | ||||||
| %global have_kvm_setup 0 | %global have_kvm_setup 0 | ||||||
| %global have_memlock_limits 0 | %global have_memlock_limits 0 | ||||||
| %global have_vxhs     0 |  | ||||||
| 
 | 
 | ||||||
| %ifnarch %{ix86} x86_64 | %ifnarch %{ix86} x86_64 | ||||||
|     %global have_usbredir 0 |     %global have_usbredir 0 | ||||||
| @ -25,7 +24,6 @@ | |||||||
| %endif | %endif | ||||||
| %ifarch x86_64 | %ifarch x86_64 | ||||||
|     %global kvm_target    x86_64 |     %global kvm_target    x86_64 | ||||||
|     %global have_vxhs    1 |  | ||||||
| %else | %else | ||||||
|     %global have_spice   0 |     %global have_spice   0 | ||||||
|     %global have_opengl  0 |     %global have_opengl  0 | ||||||
| @ -69,7 +67,7 @@ Obsoletes: %1-rhev | |||||||
| Summary: QEMU is a machine emulator and virtualizer | Summary: QEMU is a machine emulator and virtualizer | ||||||
| Name: qemu-kvm | Name: qemu-kvm | ||||||
| Version: 4.0.0 | Version: 4.0.0 | ||||||
| Release: 3%{?dist} | Release: 4%{?dist} | ||||||
| # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped | # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped | ||||||
| Epoch: 15 | Epoch: 15 | ||||||
| License: GPLv2 and GPLv2+ and CC-BY | License: GPLv2 and GPLv2+ and CC-BY | ||||||
| @ -138,6 +136,24 @@ Patch25: kvm-compat-Generic-hw_compat_rhel_8_0.patch | |||||||
| Patch26: kvm-redhat-sync-pseries-rhel7.6.0-with-rhel-av-8.0.1.patch | Patch26: kvm-redhat-sync-pseries-rhel7.6.0-with-rhel-av-8.0.1.patch | ||||||
| # For bz#1709726 - Forward and backward migration failed with "qemu-kvm: error while loading state for instance 0x0 of device 'spapr'" | # For bz#1709726 - Forward and backward migration failed with "qemu-kvm: error while loading state for instance 0x0 of device 'spapr'" | ||||||
| Patch27: kvm-redhat-define-pseries-rhel8.1.0-machine-type.patch | Patch27: kvm-redhat-define-pseries-rhel8.1.0-machine-type.patch | ||||||
|  | # For bz#1714937 - Disable VXHS support | ||||||
|  | Patch28: kvm-Disable-VXHS-support.patch | ||||||
|  | # For bz#1713735 - Allow ARM VIRT iommu option in RHEL8.1 machine | ||||||
|  | Patch29: kvm-aarch64-Add-virt-rhel8.1.0-machine-type-for-ARM.patch | ||||||
|  | # For bz#1713735 - Allow ARM VIRT iommu option in RHEL8.1 machine | ||||||
|  | Patch30: kvm-aarch64-Allow-ARM-VIRT-iommu-option-in-RHEL8.1-machi.patch | ||||||
|  | # For bz#1713679 - Detached device when trying to upgrade USB device firmware when in doing USB Passthrough via QEMU | ||||||
|  | Patch31: kvm-usb-call-reset-handler-before-updating-state.patch | ||||||
|  | # For bz#1713679 - Detached device when trying to upgrade USB device firmware when in doing USB Passthrough via QEMU | ||||||
|  | Patch32: kvm-usb-host-skip-reset-for-untouched-devices.patch | ||||||
|  | # For bz#1713679 - Detached device when trying to upgrade USB device firmware when in doing USB Passthrough via QEMU | ||||||
|  | Patch33: kvm-usb-host-avoid-libusb_set_configuration-calls.patch | ||||||
|  | # For bz#1627283 - Compile out IOH3420 on aarch64 | ||||||
|  | Patch34: kvm-aarch64-Compile-out-IOH3420.patch | ||||||
|  | # For bz#1714891 - Guest with persistent reservation manager for a disk fails to start | ||||||
|  | Patch35: kvm-vl-Fix-drive-blockdev-persistent-reservation-managem.patch | ||||||
|  | # For bz#1714891 - Guest with persistent reservation manager for a disk fails to start | ||||||
|  | Patch36: kvm-vl-Document-why-objects-are-delayed.patch | ||||||
| 
 | 
 | ||||||
| BuildRequires: zlib-devel | BuildRequires: zlib-devel | ||||||
| BuildRequires: glib2-devel | BuildRequires: glib2-devel | ||||||
| @ -430,9 +446,6 @@ buildldflags="VL_LDFLAGS=-Wl,--build-id" | |||||||
| 
 | 
 | ||||||
| %global block_drivers_list qcow2,raw,file,host_device,nbd,iscsi,rbd,blkdebug,luks,null-co,nvme,copy-on-read,throttle | %global block_drivers_list qcow2,raw,file,host_device,nbd,iscsi,rbd,blkdebug,luks,null-co,nvme,copy-on-read,throttle | ||||||
| 
 | 
 | ||||||
| %if 0%{have_vxhs} |  | ||||||
|     %global block_drivers_list %{block_drivers_list},vxhs |  | ||||||
| %endif |  | ||||||
| %if 0%{have_gluster} | %if 0%{have_gluster} | ||||||
|     %global block_drivers_list %{block_drivers_list},gluster |     %global block_drivers_list %{block_drivers_list},gluster | ||||||
| %endif | %endif | ||||||
| @ -492,11 +505,6 @@ buildldflags="VL_LDFLAGS=-Wl,--build-id" | |||||||
|   --disable-usb-redir \ |   --disable-usb-redir \ | ||||||
| %endif | %endif | ||||||
|   --disable-tcmalloc \ |   --disable-tcmalloc \ | ||||||
| %if 0%{have_vxhs} |  | ||||||
|   --enable-vxhs \ |  | ||||||
| %else |  | ||||||
|   --disable-vxhs \ |  | ||||||
| %endif |  | ||||||
| %ifarch x86_64 | %ifarch x86_64 | ||||||
|   --enable-libpmem \ |   --enable-libpmem \ | ||||||
| %else | %else | ||||||
| @ -543,6 +551,7 @@ buildldflags="VL_LDFLAGS=-Wl,--build-id" | |||||||
|   --enable-trace-backend=dtrace \ |   --enable-trace-backend=dtrace \ | ||||||
|   --disable-vde \ |   --disable-vde \ | ||||||
|   --disable-vhost-scsi \ |   --disable-vhost-scsi \ | ||||||
|  |   --disable-vxhs \ | ||||||
|   --disable-virtfs \ |   --disable-virtfs \ | ||||||
|   --disable-vnc-jpeg \ |   --disable-vnc-jpeg \ | ||||||
|   --disable-vte \ |   --disable-vte \ | ||||||
| @ -1064,6 +1073,27 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Tue Jun 11 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 4.0.0-4.el8 | ||||||
|  | - kvm-Disable-VXHS-support.patch [bz#1714937] | ||||||
|  | - kvm-aarch64-Add-virt-rhel8.1.0-machine-type-for-ARM.patch [bz#1713735] | ||||||
|  | - kvm-aarch64-Allow-ARM-VIRT-iommu-option-in-RHEL8.1-machi.patch [bz#1713735] | ||||||
|  | - kvm-usb-call-reset-handler-before-updating-state.patch [bz#1713679] | ||||||
|  | - kvm-usb-host-skip-reset-for-untouched-devices.patch [bz#1713679] | ||||||
|  | - kvm-usb-host-avoid-libusb_set_configuration-calls.patch [bz#1713679] | ||||||
|  | - kvm-aarch64-Compile-out-IOH3420.patch [bz#1627283] | ||||||
|  | - kvm-vl-Fix-drive-blockdev-persistent-reservation-managem.patch [bz#1714891] | ||||||
|  | - kvm-vl-Document-why-objects-are-delayed.patch [bz#1714891] | ||||||
|  | - Resolves: bz#1627283 | ||||||
|  |   (Compile out IOH3420 on aarch64) | ||||||
|  | - Resolves: bz#1713679 | ||||||
|  |   (Detached device when trying to upgrade USB device firmware when in doing USB Passthrough via QEMU) | ||||||
|  | - Resolves: bz#1713735 | ||||||
|  |   (Allow ARM VIRT iommu option in RHEL8.1 machine) | ||||||
|  | - Resolves: bz#1714891 | ||||||
|  |   (Guest with persistent reservation manager for a disk fails to start) | ||||||
|  | - Resolves: bz#1714937 | ||||||
|  |   (Disable VXHS support) | ||||||
|  | 
 | ||||||
| * Tue May 28 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 4.0.0-3.el8 | * Tue May 28 2019 Danilo Cesar Lemes de Paula <ddepaula@redhat.com> - 4.0.0-3.el8 | ||||||
| - kvm-redhat-fix-cut-n-paste-garbage-in-hw_compat-comments.patch [bz#1709726] | - kvm-redhat-fix-cut-n-paste-garbage-in-hw_compat-comments.patch [bz#1709726] | ||||||
| - kvm-compat-Generic-hw_compat_rhel_8_0.patch [bz#1709726] | - kvm-compat-Generic-hw_compat_rhel_8_0.patch [bz#1709726] | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user