SHA256
1
0
forked from pool/qemu

Accepting request 879686 from home:bfrogers:branches:Virtualization

- Fix s390x "mediated device is in use" error condition
  (bsc#1183634)
  update-linux-headers-Include-const.h.patch
  Update-linux-headers-to-5.11-rc2.patch
  vfio-ccw-Connect-the-device-request-noti.patch

OBS-URL: https://build.opensuse.org/request/show/879686
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=630
This commit is contained in:
Bruce Rogers 2021-03-17 13:23:38 +00:00 committed by Git OBS Bridge
parent 2746ce73b5
commit 0cf745d181
6 changed files with 1265 additions and 70 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:b7ff5cf2fc82b361e7b07710e20758d230d543d7d1c967bdf131b5793573207e oid sha256:5eea7b1721613d6f843d6e94469431d4382e88e106bff9ac121acfcab88df9fc
size 68660 size 79240

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Wed Mar 17 13:07:33 UTC 2021 - Bruce Rogers <brogers@suse.com>
- Fix s390x "mediated device is in use" error condition
(bsc#1183634)
update-linux-headers-Include-const.h.patch
Update-linux-headers-to-5.11-rc2.patch
vfio-ccw-Connect-the-device-request-noti.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Mar 16 22:33:26 UTC 2021 - Bruce Rogers <brogers@suse.com> Tue Mar 16 22:33:26 UTC 2021 - Bruce Rogers <brogers@suse.com>

142
qemu.spec
View File

@ -150,68 +150,71 @@ Patch00014: target-arm-Introduce-PREDDESC-field-defi.patch
Patch00015: target-arm-Update-PFIRST-PNEXT-for-pred_.patch Patch00015: target-arm-Update-PFIRST-PNEXT-for-pred_.patch
Patch00016: target-arm-Update-ZIP-UZP-TRN-for-pred_d.patch Patch00016: target-arm-Update-ZIP-UZP-TRN-for-pred_d.patch
Patch00017: target-arm-Update-REV-PUNPK-for-pred_des.patch Patch00017: target-arm-Update-REV-PUNPK-for-pred_des.patch
Patch00018: net-Fix-handling-of-id-in-netdev_add-and.patch Patch00018: update-linux-headers-Include-const.h.patch
Patch00019: block-Separate-blk_is_writable-and-blk_s.patch Patch00019: Update-linux-headers-to-5.11-rc2.patch
Patch00020: hw-intc-arm_gic-Fix-interrupt-ID-in-GICD.patch Patch00020: vfio-ccw-Connect-the-device-request-noti.patch
Patch00021: virtio-move-use-disabled-flag-property-t.patch Patch00021: net-Fix-handling-of-id-in-netdev_add-and.patch
Patch00022: qemu-nbd-Use-SOMAXCONN-for-socket-listen.patch Patch00022: block-Separate-blk_is_writable-and-blk_s.patch
Patch00023: qemu-storage-daemon-Enable-object-add.patch Patch00023: hw-intc-arm_gic-Fix-interrupt-ID-in-GICD.patch
Patch00024: blockjob-Fix-crash-with-IOthread-when-bl.patch Patch00024: virtio-move-use-disabled-flag-property-t.patch
Patch00025: monitor-Fix-assertion-failure-on-shutdow.patch Patch00025: qemu-nbd-Use-SOMAXCONN-for-socket-listen.patch
Patch00026: spice-app-avoid-crash-when-core-spice-mo.patch Patch00026: qemu-storage-daemon-Enable-object-add.patch
Patch00027: i386-acpi-restore-device-paths-for-pre-5.patch Patch00027: blockjob-Fix-crash-with-IOthread-when-bl.patch
Patch00028: hw-s390x-fix-build-for-virtio-9p-ccw.patch Patch00028: monitor-Fix-assertion-failure-on-shutdow.patch
Patch00029: s390x-pci-restore-missing-Query-PCI-Func.patch Patch00029: spice-app-avoid-crash-when-core-spice-mo.patch
Patch00030: lsilogic-Use-PCIDevice-exit-instead-of-D.patch Patch00030: i386-acpi-restore-device-paths-for-pre-5.patch
Patch00031: vhost-user-blk-fix-blkcfg-num_queues-end.patch Patch00031: hw-s390x-fix-build-for-virtio-9p-ccw.patch
Patch00032: e1000-fail-early-for-evil-descriptor.patch Patch00032: s390x-pci-restore-missing-Query-PCI-Func.patch
Patch00033: hw-s390x-modularize-virtio-gpu-ccw.patch Patch00033: lsilogic-Use-PCIDevice-exit-instead-of-D.patch
Patch00034: net-vmxnet3-validate-configuration-value.patch Patch00034: vhost-user-blk-fix-blkcfg-num_queues-end.patch
Patch00035: XXX-dont-dump-core-on-sigabort.patch Patch00035: e1000-fail-early-for-evil-descriptor.patch
Patch00036: qemu-binfmt-conf-Modify-default-path.patch Patch00036: hw-s390x-modularize-virtio-gpu-ccw.patch
Patch00037: qemu-cvs-gettimeofday.patch Patch00037: net-vmxnet3-validate-configuration-value.patch
Patch00038: qemu-cvs-ioctl_debug.patch Patch00038: XXX-dont-dump-core-on-sigabort.patch
Patch00039: qemu-cvs-ioctl_nodirection.patch Patch00039: qemu-binfmt-conf-Modify-default-path.patch
Patch00040: linux-user-add-binfmt-wrapper-for-argv-0.patch Patch00040: qemu-cvs-gettimeofday.patch
Patch00041: PPC-KVM-Disable-mmu-notifier-check.patch Patch00041: qemu-cvs-ioctl_debug.patch
Patch00042: linux-user-binfmt-support-host-binaries.patch Patch00042: qemu-cvs-ioctl_nodirection.patch
Patch00043: linux-user-Fake-proc-cpuinfo.patch Patch00043: linux-user-add-binfmt-wrapper-for-argv-0.patch
Patch00044: linux-user-use-target_ulong.patch Patch00044: PPC-KVM-Disable-mmu-notifier-check.patch
Patch00045: Make-char-muxer-more-robust-wrt-small-FI.patch Patch00045: linux-user-binfmt-support-host-binaries.patch
Patch00046: linux-user-lseek-explicitly-cast-non-set.patch Patch00046: linux-user-Fake-proc-cpuinfo.patch
Patch00047: AIO-Reduce-number-of-threads-for-32bit-h.patch Patch00047: linux-user-use-target_ulong.patch
Patch00048: xen_disk-Add-suse-specific-flush-disable.patch Patch00048: Make-char-muxer-more-robust-wrt-small-FI.patch
Patch00049: qemu-bridge-helper-reduce-security-profi.patch Patch00049: linux-user-lseek-explicitly-cast-non-set.patch
Patch00050: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch Patch00050: AIO-Reduce-number-of-threads-for-32bit-h.patch
Patch00051: roms-Makefile-pass-a-packaging-timestamp.patch Patch00051: xen_disk-Add-suse-specific-flush-disable.patch
Patch00052: Raise-soft-address-space-limit-to-hard-l.patch Patch00052: qemu-bridge-helper-reduce-security-profi.patch
Patch00053: increase-x86_64-physical-bits-to-42.patch Patch00053: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
Patch00054: i8254-Fix-migration-from-SLE11-SP2.patch Patch00054: roms-Makefile-pass-a-packaging-timestamp.patch
Patch00055: acpi_piix4-Fix-migration-from-SLE11-SP2.patch Patch00055: Raise-soft-address-space-limit-to-hard-l.patch
Patch00056: Make-installed-scripts-explicitly-python.patch Patch00056: increase-x86_64-physical-bits-to-42.patch
Patch00057: hw-smbios-handle-both-file-formats-regar.patch Patch00057: i8254-Fix-migration-from-SLE11-SP2.patch
Patch00058: xen-add-block-resize-support-for-xen-dis.patch Patch00058: acpi_piix4-Fix-migration-from-SLE11-SP2.patch
Patch00059: tests-qemu-iotests-Triple-timeout-of-i-o.patch Patch00059: Make-installed-scripts-explicitly-python.patch
Patch00060: tests-Fix-block-tests-to-be-compatible-w.patch Patch00060: hw-smbios-handle-both-file-formats-regar.patch
Patch00061: xen-ignore-live-parameter-from-xen-save-.patch Patch00061: xen-add-block-resize-support-for-xen-dis.patch
Patch00062: tests-change-error-message-in-test-162.patch Patch00062: tests-qemu-iotests-Triple-timeout-of-i-o.patch
Patch00063: hw-intc-exynos4210_gic-provide-more-room.patch Patch00063: tests-Fix-block-tests-to-be-compatible-w.patch
Patch00064: configure-only-populate-roms-if-softmmu.patch Patch00064: xen-ignore-live-parameter-from-xen-save-.patch
Patch00065: pc-bios-s390-ccw-net-avoid-warning-about.patch Patch00065: tests-change-error-message-in-test-162.patch
Patch00066: roms-change-cross-compiler-naming-to-be-.patch Patch00066: hw-intc-exynos4210_gic-provide-more-room.patch
Patch00067: test-add-mapping-from-arch-of-i686-to-qe.patch Patch00067: configure-only-populate-roms-if-softmmu.patch
Patch00068: configure-remove-pkgversion-from-CONFIG_.patch Patch00068: pc-bios-s390-ccw-net-avoid-warning-about.patch
Patch00069: docs-add-SUSE-support-statements-to-html.patch Patch00069: roms-change-cross-compiler-naming-to-be-.patch
Patch00070: s390x-Fix-stringop-truncation-issue-repo.patch Patch00070: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00071: Revert-qht-constify-qht_statistics_init.patch Patch00071: configure-remove-pkgversion-from-CONFIG_.patch
Patch00072: qht-Revert-some-constification-in-qht.c.patch Patch00072: docs-add-SUSE-support-statements-to-html.patch
Patch00073: meson-install-ivshmem-client-and-ivshmem.patch Patch00073: s390x-Fix-stringop-truncation-issue-repo.patch
Patch00074: Revert-roms-efirom-tests-uefi-test-tools.patch Patch00074: Revert-qht-constify-qht_statistics_init.patch
Patch00075: Makefile-Don-t-check-pc-bios-as-pre-requ.patch Patch00075: qht-Revert-some-constification-in-qht.c.patch
Patch00076: roms-Makefile-add-cross-file-to-qboot-me.patch Patch00076: meson-install-ivshmem-client-and-ivshmem.patch
Patch00077: usb-Help-compiler-out-to-avoid-a-warning.patch Patch00077: Revert-roms-efirom-tests-uefi-test-tools.patch
Patch00078: module-for-virtio-gpu-pre-load-module-to.patch Patch00078: Makefile-Don-t-check-pc-bios-as-pre-requ.patch
Patch00079: qom-handle-case-of-chardev-spice-module-.patch Patch00079: roms-Makefile-add-cross-file-to-qboot-me.patch
Patch00080: usb-Help-compiler-out-to-avoid-a-warning.patch
Patch00081: module-for-virtio-gpu-pre-load-module-to.patch
Patch00082: qom-handle-case-of-chardev-spice-module-.patch
# Patches applied in roms/seabios/: # Patches applied in roms/seabios/:
Patch01000: seabios-use-python2-explicitly-as-needed.patch Patch01000: seabios-use-python2-explicitly-as-needed.patch
Patch01001: seabios-switch-to-python3-as-needed.patch Patch01001: seabios-switch-to-python3-as-needed.patch
@ -1109,23 +1112,26 @@ This package records qemu testsuite results and represents successful testing.
%patch00066 -p1 %patch00066 -p1
%patch00067 -p1 %patch00067 -p1
%patch00068 -p1 %patch00068 -p1
%if %{legacy_qemu_kvm}
%patch00069 -p1 %patch00069 -p1
%endif
%patch00070 -p1 %patch00070 -p1
%patch00071 -p1 %patch00071 -p1
%if %{legacy_qemu_kvm}
%patch00072 -p1 %patch00072 -p1
%endif
%patch00073 -p1 %patch00073 -p1
%patch00074 -p1 %patch00074 -p1
%patch00075 -p1 %patch00075 -p1
%ifarch aarch64
%patch00076 -p1 %patch00076 -p1
%patch00077 -p1
%patch00078 -p1
%ifarch aarch64
%patch00079 -p1
%endif %endif
%ifarch %arm %ix86 ppc %ifarch %arm %ix86 ppc
%patch00077 -p1 %patch00080 -p1
%endif %endif
%patch00078 -p1 %patch00081 -p1
%patch00079 -p1 %patch00082 -p1
%patch01000 -p1 %patch01000 -p1
%patch01001 -p1 %patch01001 -p1
%patch01002 -p1 %patch01002 -p1

View File

@ -0,0 +1,48 @@
From: Eric Farman <farman@linux.ibm.com>
Date: Mon, 4 Jan 2021 21:20:55 +0100
Subject: update-linux-headers: Include const.h
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: ab5ec23f9cc25215c1281d575c07c0f35e8e9e26
References: bsc#1183634
Kernel commit a85cbe6159ff ("uapi: move constants from
<linux/kernel.h> to <linux/const.h>") breaks our script
because of the unrecognized include. Let's add that to
our processing.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20210104202057.48048-2-farman@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
scripts/update-linux-headers.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh
index 9efbaf2f84b38bee183517934b84..fa6f2b6272b78223d28f4c823858 100755
--- a/scripts/update-linux-headers.sh
+++ b/scripts/update-linux-headers.sh
@@ -41,6 +41,7 @@ cp_portable() {
-e 'pvrdma_verbs' \
-e 'drm.h' \
-e 'limits' \
+ -e 'linux/const' \
-e 'linux/kernel' \
-e 'linux/sysinfo' \
-e 'asm-generic/kvm_para' \
@@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \
"$tmpdir/include/linux/input.h" \
"$tmpdir/include/linux/input-event-codes.h" \
"$tmpdir/include/linux/pci_regs.h" \
- "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \
+ "$tmpdir/include/linux/ethtool.h" \
+ "$tmpdir/include/linux/const.h" \
+ "$tmpdir/include/linux/kernel.h" \
"$tmpdir/include/linux/vhost_types.h" \
"$tmpdir/include/linux/sysinfo.h"; do
cp_portable "$i" "$output/include/standard-headers/linux"

View File

@ -0,0 +1,115 @@
From: Eric Farman <farman@linux.ibm.com>
Date: Mon, 4 Jan 2021 21:20:57 +0100
Subject: vfio-ccw: Connect the device request notifier
Git-commit: b2f96f9e4f5fbc8f2770a436191cb328da4d5350
References: 1183634
Now that the vfio-ccw code has a notifier interface to request that
a device be unplugged, let's wire that together.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20210104202057.48048-4-farman@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hw/vfio/ccw.c | 40 ++++++++++++++++++++++++++++++++++++----
1 file changed, 36 insertions(+), 4 deletions(-)
diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c
index d2755d7fc5cace038ca7e4f87822..bc78a0ad7638c329bbc06a69a432 100644
--- a/hw/vfio/ccw.c
+++ b/hw/vfio/ccw.c
@@ -49,6 +49,7 @@ struct VFIOCCWDevice {
struct ccw_crw_region *crw_region;
EventNotifier io_notifier;
EventNotifier crw_notifier;
+ EventNotifier req_notifier;
bool force_orb_pfch;
bool warned_orb_pfch;
};
@@ -287,6 +288,21 @@ static void vfio_ccw_crw_read(VFIOCCWDevice *vcdev)
} while (1);
}
+static void vfio_ccw_req_notifier_handler(void *opaque)
+{
+ VFIOCCWDevice *vcdev = opaque;
+ Error *err = NULL;
+
+ if (!event_notifier_test_and_clear(&vcdev->req_notifier)) {
+ return;
+ }
+
+ qdev_unplug(DEVICE(vcdev), &err);
+ if (err) {
+ warn_reportf_err(err, VFIO_MSG_PREFIX, vcdev->vdev.name);
+ }
+}
+
static void vfio_ccw_crw_notifier_handler(void *opaque)
{
VFIOCCWDevice *vcdev = opaque;
@@ -386,6 +402,10 @@ static void vfio_ccw_register_irq_notifier(VFIOCCWDevice *vcdev,
notifier = &vcdev->crw_notifier;
fd_read = vfio_ccw_crw_notifier_handler;
break;
+ case VFIO_CCW_REQ_IRQ_INDEX:
+ notifier = &vcdev->req_notifier;
+ fd_read = vfio_ccw_req_notifier_handler;
+ break;
default:
error_setg(errp, "vfio: Unsupported device irq(%d)", irq);
return;
@@ -440,6 +460,9 @@ static void vfio_ccw_unregister_irq_notifier(VFIOCCWDevice *vcdev,
case VFIO_CCW_CRW_IRQ_INDEX:
notifier = &vcdev->crw_notifier;
break;
+ case VFIO_CCW_REQ_IRQ_INDEX:
+ notifier = &vcdev->req_notifier;
+ break;
default:
error_report("vfio: Unsupported device irq(%d)", irq);
return;
@@ -661,20 +684,28 @@ static void vfio_ccw_realize(DeviceState *dev, Error **errp)
vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX, &err);
if (err) {
- goto out_notifier_err;
+ goto out_io_notifier_err;
}
if (vcdev->crw_region) {
vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX, &err);
if (err) {
- vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX);
- goto out_notifier_err;
+ goto out_crw_notifier_err;
}
}
+ vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_REQ_IRQ_INDEX, &err);
+ if (err) {
+ goto out_req_notifier_err;
+ }
+
return;
-out_notifier_err:
+out_req_notifier_err:
+ vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX);
+out_crw_notifier_err:
+ vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX);
+out_io_notifier_err:
vfio_ccw_put_region(vcdev);
out_region_err:
vfio_ccw_put_device(vcdev);
@@ -696,6 +727,7 @@ static void vfio_ccw_unrealize(DeviceState *dev)
S390CCWDeviceClass *cdc = S390_CCW_DEVICE_GET_CLASS(cdev);
VFIOGroup *group = vcdev->vdev.group;
+ vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_REQ_IRQ_INDEX);
vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX);
vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX);
vfio_ccw_put_region(vcdev);