From 8b49639415ab24e0992f9c7e3a3f62a4778b0765 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Wed, 20 Apr 2022 03:49:16 -0400 Subject: [PATCH] * Wed Apr 20 2022 Miroslav Rezanina - 7.0.0-1 - Rebase to QEMU 7.0.0 [bz#2064757] - Do not build ssh block driver anymore [bz#2064500] - Removed hpet and parallel port support [bz#2065042] - Compatibility support [bz#2064782 bz#2064771] - Resolves: bz#2064757 (Rebase to QEMU 7.0.0) - Resolves: bz#2064500 (Install qemu-kvm-6.2.0-11.el9_0.1 failed as conflict with qemu-kvm-block-ssh-6.2.0-11.el9_0.1) - Resolves: bz#2065042 (Remove upstream-only devices from the qemu-kvm binary) - Resolves: bz#2064782 (Update machine type compatibility for QEMU 7.0.0 update [s390x]) - Resolves: bz#2064771 (Update machine type compatibility for QEMU 7.0.0 update [x86_64]) --- .gitignore | 1 + ...-t-use-g_autoptr-just-to-free-a-vari.patch | 49 --- ...d.patch => 0004-Initial-redhat-build.patch | 64 +-- ...0005-Enable-disable-devices-for-RHEL.patch | 166 +++----- ...Machine-type-related-general-changes.patch | 135 +++---- ...ch => 0007-Add-aarch64-machine-types.patch | 120 ++++-- ...atch => 0008-Add-ppc64-machine-types.patch | 46 +-- ...atch => 0009-Add-s390x-machine-types.patch | 92 ++++- ...tch => 0010-Add-x86_64-machine-types.patch | 194 +++++++-- 0011-Enable-make-check.patch | 186 +++++++++ 0012-Enable-make-check.patch | 376 ------------------ ...mber-of-devices-that-can-be-assigned.patch | 10 +- ...Add-support-statement-to-help-output.patch | 12 +- ...lly-limit-the-maximum-number-of-CPUs.patch | 8 +- ...documentation-instead-of-qemu-system.patch | 61 +++ ...documentation-instead-of-qemu-system.patch | 120 ------ ...ct-scsi-cd-if-data-plane-enabled-RHE.patch | 6 +- ...e-at-least-64kiB-pages-for-downstrea.patch | 8 +- ...on-warning-when-opening-v2-images-rw.patch | 14 +- ...oduce-RHEL-9.0.0-hw-compat-structure.patch | 135 +++++++ 0020-Fix-virtio-net-pci-vectors-compat.patch | 46 --- ...90x-machine-type-compatibility-for-r.patch | 38 ++ ...ve-s3-s4-suspend-disabling-to-compat.patch | 70 ++++ ...machine-types-Add-pc_rhel_8_5_compat.patch | 75 ---- ...-types-Wire-compat-into-q35-and-i440.patch | 55 --- ...8.5.0-Update-machine-type-compatibil.patch | 50 --- ...-machine-type-compatibility-handling.patch | 58 --- ..._compat_rhel_8_5-with-6.2.0-RC2-chan.patch | 31 -- kvm-Enable-SGX-RH-Only.patch | 28 -- ...packet-for-vhost-vsock-device-in-rhe.patch | 107 ----- ...mark-old-machine-types-as-deprecated.patch | 108 ----- ...ard-Don-t-use-g_autoptr-just-to-free.patch | 45 --- ...ntext-for-drain_end-in-blockdev-reop.patch | 63 --- ...event-dangling-BDS-pointers-across-a.patch | 129 ------ ...Update-BSC-only-if-want_zero-is-true.patch | 56 --- ...sert-there-are-no-timers-when-closed.patch | 52 --- ...lete-reconnect-delay-timer-when-done.patch | 54 --- ...-nbd-Move-s-ioc-on-AioContext-change.patch | 107 ----- ...nfinite-loop-in-nvme_free_req_queue_.patch | 71 ---- ...ndling-of-holes-in-.bdrv_co_block_st.patch | 59 --- ...-rbd-workaround-for-ceph-issue-53784.patch | 103 ----- kvm-doc-Add-the-SGX-numa-description.patch | 77 ---- kvm-hw-arm-smmuv3-Fix-device-reset.patch | 61 --- ...-9.0-machine-type-and-remove-8.5-one.patch | 48 --- ...k-no_tcg_its-and-minor-style-changes.patch | 88 ---- kvm-hw-arm-virt-Expose-the-RAS-option.patch | 60 --- ...t-Register-iommu-as-a-class-property.patch | 81 ---- ...irt-Register-its-as-a-class-property.patch | 57 --- ...virt-Rename-default_bus_bypass_iommu.patch | 46 --- ...ix-leak-of-host-notifier-memory-regi.patch | 60 --- ...Let-NBD-connection-yield-in-iothread.patch | 108 ----- kvm-iotests-281-Test-lingering-timers.patch | 174 -------- ...ckdev-reopen-with-iothreads-and-thro.patch | 106 ----- ...u-img-convert-of-zeroed-data-cluster.patch | 81 ---- kvm-iotests-block-status-cache-New-test.patch | 197 --------- ...tests-stream-error-on-reset-New-test.patch | 196 --------- ...tests.py-Add-QemuStorageDaemon-class.patch | 92 ----- ...rrect-calls-of-log_global_start-stop.patch | 97 ----- ...crash-on-starting-dirty-log-twice-wi.patch | 156 -------- ...uma-Enable-numa-for-SGX-EPC-sections.patch | 287 ------------- ...-numa-in-the-monitor-and-Libvirt-int.patch | 210 ---------- ...-related-comments-and-restore-sectio.patch | 213 ---------- ...-is_allocated_sectors-more-efficient.patch | 108 ----- ...orage-daemon-Add-vhost-user-blk-help.patch | 72 ---- ...emon-Fix-typo-in-vhost-user-blk-help.patch | 41 -- ....6.0-and-rhel9.0.0-machine-types-for.patch | 82 ---- ...virtio-mem-as-tech-preview-on-x86-64.patch | 43 -- ...machine-types-x86-set-prefer_sockets.patch | 52 --- ...ce-deletion-events-with-device-JSON-.patch | 130 ------ ...r-warnings-from-unused-clipboard-inf.patch | 63 --- ...pboard-fix-use-after-free-regression.patch | 49 --- kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch | 80 ---- ...embership-of-all-supplementary-group.patch | 110 ----- kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch | 65 --- kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch | 75 ---- qemu-kvm.spec | 199 +++------ sources | 2 +- 77 files changed, 1074 insertions(+), 5800 deletions(-) delete mode 100644 0001-ui-clipboard-Don-t-use-g_autoptr-just-to-free-a-vari.patch rename 0005-Initial-redhat-build.patch => 0004-Initial-redhat-build.patch (86%) rename 0006-Enable-disable-devices-for-RHEL.patch => 0005-Enable-disable-devices-for-RHEL.patch (81%) rename 0007-Machine-type-related-general-changes.patch => 0006-Machine-type-related-general-changes.patch (87%) rename 0008-Add-aarch64-machine-types.patch => 0007-Add-aarch64-machine-types.patch (75%) rename 0009-Add-ppc64-machine-types.patch => 0008-Add-ppc64-machine-types.patch (93%) rename 0010-Add-s390x-machine-types.patch => 0009-Add-s390x-machine-types.patch (58%) rename 0011-Add-x86_64-machine-types.patch => 0010-Add-x86_64-machine-types.patch (76%) create mode 100644 0011-Enable-make-check.patch delete mode 100644 0012-Enable-make-check.patch rename 0013-vfio-cap-number-of-devices-that-can-be-assigned.patch => 0012-vfio-cap-number-of-devices-that-can-be-assigned.patch (93%) rename 0014-Add-support-statement-to-help-output.patch => 0013-Add-support-statement-to-help-output.patch (86%) rename 0015-globally-limit-the-maximum-number-of-CPUs.patch => 0014-globally-limit-the-maximum-number-of-CPUs.patch (89%) create mode 100644 0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch delete mode 100644 0016-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch rename 0017-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch => 0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch (96%) rename 0018-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch => 0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch (92%) rename 0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch => 0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch (90%) create mode 100644 0019-WRB-Introduce-RHEL-9.0.0-hw-compat-structure.patch delete mode 100644 0020-Fix-virtio-net-pci-vectors-compat.patch create mode 100644 0020-redhat-Update-s390x-machine-type-compatibility-for-r.patch create mode 100644 0021-pc-Move-s3-s4-suspend-disabling-to-compat.patch delete mode 100644 0021-x86-rhel-machine-types-Add-pc_rhel_8_5_compat.patch delete mode 100644 0022-x86-rhel-machine-types-Wire-compat-into-q35-and-i440.patch delete mode 100644 0023-redhat-virt-rhel8.5.0-Update-machine-type-compatibil.patch delete mode 100644 0024-redhat-Add-s390x-machine-type-compatibility-handling.patch delete mode 100644 0025-compat-Update-hw_compat_rhel_8_5-with-6.2.0-RC2-chan.patch delete mode 100644 kvm-Enable-SGX-RH-Only.patch delete mode 100644 kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch delete mode 100644 kvm-RHEL-mark-old-machine-types-as-deprecated.patch delete mode 100644 kvm-Revert-ui-clipboard-Don-t-use-g_autoptr-just-to-free.patch delete mode 100644 kvm-block-Lock-AioContext-for-drain_end-in-blockdev-reop.patch delete mode 100644 kvm-block-backend-prevent-dangling-BDS-pointers-across-a.patch delete mode 100644 kvm-block-io-Update-BSC-only-if-want_zero-is-true.patch delete mode 100644 kvm-block-nbd-Assert-there-are-no-timers-when-closed.patch delete mode 100644 kvm-block-nbd-Delete-reconnect-delay-timer-when-done.patch delete mode 100644 kvm-block-nbd-Move-s-ioc-on-AioContext-change.patch delete mode 100644 kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch delete mode 100644 kvm-block-rbd-fix-handling-of-holes-in-.bdrv_co_block_st.patch delete mode 100644 kvm-block-rbd-workaround-for-ceph-issue-53784.patch delete mode 100644 kvm-doc-Add-the-SGX-numa-description.patch delete mode 100644 kvm-hw-arm-smmuv3-Fix-device-reset.patch delete mode 100644 kvm-hw-arm-virt-Add-9.0-machine-type-and-remove-8.5-one.patch delete mode 100644 kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch delete mode 100644 kvm-hw-arm-virt-Expose-the-RAS-option.patch delete mode 100644 kvm-hw-arm-virt-Register-iommu-as-a-class-property.patch delete mode 100644 kvm-hw-arm-virt-Register-its-as-a-class-property.patch delete mode 100644 kvm-hw-arm-virt-Rename-default_bus_bypass_iommu.patch delete mode 100644 kvm-hw-virtio-vdpa-Fix-leak-of-host-notifier-memory-regi.patch delete mode 100644 kvm-iotests-281-Let-NBD-connection-yield-in-iothread.patch delete mode 100644 kvm-iotests-281-Test-lingering-timers.patch delete mode 100644 kvm-iotests-Test-blockdev-reopen-with-iothreads-and-thro.patch delete mode 100644 kvm-iotests-Test-qemu-img-convert-of-zeroed-data-cluster.patch delete mode 100644 kvm-iotests-block-status-cache-New-test.patch delete mode 100644 kvm-iotests-stream-error-on-reset-New-test.patch delete mode 100644 kvm-iotests.py-Add-QemuStorageDaemon-class.patch delete mode 100644 kvm-memory-Fix-incorrect-calls-of-log_global_start-stop.patch delete mode 100644 kvm-memory-Fix-qemu-crash-on-starting-dirty-log-twice-wi.patch delete mode 100644 kvm-numa-Enable-numa-for-SGX-EPC-sections.patch delete mode 100644 kvm-numa-Support-SGX-numa-in-the-monitor-and-Libvirt-int.patch delete mode 100644 kvm-qapi-Cleanup-SGX-related-comments-and-restore-sectio.patch delete mode 100644 kvm-qemu-img-make-is_allocated_sectors-more-efficient.patch delete mode 100644 kvm-qemu-storage-daemon-Add-vhost-user-blk-help.patch delete mode 100644 kvm-qemu-storage-daemon-Fix-typo-in-vhost-user-blk-help.patch delete mode 100644 kvm-redhat-Add-rhel8.6.0-and-rhel9.0.0-machine-types-for.patch delete mode 100644 kvm-redhat-Enable-virtio-mem-as-tech-preview-on-x86-64.patch delete mode 100644 kvm-rhel-machine-types-x86-set-prefer_sockets.patch delete mode 100644 kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch delete mode 100644 kvm-ui-avoid-compiler-warnings-from-unused-clipboard-inf.patch delete mode 100644 kvm-ui-clipboard-fix-use-after-free-regression.patch delete mode 100644 kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch delete mode 100644 kvm-virtiofsd-Drop-membership-of-all-supplementary-group.patch delete mode 100644 kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch delete mode 100644 kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch diff --git a/.gitignore b/.gitignore index c8fe0b4..908f9b5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ /*.orig /qemu-6.1.0.tar.xz /qemu-6.2.0.tar.xz +/qemu-7.0.0.tar.xz diff --git a/0001-ui-clipboard-Don-t-use-g_autoptr-just-to-free-a-vari.patch b/0001-ui-clipboard-Don-t-use-g_autoptr-just-to-free-a-vari.patch deleted file mode 100644 index 5dcba33..0000000 --- a/0001-ui-clipboard-Don-t-use-g_autoptr-just-to-free-a-vari.patch +++ /dev/null @@ -1,49 +0,0 @@ -From cc2f3e2ce9e2a9ab9e52e8f44bee4876e69843da Mon Sep 17 00:00:00 2001 -From: John Snow -Date: Wed, 17 Nov 2021 09:51:46 -0500 -Subject: ui/clipboard: Don't use g_autoptr just to free a variable - -Clang doesn't recognize that the variable is being "used" and will emit -a warning: - - ../ui/clipboard.c:47:34: error: variable 'old' set but not used [-Werror,-Wunused-but-set-variable] - g_autoptr(QemuClipboardInfo) old = NULL; - ^ - 1 error generated. - -OK, fine. Just do things the old way. - -Signed-off-by: John Snow -Signed-off-by: Miroslav Rezanina - ---- - -This is temporary commit from upstream submission necessary for build to pass. -We expect proper fix included upstream later. ---- - ui/clipboard.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/ui/clipboard.c b/ui/clipboard.c -index d7b008d62a..d53576b0f6 100644 ---- a/ui/clipboard.c -+++ b/ui/clipboard.c -@@ -44,13 +44,14 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer, - - void qemu_clipboard_update(QemuClipboardInfo *info) - { -- g_autoptr(QemuClipboardInfo) old = NULL; -+ QemuClipboardInfo *old = NULL; - assert(info->selection < QEMU_CLIPBOARD_SELECTION__COUNT); - - notifier_list_notify(&clipboard_notifiers, info); - - old = cbinfo[info->selection]; - cbinfo[info->selection] = qemu_clipboard_info_ref(info); -+ g_free(old); - } - - QemuClipboardInfo *qemu_clipboard_info(QemuClipboardSelection selection) --- -2.27.0 - diff --git a/0005-Initial-redhat-build.patch b/0004-Initial-redhat-build.patch similarity index 86% rename from 0005-Initial-redhat-build.patch rename to 0004-Initial-redhat-build.patch index 3ff2dce..94cf91c 100644 --- a/0005-Initial-redhat-build.patch +++ b/0004-Initial-redhat-build.patch @@ -1,4 +1,4 @@ -From 3308eb892f03c7169f712fe88e74dacd6f05b1fe Mon Sep 17 00:00:00 2001 +From fc113ecd7c99646a7ced0b99570b5927ae6d595f Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Wed, 26 May 2021 10:56:02 +0200 Subject: Initial redhat build @@ -13,7 +13,7 @@ several issues are fixed in QEMU tree: We disable make check due to issues with some of the tests. -This rebase is based on qemu-kvm-6.1.0-8.el9 +This rebase is based on qemu-kvm-6.2.0-13.el9 Signed-off-by: Miroslav Rezanina -- @@ -38,6 +38,18 @@ Rebase changes (6.2.0): - Add -Wno-string-plus-int to extra flags - Updated configure options +Rebase changes (7.0.0): +- Do not use -mlittle CFLAG on ppc64le +- Used upstream handling issue with ui/clipboard.c +- Use -mlittle-endian on ppc64le instead of deleteing it in configure +- Drop --disable-libxml2 option for configure (upstream) +- Remove vof roms +- Disable AVX2 support +- Use internal meson +- Disable new configure options (dbus-display and qga-vss) +- Change permissions on installing tests/Makefile.include +- Remove ssh block driver + Merged patches (6.0.0): - 605758c902 Limit build on Power to qemu-img and qemu-ga only @@ -115,27 +127,26 @@ Merged patches (6.2.0): - d2f2ff3c74 spec: Explicitly include compress filter - a7d047f9c2 Move ksmtuned files to separate package -With rebase new configure options are introducesed. We use two steps -configuration - first we disable all options and then enable supported -options. - -With 6.2.0, following changes are done: -- disabled all audiodev and enable only pa - - not use audio-drv-list anymore - - disabling oss driver removes oss module (added during rebase to 6.2.0) -- disable gettext -- disable l2tpv3 -- enable selinux -- enable spice-protocol - - added needed BuildRequire -- specify used capstone version -- specify used fdt version +Merged patches (7.0.0): +- 098d4d08d0 spec: Rename qemu-kvm-hw-usbredir to qemu-kvm-device-usb-redirect +- c2bd0d6834 spec: Split qemu-kvm-ui-opengl +- 2c9cda805d spec: Introduce packages for virtio-gpu-* modules (changed as rhel device tree not set) +- d0414a3e0b spec: Introduce device-display-virtio-vga* packages +- 3534ec46d4 spec: Move usb-host module to separate package +- ddc14d4737 spec: Move qtest accel module to tests package +- 6f2c4befa6 spec: Extend qemu-kvm-core description +- 6f11866e4e (rhel/rhel-9.0.0) Update to qemu-kvm-6.2.0-6.el9 +- da0a28758f ui/clipboard: fix use-after-free regression +- 895d4d52eb spec: Remove qemu-virtiofsd +- c8c8c8bd84 spec: Fix obsolete for spice subpackages +- d46d2710b2 spec: Obsolete old usb redir subpackage +- 6f52a50b68 spec: Obsolete ssh driver Signed-off-by: Miroslav Rezanina --- .distro/85-kvm.preset | 5 - .distro/Makefile | 100 + - .distro/Makefile.common | 38 + + .distro/Makefile.common | 40 + .distro/README.tests | 39 + .distro/ksm.service | 13 - .distro/ksm.sysconfig | 4 - @@ -147,7 +158,8 @@ Signed-off-by: Miroslav Rezanina .distro/kvm-setup.service | 14 - .distro/modules-load.conf | 4 + .distro/qemu-guest-agent.service | 1 - - .distro/qemu-kvm.spec.template | 3817 +++++++++++++++++++++++ + .distro/qemu-kvm.spec.template | 4034 +++++++++++++++++++++++ + .distro/rpminspect.yaml | 6 +- .distro/scripts/extract_build_cmd.py | 12 + .gitignore | 1 + README.systemtap | 43 + @@ -157,7 +169,7 @@ Signed-off-by: Miroslav Rezanina scripts/systemtap/script.d/qemu_kvm.stp | 1 + tests/check-block.sh | 2 + ui/vnc-auth-sasl.c | 2 +- - 24 files changed, 4066 insertions(+), 338 deletions(-) + 25 files changed, 4290 insertions(+), 339 deletions(-) delete mode 100644 .distro/85-kvm.preset create mode 100644 .distro/Makefile create mode 100644 .distro/Makefile.common @@ -226,10 +238,10 @@ index 0000000000..ad913fc990 +3. Translate the trace record to readable format. + # /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log diff --git a/meson.build b/meson.build -index 96de1a6ef9..5f6ba86dbb 100644 +index 861de93c4f..6f7e430f0f 100644 --- a/meson.build +++ b/meson.build -@@ -2108,7 +2108,9 @@ if capstone_opt == 'internal' +@@ -2394,7 +2394,9 @@ if capstone_opt == 'internal' # Include all configuration defines via a header file, which will wind up # as a dependency on the object file, and thus changes here will result # in a rebuild. @@ -271,11 +283,11 @@ index 0000000000..c04abf9449 @@ -0,0 +1 @@ +probe qemu.kvm.simpletrace.handle_qmp_command,qemu.kvm.simpletrace.monitor_protocol_*,qemu.kvm.simpletrace.migrate_set_state {} diff --git a/tests/check-block.sh b/tests/check-block.sh -index f86cb863de..6d38340d49 100755 +index f59496396c..d900d8b35e 100755 --- a/tests/check-block.sh +++ b/tests/check-block.sh -@@ -69,6 +69,8 @@ else - fi +@@ -48,6 +48,8 @@ if LANG=C bash --version | grep -q 'GNU bash, version [123]' ; then + skip "bash version too old ==> Not running the qemu-iotests." fi +exit 0 @@ -297,5 +309,5 @@ index 47fdae5b21..2a950caa2a 100644 if (saslErr != SASL_OK) { error_setg(errp, "Failed to initialize SASL auth: %s", -- -2.27.0 +2.31.1 diff --git a/0006-Enable-disable-devices-for-RHEL.patch b/0005-Enable-disable-devices-for-RHEL.patch similarity index 81% rename from 0006-Enable-disable-devices-for-RHEL.patch rename to 0005-Enable-disable-devices-for-RHEL.patch index 345bd20..1ffbe97 100644 --- a/0006-Enable-disable-devices-for-RHEL.patch +++ b/0005-Enable-disable-devices-for-RHEL.patch @@ -1,4 +1,4 @@ -From af4c83ed637bfda003ae86133413d53cefda3654 Mon Sep 17 00:00:00 2001 +From 51ec7495d69fe4b4d0b61642ca6c0e7fd7a1032d Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Thu, 15 Jul 2021 03:22:36 -0400 Subject: Enable/disable devices for RHEL @@ -12,12 +12,16 @@ Rebase notes (6.1.0): - default-configs moved to configs - Use --with-device- configure option to use rhel configs -Rebase notes (6.2.0 RC0): +Rebase notes (6.2.0): - Add CONFIG_ISA_FDC - -Rebase notes (6.2.0 RC3): - Do not remove -no-hpet documentation +Rebase notes (7.0.0): +- Added CONFIG_ARM_GIC_TCG option for aarch64 +- Fixes necessary for layout change fixes +- Renamed CONFIG_ARM_GIC_TCG to CONFIG_ARM_GICV3_TCG +- Removed upstream devices + Merged patches (6.1.0): - c51bf45304 Remove SPICE and QXL from x86_64-rh-devices.mak - 02fc745601 aarch64-rh-devices: add CONFIG_PVPANIC_PCI @@ -27,49 +31,50 @@ Merged patches (6.1.0): - 2504d68a7c aarch64: Add USB storage devices - 51c2a3253c disable ac97 audio -Merged patches (6.2.0 RC0): +Merged patches (6.2.0): - 9f2f9fa2ba disable sga device + +Merged patches (7.0.0): +- fd7c45a5a8 redhat: Enable virtio-mem as tech-preview on x86-64 +- c9e68ea451 Enable SGX -- RH Only --- - .distro/qemu-kvm.spec.template | 9 +- - .../aarch64-softmmu/aarch64-rh-devices.mak | 33 ++++++ + .distro/qemu-kvm.spec.template | 18 +-- + .../aarch64-softmmu/aarch64-rh-devices.mak | 34 ++++++ .../ppc64-softmmu/ppc64-rh-devices.mak | 35 ++++++ configs/devices/rh-virtio.mak | 10 ++ .../s390x-softmmu/s390x-rh-devices.mak | 15 +++ - .../x86_64-softmmu/x86_64-rh-devices.mak | 102 ++++++++++++++++++ - .../x86_64-upstream-devices.mak | 4 + + .../x86_64-softmmu/x86_64-rh-devices.mak | 103 ++++++++++++++++++ hw/acpi/ich9.c | 4 +- hw/arm/meson.build | 2 +- hw/block/fdc.c | 10 ++ - hw/char/parallel.c | 9 ++ hw/cpu/meson.build | 5 +- - hw/display/cirrus_vga.c | 3 + + hw/display/cirrus_vga.c | 5 +- hw/ide/piix.c | 5 +- hw/input/pckbd.c | 2 + hw/net/e1000.c | 2 + hw/ppc/spapr_cpu_core.c | 2 + - hw/timer/hpet.c | 8 ++ hw/usb/meson.build | 2 +- target/arm/cpu_tcg.c | 10 ++ - target/ppc/cpu-models.c | 10 ++ + target/ppc/cpu-models.c | 9 ++ target/s390x/cpu_models_sysemu.c | 3 + target/s390x/kvm/kvm.c | 8 ++ - 23 files changed, 283 insertions(+), 10 deletions(-) + 20 files changed, 269 insertions(+), 15 deletions(-) create mode 100644 configs/devices/aarch64-softmmu/aarch64-rh-devices.mak create mode 100644 configs/devices/ppc64-softmmu/ppc64-rh-devices.mak create mode 100644 configs/devices/rh-virtio.mak create mode 100644 configs/devices/s390x-softmmu/s390x-rh-devices.mak create mode 100644 configs/devices/x86_64-softmmu/x86_64-rh-devices.mak - create mode 100644 configs/devices/x86_64-softmmu/x86_64-upstream-devices.mak diff --git a/configs/devices/aarch64-softmmu/aarch64-rh-devices.mak b/configs/devices/aarch64-softmmu/aarch64-rh-devices.mak new file mode 100644 -index 0000000000..cd9c7c5127 +index 0000000000..5f6ee1de5b --- /dev/null +++ b/configs/devices/aarch64-softmmu/aarch64-rh-devices.mak -@@ -0,0 +1,33 @@ +@@ -0,0 +1,34 @@ +include ../rh-virtio.mak + +CONFIG_ARM_GIC_KVM=y ++CONFIG_ARM_GICV3_TCG=y +CONFIG_ARM_GIC=y +CONFIG_ARM_SMMUV3=y +CONFIG_ARM_V7M=y @@ -180,12 +185,11 @@ index 0000000000..d3b38312e1 +CONFIG_WDT_DIAG288=y diff --git a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak new file mode 100644 -index 0000000000..1f7a9ab024 +index 0000000000..d0c9e66641 --- /dev/null +++ b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -@@ -0,0 +1,102 @@ +@@ -0,0 +1,103 @@ +include ../rh-virtio.mak -+include x86_64-upstream-devices.mak + +CONFIG_ACPI=y +CONFIG_ACPI_PCI=y @@ -274,6 +278,7 @@ index 0000000000..1f7a9ab024 +CONFIG_VGA_PCI=y +CONFIG_VHOST_USER=y +CONFIG_VHOST_USER_BLK=y ++CONFIG_VIRTIO_MEM=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_VGA=y +CONFIG_VMMOUSE=y @@ -286,21 +291,12 @@ index 0000000000..1f7a9ab024 +CONFIG_TPM_CRB=y +CONFIG_TPM_TIS_ISA=y +CONFIG_TPM_EMULATOR=y -diff --git a/configs/devices/x86_64-softmmu/x86_64-upstream-devices.mak b/configs/devices/x86_64-softmmu/x86_64-upstream-devices.mak -new file mode 100644 -index 0000000000..2cd20f54d2 ---- /dev/null -+++ b/configs/devices/x86_64-softmmu/x86_64-upstream-devices.mak -@@ -0,0 +1,4 @@ -+# We need "isa-parallel" -+CONFIG_PARALLEL=y -+# We need "hpet" -+CONFIG_HPET=y ++CONFIG_SGX=y diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c -index ebe08ed831..381ef2ddcf 100644 +index bd9bbade70..de1e401cdf 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c -@@ -438,8 +438,8 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) +@@ -435,8 +435,8 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN; pm->acpi_memory_hotplug.is_enabled = true; pm->cpu_hotplug_legacy = true; @@ -325,10 +321,10 @@ index 721a8eb8be..87ed4dd914 100644 arm_ss.add(when: 'CONFIG_PXA2XX', if_true: files('pxa2xx.c', 'pxa2xx_gpio.c', 'pxa2xx_pic.c')) arm_ss.add(when: 'CONFIG_DIGIC', if_true: files('digic.c')) diff --git a/hw/block/fdc.c b/hw/block/fdc.c -index 21d18ac2e3..97fa6de423 100644 +index 347875a0cd..ca1776121f 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c -@@ -48,6 +48,8 @@ +@@ -49,6 +49,8 @@ #include "qom/object.h" #include "fdc-internal.h" @@ -337,7 +333,7 @@ index 21d18ac2e3..97fa6de423 100644 /********************************************************/ /* debug Floppy devices */ -@@ -2337,6 +2339,14 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp) +@@ -2338,6 +2340,14 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp) FDrive *drive; static int command_tables_inited = 0; @@ -352,33 +348,6 @@ index 21d18ac2e3..97fa6de423 100644 if (fdctrl->fallback == FLOPPY_DRIVE_TYPE_AUTO) { error_setg(errp, "Cannot choose a fallback FDrive type of 'auto'"); return; -diff --git a/hw/char/parallel.c b/hw/char/parallel.c -index b45e67bfbb..e5f108211b 100644 ---- a/hw/char/parallel.c -+++ b/hw/char/parallel.c -@@ -29,6 +29,7 @@ - #include "chardev/char-parallel.h" - #include "chardev/char-fe.h" - #include "hw/acpi/aml-build.h" -+#include "hw/boards.h" - #include "hw/irq.h" - #include "hw/isa/isa.h" - #include "hw/qdev-properties.h" -@@ -534,6 +535,14 @@ static void parallel_isa_realizefn(DeviceState *dev, Error **errp) - int base; - uint8_t dummy; - -+ /* Restricted for Red Hat Enterprise Linux */ -+ MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine()); -+ if (strstr(mc->name, "rhel")) { -+ error_setg(errp, "Device %s is not supported with machine type %s", -+ object_get_typename(OBJECT(dev)), mc->name); -+ return; -+ } -+ - if (!qemu_chr_fe_backend_connected(&s->chr)) { - error_setg(errp, "Can't create parallel device, empty char device"); - return; diff --git a/hw/cpu/meson.build b/hw/cpu/meson.build index 9e52fee9e7..bb71c9f3e7 100644 --- a/hw/cpu/meson.build @@ -394,19 +363,21 @@ index 9e52fee9e7..bb71c9f3e7 100644 -specific_ss.add(when: 'CONFIG_A15MPCORE', if_true: files('a15mpcore.c')) +#specific_ss.add(when: 'CONFIG_A15MPCORE', if_true: files('a15mpcore.c')) diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c -index fdca6ca659..fa1a7eee51 100644 +index 3bb6a58698..6447fdb02e 100644 --- a/hw/display/cirrus_vga.c +++ b/hw/display/cirrus_vga.c -@@ -2945,6 +2945,9 @@ static void pci_cirrus_vga_realize(PCIDevice *dev, Error **errp) - PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev); - int16_t device_id = pc->device_id; +@@ -2945,7 +2945,10 @@ static void pci_cirrus_vga_realize(PCIDevice *dev, Error **errp) + PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(dev); + int16_t device_id = pc->device_id; +- /* + warn_report("'cirrus-vga' is deprecated, " + "please use a different VGA card instead"); + - /* follow real hardware, cirrus card emulated has 4 MB video memory. - Also accept 8 MB/16 MB for backward compatibility. */ - if (s->vga.vram_size_mb != 4 && s->vga.vram_size_mb != 8 && ++ /* + * Follow real hardware, cirrus card emulated has 4 MB video memory. + * Also accept 8 MB/16 MB for backward compatibility. + */ diff --git a/hw/ide/piix.c b/hw/ide/piix.c index ce89fd0aa3..fbcf802b13 100644 --- a/hw/ide/piix.c @@ -431,10 +402,10 @@ index ce89fd0aa3..fbcf802b13 100644 static const TypeInfo piix4_ide_info = { diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c -index baba62f357..bc360347ea 100644 +index 4efdf75620..5143ebaa27 100644 --- a/hw/input/pckbd.c +++ b/hw/input/pckbd.c -@@ -796,6 +796,8 @@ static void i8042_class_initfn(ObjectClass *klass, void *data) +@@ -814,6 +814,8 @@ static void i8042_class_initfn(ObjectClass *klass, void *data) dc->vmsd = &vmstate_kbd_isa; isa->build_aml = i8042_build_aml; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); @@ -464,10 +435,10 @@ index f5bc81296d..282d01e374 100644 static void e1000_register_types(void) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c -index 58e7341cb7..8ba34f6a1d 100644 +index 8a4861f45a..fcb5dfe792 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c -@@ -370,10 +370,12 @@ static const TypeInfo spapr_cpu_core_type_infos[] = { +@@ -379,10 +379,12 @@ static const TypeInfo spapr_cpu_core_type_infos[] = { .instance_size = sizeof(SpaprCpuCore), .class_size = sizeof(SpaprCpuCoreClass), }, @@ -480,25 +451,6 @@ index 58e7341cb7..8ba34f6a1d 100644 DEFINE_SPAPR_CPU_CORE_TYPE("power7_v2.3"), DEFINE_SPAPR_CPU_CORE_TYPE("power7+_v2.1"), DEFINE_SPAPR_CPU_CORE_TYPE("power8_v2.0"), -diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c -index 9520471be2..202e032524 100644 ---- a/hw/timer/hpet.c -+++ b/hw/timer/hpet.c -@@ -733,6 +733,14 @@ static void hpet_realize(DeviceState *dev, Error **errp) - int i; - HPETTimer *timer; - -+ /* Restricted for Red Hat Enterprise Linux */ -+ MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine()); -+ if (strstr(mc->name, "rhel")) { -+ error_setg(errp, "Device %s is not supported with machine type %s", -+ object_get_typename(OBJECT(dev)), mc->name); -+ return; -+ } -+ - if (!s->intcap) { - warn_report("Hpet's intcap not initialized"); - } diff --git a/hw/usb/meson.build b/hw/usb/meson.build index de853d780d..0776ae6a20 100644 --- a/hw/usb/meson.build @@ -591,7 +543,7 @@ index 13d0e9b195..3826fa5122 100644 { .name = "max", .initfn = arm_max_initfn }, #endif diff --git a/target/ppc/cpu-models.c b/target/ppc/cpu-models.c -index 4baa111713..d779c4d1d5 100644 +index 976be5e0d1..dd78883410 100644 --- a/target/ppc/cpu-models.c +++ b/target/ppc/cpu-models.c @@ -66,6 +66,7 @@ @@ -600,9 +552,9 @@ index 4baa111713..d779c4d1d5 100644 +#if 0 /* Embedded and 32-bit CPUs disabled for Red Hat Enterprise Linux */ /* Embedded PowerPC */ - /* PowerPC 401 family */ - POWERPC_DEF("401", CPU_POWERPC_401, 401, -@@ -740,8 +741,10 @@ + /* PowerPC 405 family */ + /* PowerPC 405 cores */ +@@ -698,8 +699,10 @@ "PowerPC 7447A v1.2 (G4)") POWERPC_DEF("7457a_v1.2", CPU_POWERPC_74x7A_v12, 7455, "PowerPC 7457A v1.2 (G4)") @@ -613,7 +565,7 @@ index 4baa111713..d779c4d1d5 100644 POWERPC_DEF("970_v2.2", CPU_POWERPC_970_v22, 970, "PowerPC 970 v2.2") POWERPC_DEF("970fx_v1.0", CPU_POWERPC_970FX_v10, 970, -@@ -760,6 +763,7 @@ +@@ -718,6 +721,7 @@ "PowerPC 970MP v1.1") POWERPC_DEF("power5+_v2.1", CPU_POWERPC_POWER5P_v21, POWER5P, "POWER5+ v2.1") @@ -621,15 +573,7 @@ index 4baa111713..d779c4d1d5 100644 POWERPC_DEF("power7_v2.3", CPU_POWERPC_POWER7_v23, POWER7, "POWER7 v2.3") POWERPC_DEF("power7+_v2.1", CPU_POWERPC_POWER7P_v21, POWER7, -@@ -784,6 +788,7 @@ - /* PowerPC CPU aliases */ - - PowerPCCPUAlias ppc_cpu_aliases[] = { -+#if 0 /* Embedded and 32-bit CPUs disabled for Red Hat Enterprise Linux */ - { "403", "403gc" }, - { "405", "405d4" }, - { "405cr", "405crc" }, -@@ -942,12 +947,15 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { +@@ -897,12 +901,15 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { { "7447a", "7447a_v1.2" }, { "7457a", "7457a_v1.2" }, { "apollo7pm", "7457a_v1.0" }, @@ -645,7 +589,7 @@ index 4baa111713..d779c4d1d5 100644 { "power7", "power7_v2.3" }, { "power7+", "power7+_v2.1" }, { "power8e", "power8e_v2.1" }, -@@ -957,6 +965,7 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { +@@ -912,6 +919,7 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { { "power10", "power10_v2.0" }, #endif @@ -653,7 +597,7 @@ index 4baa111713..d779c4d1d5 100644 /* Generic PowerPCs */ #if defined(TARGET_PPC64) { "ppc64", "970fx_v3.1" }, -@@ -964,5 +973,6 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { +@@ -919,5 +927,6 @@ PowerPCCPUAlias ppc_cpu_aliases[] = { { "ppc32", "604" }, { "ppc", "604" }, { "default", "604" }, @@ -675,10 +619,10 @@ index 05c3ccaaff..6a04ccab1b 100644 /* detect missing features if any to properly report them */ diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c -index 5b1fdb55c4..c52434985b 100644 +index 6acf14d5ec..74f089d87f 100644 --- a/target/s390x/kvm/kvm.c +++ b/target/s390x/kvm/kvm.c -@@ -2508,6 +2508,14 @@ void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp) +@@ -2512,6 +2512,14 @@ void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp) error_setg(errp, "KVM doesn't support CPU models"); return; } @@ -694,5 +638,5 @@ index 5b1fdb55c4..c52434985b 100644 prop.ibc = s390_ibc_from_cpu_model(model); /* configure cpu features indicated via STFL(e) */ -- -2.27.0 +2.31.1 diff --git a/0007-Machine-type-related-general-changes.patch b/0006-Machine-type-related-general-changes.patch similarity index 87% rename from 0007-Machine-type-related-general-changes.patch rename to 0006-Machine-type-related-general-changes.patch index 9baf215..c3b08a4 100644 --- a/0007-Machine-type-related-general-changes.patch +++ b/0006-Machine-type-related-general-changes.patch @@ -1,4 +1,4 @@ -From ef9b78c3f2810541eac453a3f8a8753763b1378d Mon Sep 17 00:00:00 2001 +From a525db3951dc68c469d1f51bdc69ab6e75e72c37 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 11 Jan 2019 09:54:45 +0100 Subject: Machine type related general changes @@ -9,14 +9,16 @@ architecture. Signed-off-by: Miroslav Rezanina -- -Rebase notes (6.2.0 RC0): +Rebase notes (6.2.0): - Do not duplicate minimal_version_id for piix4_pm - Remove empty line chunks in serial.c - Remove migration.h include in serial.c - -Rebase notes (6.2.0 RC1): - Update hw_compat_rhel_8_5 (from MR 66) +Rebase notes (7.0.0): +- Remove downstream changes leftovers in hw/rtc/mc146818rtc.c +- Remove unnecessary change in hw/usb/hcd-uhci.c + Merged patches (6.1.0): - f2fb42a3c6 redhat: add missing entries in hw_compat_rhel_8_4 - 1949ec258e hw/arm/virt: Disable PL011 clock migration through hw_compat_rhel_8_3 @@ -27,32 +29,34 @@ Merged patches (6.1.0): - af69d1ca6e Remove RHEL 7.4.0 machine types (only generic changes) - 8f7a74ab78 Remove RHEL 7.5.0 machine types (only generic changes) -Merged patches (6.2.0 RC0): +Merged patches (6.2.0): - d687ac13d2 redhat: Define hw_compat_rhel_8_5 + +Merged patches (7.0.0): +- ef5afcc86d Fix virtio-net-pci* "vectors" compat +- 168f0d56e3 compat: Update hw_compat_rhel_8_5 with 6.2.0 RC2 changes --- hw/acpi/piix4.c | 6 +- hw/arm/virt.c | 2 +- - hw/core/machine.c | 180 +++++++++++++++++++++++++++++++++++ + hw/core/machine.c | 186 +++++++++++++++++++++++++++++++++++ hw/display/vga-isa.c | 2 +- hw/i386/pc_piix.c | 2 + hw/i386/pc_q35.c | 2 + hw/net/rtl8139.c | 4 +- - hw/rtc/mc146818rtc.c | 2 + hw/smbios/smbios.c | 46 ++++++++- hw/timer/i8254_common.c | 2 +- - hw/usb/hcd-uhci.c | 4 +- - hw/usb/hcd-xhci-pci.c | 59 +++++++++--- + hw/usb/hcd-xhci-pci.c | 59 ++++++++--- hw/usb/hcd-xhci-pci.h | 1 + include/hw/boards.h | 21 ++++ include/hw/firmware/smbios.h | 5 +- include/hw/i386/pc.h | 3 + - 16 files changed, 315 insertions(+), 26 deletions(-) + 14 files changed, 316 insertions(+), 25 deletions(-) diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c -index f0b5fac44a..8d6011c0a3 100644 +index fe5625d07a..28544e78c3 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c -@@ -278,7 +278,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id) +@@ -287,7 +287,7 @@ static bool vmstate_test_migrate_acpi_index(void *opaque, int version_id) static const VMStateDescription vmstate_acpi = { .name = "piix4_pm", .version_id = 3, @@ -61,7 +65,7 @@ index f0b5fac44a..8d6011c0a3 100644 .post_load = vmstate_acpi_post_load, .fields = (VMStateField[]) { VMSTATE_PCI_DEVICE(parent_obj, PIIX4PMState), -@@ -644,8 +644,8 @@ static void piix4_send_gpe(AcpiDeviceIf *adev, AcpiEventStatusBits ev) +@@ -653,8 +653,8 @@ static void piix4_send_gpe(AcpiDeviceIf *adev, AcpiEventStatusBits ev) static Property piix4_pm_properties[] = { DEFINE_PROP_UINT32("smb_io_base", PIIX4PMState, smb_io_base, 0), @@ -73,23 +77,23 @@ index f0b5fac44a..8d6011c0a3 100644 DEFINE_PROP_BOOL(ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, PIIX4PMState, use_acpi_hotplug_bridge, true), diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 30da05dfe0..5de4d9d73b 100644 +index d2e5ecd234..6a84031fd7 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c -@@ -1590,7 +1590,7 @@ static void virt_build_smbios(VirtMachineState *vms) +@@ -1596,7 +1596,7 @@ static void virt_build_smbios(VirtMachineState *vms) smbios_set_defaults("QEMU", product, vmc->smbios_old_sys_ver ? "1.0" : mc->name, false, -- true, SMBIOS_ENTRY_POINT_30); -+ true, NULL, NULL, SMBIOS_ENTRY_POINT_30); +- true, SMBIOS_ENTRY_POINT_TYPE_64); ++ true, NULL, NULL, SMBIOS_ENTRY_POINT_TYPE_64); smbios_get_tables(MACHINE(vms), NULL, 0, &smbios_tables, &smbios_tables_len, diff --git a/hw/core/machine.c b/hw/core/machine.c -index 53a99abc56..53a3caf4fb 100644 +index 1e23fdc14b..ea430d844e 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c -@@ -37,6 +37,186 @@ +@@ -37,6 +37,192 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-pci.h" @@ -111,6 +115,8 @@ index 53a99abc56..53a3caf4fb 100644 + { "vhost-vsock-device", "seqpacket", "off" }, + /* hw_compat_rhel_8_5 from hw_compat_6_1 */ + { "vhost-user-vsock-device", "seqpacket", "off" }, ++ /* hw_compat_rhel_8_5 from hw_compat_6_1 */ ++ { "nvme-ns", "shared", "off" }, +}; +const size_t hw_compat_rhel_8_5_len = G_N_ELEMENTS(hw_compat_rhel_8_5); + @@ -125,7 +131,11 @@ index 53a99abc56..53a3caf4fb 100644 + /* hw_compat_rhel_8_4 from hw_compat_5_2 */ + { "virtio-blk-device", "report-discard-granularity", "off" }, + /* hw_compat_rhel_8_4 from hw_compat_5_2 */ -+ { "virtio-net-pci", "vectors", "3"}, ++ /* ++ * Upstream incorrectly had "virtio-net-pci" instead of "virtio-net-pci-base", ++ * (https://bugzilla.redhat.com/show_bug.cgi?id=1999141) ++ */ ++ { "virtio-net-pci-base", "vectors", "3"}, +}; +const size_t hw_compat_rhel_8_4_len = G_N_ELEMENTS(hw_compat_rhel_8_4); + @@ -273,14 +283,14 @@ index 53a99abc56..53a3caf4fb 100644 +}; +const size_t hw_compat_rhel_7_6_len = G_N_ELEMENTS(hw_compat_rhel_7_6); + - GlobalProperty hw_compat_6_1[] = { - { "vhost-user-vsock-device", "seqpacket", "off" }, - { "nvme-ns", "shared", "off" }, + GlobalProperty hw_compat_6_2[] = { + { "PIIX4_PM", "x-not-migrate-acpi-index", "on"}, + }; diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c -index 90851e730b..a91c5d7467 100644 +index 46abbc5653..505467059b 100644 --- a/hw/display/vga-isa.c +++ b/hw/display/vga-isa.c -@@ -85,7 +85,7 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp) +@@ -88,7 +88,7 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp) } static Property vga_isa_properties[] = { @@ -290,7 +300,7 @@ index 90851e730b..a91c5d7467 100644 }; diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 223dd3e05d..dda3f64f19 100644 +index b72c03d0a6..c797e98312 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -177,6 +177,8 @@ static void pc_init1(MachineState *machine, @@ -299,11 +309,11 @@ index 223dd3e05d..dda3f64f19 100644 pcmc->smbios_uuid_encoded, + pcmc->smbios_stream_product, + pcmc->smbios_stream_version, - SMBIOS_ENTRY_POINT_21); + pcms->smbios_entry_point_type); } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index e1e100316d..235054a643 100644 +index 1780f79bc1..b695f88c45 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -200,6 +200,8 @@ static void pc_q35_init(MachineState *machine) @@ -312,11 +322,11 @@ index e1e100316d..235054a643 100644 pcmc->smbios_uuid_encoded, + pcmc->smbios_stream_product, + pcmc->smbios_stream_version, - SMBIOS_ENTRY_POINT_21); + pcms->smbios_entry_point_type); } diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c -index 90b4fc63ce..3ffb9dd22c 100644 +index 6b65823b4b..75dacabc43 100644 --- a/hw/net/rtl8139.c +++ b/hw/net/rtl8139.c @@ -3179,7 +3179,7 @@ static int rtl8139_pre_save(void *opaque) @@ -338,28 +348,8 @@ index 90b4fc63ce..3ffb9dd22c 100644 VMSTATE_UINT16(tally_counters.TxAbt, RTL8139State), VMSTATE_UINT16(tally_counters.TxUndrn, RTL8139State), -diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c -index 4fbafddb22..6c42cc22cd 100644 ---- a/hw/rtc/mc146818rtc.c -+++ b/hw/rtc/mc146818rtc.c -@@ -43,6 +43,7 @@ - #include "qapi/qapi-events-misc-target.h" - #include "qapi/visitor.h" - #include "hw/rtc/mc146818rtc_regs.h" -+#include "migration/migration.h" - - #ifdef TARGET_I386 - #include "qapi/qapi-commands-misc-target.h" -@@ -821,6 +822,7 @@ static int rtc_post_load(void *opaque, int version_id) - static bool rtc_irq_reinject_on_ack_count_needed(void *opaque) - { - RTCState *s = (RTCState *)opaque; -+ - return s->irq_reinject_on_ack_count != 0; - } - diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c -index 7397e56737..3a4bb894ba 100644 +index 60349ee402..0edcc98434 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -57,6 +57,9 @@ static bool smbios_legacy = true; @@ -372,16 +362,16 @@ index 7397e56737..3a4bb894ba 100644 uint8_t *smbios_tables; size_t smbios_tables_len; -@@ -619,7 +622,7 @@ static void smbios_build_type_1_table(void) +@@ -639,7 +642,7 @@ static void smbios_build_type_1_table(void) static void smbios_build_type_2_table(void) { -- SMBIOS_BUILD_TABLE_PRE(2, 0x200, false); /* optional */ -+ SMBIOS_BUILD_TABLE_PRE(2, 0x200, smbios_type2_required); +- SMBIOS_BUILD_TABLE_PRE(2, T2_BASE, false); /* optional */ ++ SMBIOS_BUILD_TABLE_PRE(2, T2_BASE, smbios_type2_required); SMBIOS_TABLE_SET_STR(2, manufacturer_str, type2.manufacturer); SMBIOS_TABLE_SET_STR(2, product_str, type2.product); -@@ -888,7 +891,10 @@ void smbios_set_cpuid(uint32_t version, uint32_t features) +@@ -914,7 +917,10 @@ void smbios_set_cpuid(uint32_t version, uint32_t features) void smbios_set_defaults(const char *manufacturer, const char *product, const char *version, bool legacy_mode, @@ -393,7 +383,7 @@ index 7397e56737..3a4bb894ba 100644 { smbios_have_defaults = true; smbios_legacy = legacy_mode; -@@ -909,11 +915,45 @@ void smbios_set_defaults(const char *manufacturer, const char *product, +@@ -935,11 +941,45 @@ void smbios_set_defaults(const char *manufacturer, const char *product, g_free(smbios_entries); } @@ -453,25 +443,6 @@ index 050875b497..32935da46c 100644 VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2, vmstate_pit_channel, PITChannelState), VMSTATE_INT64(channels[0].next_transition_time, -diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c -index d1b5657d72..7930b868fa 100644 ---- a/hw/usb/hcd-uhci.c -+++ b/hw/usb/hcd-uhci.c -@@ -1166,11 +1166,13 @@ void usb_uhci_common_realize(PCIDevice *dev, Error **errp) - UHCIState *s = UHCI(dev); - uint8_t *pci_conf = s->dev.config; - int i; -+ int irq_pin; - - pci_conf[PCI_CLASS_PROG] = 0x00; - /* TODO: reset value should be 0. */ - pci_conf[USB_SBRN] = USB_RELEASE_1; /* release number */ -- pci_config_set_interrupt_pin(pci_conf, u->info.irq_pin + 1); -+ irq_pin = u->info.irq_pin; -+ pci_config_set_interrupt_pin(pci_conf, irq_pin + 1); - s->irq = pci_allocate_irq(dev); - - if (s->masterbus) { diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c index e934b1a5b1..e18b05e528 100644 --- a/hw/usb/hcd-xhci-pci.c @@ -584,10 +555,10 @@ index c193f79443..086a1feb1e 100644 #endif diff --git a/include/hw/boards.h b/include/hw/boards.h -index 9c1c190104..b0a6e05b48 100644 +index c92ac8815c..c90a19b4d1 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h -@@ -441,4 +441,25 @@ extern const size_t hw_compat_2_2_len; +@@ -449,4 +449,25 @@ extern const size_t hw_compat_2_2_len; extern GlobalProperty hw_compat_2_1[]; extern const size_t hw_compat_2_1_len; @@ -614,10 +585,10 @@ index 9c1c190104..b0a6e05b48 100644 + #endif diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h -index 5a0dd0c8cf..2cb1ec2bab 100644 +index 4b7ad77a44..9acff96a86 100644 --- a/include/hw/firmware/smbios.h +++ b/include/hw/firmware/smbios.h -@@ -278,7 +278,10 @@ void smbios_entry_add(QemuOpts *opts, Error **errp); +@@ -272,7 +272,10 @@ void smbios_entry_add(QemuOpts *opts, Error **errp); void smbios_set_cpuid(uint32_t version, uint32_t features); void smbios_set_defaults(const char *manufacturer, const char *product, const char *version, bool legacy_mode, @@ -630,10 +601,10 @@ index 5a0dd0c8cf..2cb1ec2bab 100644 void smbios_get_tables(MachineState *ms, const struct smbios_phys_mem_area *mem_array, diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 9ab39e428f..7ccc9a1a07 100644 +index 1a27de9c8b..91331059d9 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h -@@ -107,6 +107,9 @@ struct PCMachineClass { +@@ -113,6 +113,9 @@ struct PCMachineClass { bool smbios_defaults; bool smbios_legacy_mode; bool smbios_uuid_encoded; @@ -644,5 +615,5 @@ index 9ab39e428f..7ccc9a1a07 100644 /* RAM / address space compat: */ bool gigabyte_align; -- -2.27.0 +2.31.1 diff --git a/0008-Add-aarch64-machine-types.patch b/0007-Add-aarch64-machine-types.patch similarity index 75% rename from 0008-Add-aarch64-machine-types.patch rename to 0007-Add-aarch64-machine-types.patch index 07beb75..3c44b11 100644 --- a/0008-Add-aarch64-machine-types.patch +++ b/0007-Add-aarch64-machine-types.patch @@ -1,4 +1,4 @@ -From 19d36c4519a1a560cce60b212e3afdf7eb026e45 Mon Sep 17 00:00:00 2001 +From 697aaa43e3c0f20fc312f06be6c1093f1ba907e1 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 12:53:31 +0200 Subject: Add aarch64 machine types @@ -13,19 +13,32 @@ Rebase notes (6.1.0): - ea4c0b32d9 arm/virt: Register highmem and gic-version as class properties - 895e1fa86a hw/arm/virt: Add 8.5 and 9.0 machine types and remove older ones -Merged patches (6.2.0 RC0): +Rebase notes (7.0.0): +- Added dtb-kaslr-seed option +- Set no_tcg_lpa2 to true + +Merged patches (6.2.0): - 9a3d4fde0e hw/arm/virt: Remove 9.0 machine type - f7d04d6695 hw: arm: virt: Add hw_compat_rhel_8_5 to 8.5 machine type + +Merged patches (7.0.0): +- 3b82be3dd3 redhat: virt-rhel8.5.0: Update machine type compatibility for QEMU 6.2.0 update +- c354a86c9b hw/arm/virt: Register "iommu" as a class property +- c1a2630dc9 hw/arm/virt: Register "its" as a class property +- 9d8c61dc93 hw/arm/virt: Rename default_bus_bypass_iommu +- a1d1b6eeb6 hw/arm/virt: Expose the 'RAS' option +- 47f8fe1b82 hw/arm/virt: Add 9.0 machine type and remove 8.5 one +- ed2346788f hw/arm/virt: Check no_tcg_its and minor style changes --- - hw/arm/virt.c | 205 +++++++++++++++++++++++++++++++++++++++++- + hw/arm/virt.c | 234 +++++++++++++++++++++++++++++++++++++++++- include/hw/arm/virt.h | 8 ++ - 2 files changed, 212 insertions(+), 1 deletion(-) + 2 files changed, 241 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 5de4d9d73b..7d51824263 100644 +index 6a84031fd7..e06862d22a 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c -@@ -79,6 +79,7 @@ +@@ -80,6 +80,7 @@ #include "hw/char/pl011.h" #include "qemu/guest-random.h" @@ -33,7 +46,7 @@ index 5de4d9d73b..7d51824263 100644 #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \ static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ void *data) \ -@@ -105,7 +106,48 @@ +@@ -106,7 +107,48 @@ DEFINE_VIRT_MACHINE_LATEST(major, minor, true) #define DEFINE_VIRT_MACHINE(major, minor) \ DEFINE_VIRT_MACHINE_LATEST(major, minor, false) @@ -83,7 +96,7 @@ index 5de4d9d73b..7d51824263 100644 /* Number of external interrupt lines to configure the GIC with */ #define NUM_IRQS 256 -@@ -2180,6 +2222,7 @@ static void machvirt_init(MachineState *machine) +@@ -2250,6 +2292,7 @@ static void machvirt_init(MachineState *machine) qemu_add_machine_init_done_notifier(&vms->machine_done); } @@ -91,7 +104,7 @@ index 5de4d9d73b..7d51824263 100644 static bool virt_get_secure(Object *obj, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -2207,6 +2250,7 @@ static void virt_set_virt(Object *obj, bool value, Error **errp) +@@ -2277,6 +2320,7 @@ static void virt_set_virt(Object *obj, bool value, Error **errp) vms->virt = value; } @@ -99,15 +112,15 @@ index 5de4d9d73b..7d51824263 100644 static bool virt_get_highmem(Object *obj, Error **errp) { -@@ -2304,6 +2348,7 @@ static void virt_set_acpi(Object *obj, Visitor *v, const char *name, - visit_type_OnOffAuto(v, name, &vms->acpi, errp); +@@ -2402,6 +2446,7 @@ static void virt_set_ras(Object *obj, bool value, Error **errp) + vms->ras = value; } +#if 0 /* Disabled for Red Hat Enterprise Linux */ - static bool virt_get_ras(Object *obj, Error **errp) + static bool virt_get_mte(Object *obj, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -2331,6 +2376,7 @@ static void virt_set_mte(Object *obj, bool value, Error **errp) +@@ -2415,6 +2460,7 @@ static void virt_set_mte(Object *obj, bool value, Error **errp) vms->mte = value; } @@ -115,7 +128,7 @@ index 5de4d9d73b..7d51824263 100644 static char *virt_get_gic_version(Object *obj, Error **errp) { -@@ -2666,6 +2712,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) +@@ -2818,6 +2864,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) return fixed_ipa ? 0 : requested_pa_size; } @@ -123,7 +136,7 @@ index 5de4d9d73b..7d51824263 100644 static void virt_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); -@@ -3031,3 +3078,159 @@ static void virt_machine_2_6_options(MachineClass *mc) +@@ -3206,3 +3253,188 @@ static void virt_machine_2_6_options(MachineClass *mc) vmc->no_pmu = true; } DEFINE_VIRT_MACHINE(2, 6) @@ -180,6 +193,30 @@ index 5de4d9d73b..7d51824263 100644 + "Set GIC version. " + "Valid values are 2, 3, host and max"); + ++ object_class_property_add_str(oc, "iommu", virt_get_iommu, virt_set_iommu); ++ object_class_property_set_description(oc, "iommu", ++ "Set the IOMMU type. " ++ "Valid values are none and smmuv3"); ++ ++ object_class_property_add_bool(oc, "default-bus-bypass-iommu", ++ virt_get_default_bus_bypass_iommu, ++ virt_set_default_bus_bypass_iommu); ++ object_class_property_set_description(oc, "default-bus-bypass-iommu", ++ "Set on/off to enable/disable " ++ "bypass_iommu for default root bus"); ++ ++ object_class_property_add_bool(oc, "ras", virt_get_ras, ++ virt_set_ras); ++ object_class_property_set_description(oc, "ras", ++ "Set on/off to enable/disable reporting host memory errors " ++ "to a KVM guest using ACPI and guest external abort exceptions"); ++ ++ object_class_property_add_bool(oc, "its", virt_get_its, ++ virt_set_its); ++ object_class_property_set_description(oc, "its", ++ "Set on/off to enable/disable " ++ "ITS instantiation"); ++ + object_class_property_add_str(oc, "x-oem-id", + virt_get_oem_id, + virt_set_oem_id); @@ -188,6 +225,7 @@ index 5de4d9d73b..7d51824263 100644 + "in ACPI table header." + "The string may be up to 6 bytes in size"); + ++ + object_class_property_add_str(oc, "x-oem-table-id", + virt_get_oem_table_id, + virt_set_oem_table_id); @@ -195,13 +233,13 @@ index 5de4d9d73b..7d51824263 100644 + "Override the default value of field OEM Table ID " + "in ACPI table header." + "The string may be up to 8 bytes in size"); -+ object_class_property_add_bool(oc, "default_bus_bypass_iommu", -+ virt_get_default_bus_bypass_iommu, -+ virt_set_default_bus_bypass_iommu); -+ object_class_property_set_description(oc, "default_bus_bypass_iommu", -+ "Set on/off to enable/disable " -+ "bypass_iommu for default root bus"); + ++ object_class_property_add_bool(oc, "dtb-kaslr-seed", ++ virt_get_dtb_kaslr_seed, ++ virt_set_dtb_kaslr_seed); ++ object_class_property_set_description(oc, "dtb-kaslr-seed", ++ "Set off to disable passing of kaslr-seed " ++ "dtb node to guest"); +} + +static void rhel_virt_instance_init(Object *obj) @@ -226,19 +264,19 @@ index 5de4d9d73b..7d51824263 100644 + } else { + /* Default allows ITS instantiation */ + vms->its = true; -+ object_property_add_bool(obj, "its", virt_get_its, -+ virt_set_its); -+ object_property_set_description(obj, "its", -+ "Set on/off to enable/disable " -+ "ITS instantiation"); ++ ++ if (vmc->no_tcg_its) { ++ vms->tcg_its = false; ++ } else { ++ vms->tcg_its = true; ++ } + } + + /* Default disallows iommu instantiation */ + vms->iommu = VIRT_IOMMU_NONE; -+ object_property_add_str(obj, "iommu", virt_get_iommu, virt_set_iommu); -+ object_property_set_description(obj, "iommu", -+ "Set the IOMMU type. " -+ "Valid values are none and smmuv3"); ++ ++ /* The default root bus is attached to iommu by default */ ++ vms->default_bus_bypass_iommu = false; + + /* Default disallows RAS instantiation and is non-configurable for RHEL */ + vms->ras = false; @@ -246,15 +284,15 @@ index 5de4d9d73b..7d51824263 100644 + /* MTE is disabled by default and non-configurable for RHEL */ + vms->mte = false; + -+ /* The default root bus is attached to iommu by default */ -+ vms->default_bus_bypass_iommu = false; ++ /* Supply a kaslr-seed by default */ ++ vms->dtb_kaslr_seed = true; + + vms->irqmap = a15irqmap; + + virt_flash_create(vms); ++ + vms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); + vms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); -+ +} + +static const TypeInfo rhel_machine_info = { @@ -277,17 +315,21 @@ index 5de4d9d73b..7d51824263 100644 +} +type_init(rhel_machine_init); + -+static void rhel850_virt_options(MachineClass *mc) ++static void rhel900_virt_options(MachineClass *mc) +{ ++ VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); ++ + compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); -+ compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); ++ ++ /* Disable FEAT_LPA2 since old kernels (<= v5.12) don't boot with that feature */ ++ vmc->no_tcg_lpa2 = true; +} -+DEFINE_RHEL_MACHINE_AS_LATEST(8, 5, 0) ++DEFINE_RHEL_MACHINE_AS_LATEST(9, 0, 0) diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h -index dc6b66ffc8..9364628847 100644 +index 7e76ee2619..9b1efe8f0e 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h -@@ -175,9 +175,17 @@ struct VirtMachineState { +@@ -179,9 +179,17 @@ struct VirtMachineState { #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM) @@ -306,5 +348,5 @@ index dc6b66ffc8..9364628847 100644 bool virt_is_acpi_enabled(VirtMachineState *vms); -- -2.27.0 +2.31.1 diff --git a/0009-Add-ppc64-machine-types.patch b/0008-Add-ppc64-machine-types.patch similarity index 93% rename from 0009-Add-ppc64-machine-types.patch rename to 0008-Add-ppc64-machine-types.patch index 90a6ff4..860e803 100644 --- a/0009-Add-ppc64-machine-types.patch +++ b/0008-Add-ppc64-machine-types.patch @@ -1,4 +1,4 @@ -From 2d595bc1744fc764ef506fd6ed6555f267d01ea4 Mon Sep 17 00:00:00 2001 +From f61b3d7dc000886e23943457ee9baf1d4cae43b4 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 13:27:13 +0200 Subject: Add ppc64 machine types @@ -7,7 +7,7 @@ Adding changes to add RHEL machine types for ppc64 architecture. Signed-off-by: Miroslav Rezanina -Rebase notes (6.2.0 rc1): +Rebase notes (6.2.0): - Fixed rebase conflict relicts - Update machine type compat for 6.2 (from MR 66) @@ -30,10 +30,10 @@ Merged patches (6.1.0): 7 files changed, 313 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index 3b5fd749be..f4bb5f15f0 100644 +index a4372ba189..5fdf8b506d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c -@@ -1593,6 +1593,9 @@ static void spapr_machine_reset(MachineState *machine) +@@ -1622,6 +1622,9 @@ static void spapr_machine_reset(MachineState *machine) pef_kvm_reset(machine->cgs, &error_fatal); spapr_caps_apply(spapr); @@ -43,7 +43,7 @@ index 3b5fd749be..f4bb5f15f0 100644 first_ppc_cpu = POWERPC_CPU(first_cpu); if (kvm_enabled() && kvmppc_has_cap_mmu_radix() && -@@ -3288,6 +3291,20 @@ static void spapr_set_host_serial(Object *obj, const char *value, Error **errp) +@@ -3317,6 +3320,20 @@ static void spapr_set_host_serial(Object *obj, const char *value, Error **errp) spapr->host_serial = g_strdup(value); } @@ -64,7 +64,7 @@ index 3b5fd749be..f4bb5f15f0 100644 static void spapr_instance_init(Object *obj) { SpaprMachineState *spapr = SPAPR_MACHINE(obj); -@@ -3366,6 +3383,12 @@ static void spapr_instance_init(Object *obj) +@@ -3395,6 +3412,12 @@ static void spapr_instance_init(Object *obj) spapr_get_host_serial, spapr_set_host_serial); object_property_set_description(obj, "host-serial", "Host serial number to advertise in guest device tree"); @@ -77,7 +77,7 @@ index 3b5fd749be..f4bb5f15f0 100644 } static void spapr_machine_finalizefn(Object *obj) -@@ -4614,6 +4637,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) +@@ -4652,6 +4675,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) vmc->client_architecture_support = spapr_vof_client_architecture_support; vmc->quiesce = spapr_vof_quiesce; vmc->setprop = spapr_vof_setprop; @@ -85,15 +85,15 @@ index 3b5fd749be..f4bb5f15f0 100644 } static const TypeInfo spapr_machine_info = { -@@ -4665,6 +4689,7 @@ static void spapr_machine_latest_class_options(MachineClass *mc) +@@ -4703,6 +4727,7 @@ static void spapr_machine_latest_class_options(MachineClass *mc) } \ type_init(spapr_machine_register_##suffix) +#if 0 /* Disabled for Red Hat Enterprise Linux */ /* - * pseries-6.2 + * pseries-7.0 */ -@@ -4781,6 +4806,7 @@ static void spapr_machine_4_1_class_options(MachineClass *mc) +@@ -4830,6 +4855,7 @@ static void spapr_machine_4_1_class_options(MachineClass *mc) } DEFINE_SPAPR_MACHINE(4_1, "4.1", false); @@ -101,7 +101,7 @@ index 3b5fd749be..f4bb5f15f0 100644 /* * pseries-4.0 -@@ -4800,6 +4826,8 @@ static bool phb_placement_4_0(SpaprMachineState *spapr, uint32_t index, +@@ -4849,6 +4875,8 @@ static bool phb_placement_4_0(SpaprMachineState *spapr, uint32_t index, *nv2atsd = 0; return true; } @@ -110,7 +110,7 @@ index 3b5fd749be..f4bb5f15f0 100644 static void spapr_machine_4_0_class_options(MachineClass *mc) { SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -@@ -5127,6 +5155,221 @@ static void spapr_machine_2_1_class_options(MachineClass *mc) +@@ -5176,6 +5204,221 @@ static void spapr_machine_2_1_class_options(MachineClass *mc) compat_props_add(mc->compat_props, hw_compat_2_1, hw_compat_2_1_len); } DEFINE_SPAPR_MACHINE(2_1, "2.1", false); @@ -333,10 +333,10 @@ index 3b5fd749be..f4bb5f15f0 100644 static void spapr_machine_register_types(void) { diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c -index 8ba34f6a1d..78eca1c04a 100644 +index fcb5dfe792..ab8fb5bf62 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c -@@ -24,6 +24,7 @@ +@@ -25,6 +25,7 @@ #include "sysemu/reset.h" #include "sysemu/hw_accel.h" #include "qemu/error-report.h" @@ -344,7 +344,7 @@ index 8ba34f6a1d..78eca1c04a 100644 static void spapr_reset_vcpu(PowerPCCPU *cpu) { -@@ -250,6 +251,7 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, +@@ -259,6 +260,7 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, { CPUPPCState *env = &cpu->env; CPUState *cs = CPU(cpu); @@ -352,9 +352,9 @@ index 8ba34f6a1d..78eca1c04a 100644 if (!qdev_realize(DEVICE(cpu), NULL, errp)) { return false; -@@ -261,6 +263,17 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, - cpu_ppc_set_vhyp(cpu, PPC_VIRTUAL_HYPERVISOR(spapr)); - kvmppc_set_papr(cpu); +@@ -270,6 +272,17 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, + /* Set time-base frequency to 512 MHz. vhyp must be set first. */ + cpu_ppc_tb_init(env, SPAPR_TIMEBASE_FREQ); + if (!smc->has_power9_support && + (((spapr->max_compat_pvr && @@ -371,7 +371,7 @@ index 8ba34f6a1d..78eca1c04a 100644 qdev_unrealize(DEVICE(cpu)); return false; diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h -index ee7504b976..fcd5bf9302 100644 +index f5c33dcc86..4a68e0a901 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -154,6 +154,7 @@ struct SpaprMachineClass { @@ -382,7 +382,7 @@ index ee7504b976..fcd5bf9302 100644 bool (*phb_placement)(SpaprMachineState *spapr, uint32_t index, uint64_t *buid, hwaddr *pio, hwaddr *mmio32, hwaddr *mmio64, -@@ -238,6 +239,9 @@ struct SpaprMachineState { +@@ -241,6 +242,9 @@ struct SpaprMachineState { /* Set by -boot */ char *boot_device; @@ -418,10 +418,10 @@ index 7949a24f5a..f207a9ba01 100644 const CompatInfo *compat = compat_by_pvr(compat_pvr); const CompatInfo *min = compat_by_pvr(min_compat_pvr); diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h -index e946da5f3a..23e8b76c85 100644 +index 047b24ba50..79c5ac50b9 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h -@@ -1401,6 +1401,7 @@ static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) +@@ -1462,6 +1462,7 @@ static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) /* Compatibility modes */ #if defined(TARGET_PPC64) @@ -524,5 +524,5 @@ index ee9325bf9a..20dbb95989 100644 { return -1; -- -2.27.0 +2.31.1 diff --git a/0010-Add-s390x-machine-types.patch b/0009-Add-s390x-machine-types.patch similarity index 58% rename from 0010-Add-s390x-machine-types.patch rename to 0009-Add-s390x-machine-types.patch index 1095f3a..2d8b554 100644 --- a/0010-Add-s390x-machine-types.patch +++ b/0009-Add-s390x-machine-types.patch @@ -1,4 +1,4 @@ -From ea22b5ae0a89ef53f31f67bb6845fd6c45d4f412 Mon Sep 17 00:00:00 2001 +From 680f343e58a50a99d17bc7dedd3ee90980912023 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 13:47:32 +0200 Subject: Add s390x machine types @@ -11,14 +11,38 @@ Merged patches (6.1.0): - 64a9a5c971 hw/s390x: Remove the RHEL7-only machine type - 395516d62b redhat: s390x: add rhel-8.5.0 compat machine -Merged patches (6.2.0 RC0): +Merged patches (6.2.0): - 3bf66f4520 redhat: Add s390x machine type compatibility update for 6.1 rebase ---- - hw/s390x/s390-virtio-ccw.c | 67 +++++++++++++++++++++++++++++++++++++- - 1 file changed, 66 insertions(+), 1 deletion(-) +Merged patches (7.0.0): +- e6ff4de4f7 redhat: Add s390x machine type compatibility handling for the rebase to v6.2 +- 4b0efa7e21 redhat: Add rhel8.6.0 and rhel9.0.0 machine types for s390x +- dcc64971bf RHEL: mark old machine types as deprecated (partialy) +--- + hw/core/machine.c | 6 +++ + hw/s390x/s390-virtio-ccw.c | 104 ++++++++++++++++++++++++++++++++++++- + include/hw/boards.h | 2 + + 3 files changed, 111 insertions(+), 1 deletion(-) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index ea430d844e..77202a3570 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -37,6 +37,12 @@ + #include "hw/virtio/virtio.h" + #include "hw/virtio/virtio-pci.h" + ++/* ++ * RHEL only: machine types for previous major releases are deprecated ++ */ ++const char *rhel_old_machine_deprecation = ++ "machine types for previous major releases are deprecated"; ++ + /* + * Mostly the same as hw_compat_6_0 and hw_compat_6_1 + */ diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 653587ea62..4af14cb9ca 100644 +index 90480e7cf9..ec4176a1e0 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -767,7 +767,7 @@ bool css_migration_enabled(void) @@ -35,24 +59,61 @@ index 653587ea62..4af14cb9ca 100644 type_init(ccw_machine_register_##suffix) +#if 0 /* Disabled for Red Hat Enterprise Linux */ - static void ccw_machine_6_2_instance_options(MachineState *machine) + static void ccw_machine_7_0_instance_options(MachineState *machine) { } -@@ -1100,6 +1101,70 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) +@@ -1115,6 +1116,107 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); } DEFINE_CCW_MACHINE(2_4, "2.4", false); +#endif + ++static void ccw_machine_rhel900_instance_options(MachineState *machine) ++{ ++} ++ ++static void ccw_machine_rhel900_class_options(MachineClass *mc) ++{ ++} ++DEFINE_CCW_MACHINE(rhel900, "rhel9.0.0", true); ++ ++static void ccw_machine_rhel860_instance_options(MachineState *machine) ++{ ++ /* Note: The -rhel8.6.0 and -rhel9.0.0 machines are technically identical */ ++ ccw_machine_rhel900_instance_options(machine); ++} ++ ++static void ccw_machine_rhel860_class_options(MachineClass *mc) ++{ ++ ccw_machine_rhel900_class_options(mc); ++ ++ /* All RHEL machines for prior major releases are deprecated */ ++ mc->deprecation_reason = rhel_old_machine_deprecation; ++} ++DEFINE_CCW_MACHINE(rhel860, "rhel8.6.0", false); ++ +static void ccw_machine_rhel850_instance_options(MachineState *machine) +{ ++ static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_0 }; ++ ++ ccw_machine_rhel860_instance_options(machine); ++ ++ s390_set_qemu_cpu_model(0x2964, 13, 2, qemu_cpu_feat); ++ ++ s390_cpudef_featoff_greater(16, 1, S390_FEAT_NNPA); ++ s390_cpudef_featoff_greater(16, 1, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2); ++ s390_cpudef_featoff_greater(16, 1, S390_FEAT_BEAR_ENH); ++ s390_cpudef_featoff_greater(16, 1, S390_FEAT_RDP); ++ s390_cpudef_featoff_greater(16, 1, S390_FEAT_PAI); +} + +static void ccw_machine_rhel850_class_options(MachineClass *mc) +{ ++ ccw_machine_rhel860_class_options(mc); + compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); ++ mc->smp_props.prefer_sockets = true; +} -+DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); ++DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", false); + +static void ccw_machine_rhel840_instance_options(MachineState *machine) +{ @@ -109,6 +170,17 @@ index 653587ea62..4af14cb9ca 100644 static void ccw_machine_register_types(void) { +diff --git a/include/hw/boards.h b/include/hw/boards.h +index c90a19b4d1..bf59275f18 100644 +--- a/include/hw/boards.h ++++ b/include/hw/boards.h +@@ -470,4 +470,6 @@ extern const size_t hw_compat_rhel_8_0_len; + extern GlobalProperty hw_compat_rhel_7_6[]; + extern const size_t hw_compat_rhel_7_6_len; + ++extern const char *rhel_old_machine_deprecation; ++ + #endif -- -2.27.0 +2.31.1 diff --git a/0011-Add-x86_64-machine-types.patch b/0010-Add-x86_64-machine-types.patch similarity index 76% rename from 0011-Add-x86_64-machine-types.patch rename to 0010-Add-x86_64-machine-types.patch index aecc3fb..7c48967 100644 --- a/0011-Add-x86_64-machine-types.patch +++ b/0010-Add-x86_64-machine-types.patch @@ -1,4 +1,4 @@ -From afe0cbc5cdb98998b37cf48e9a1c87a110d9fbb3 Mon Sep 17 00:00:00 2001 +From 427a575ca57966bc72e1ebf218081da530d435d7 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 13:10:31 +0200 Subject: Add x86_64 machine types @@ -10,6 +10,9 @@ Signed-off-by: Miroslav Rezanina Rebase notes (6.1.0): - Update qemu64 cpu spec +Rebase notes (7.0.0): +- Reset alias for all machine-types except latest one + Merged patches (6.1.0): - 59c284ad3b x86: Add x86 rhel8.5 machine types - a8868b42fe redhat: x86: Enable 'kvm-asyncpf-int' by default @@ -19,22 +22,54 @@ Merged patches (6.1.0): - 0215eb3356 Remove RHEL 7.3.0 machine types (only x86_64 changes) - af69d1ca6e Remove RHEL 7.4.0 machine types (only x86_64 changes) - 8f7a74ab78 Remove RHEL 7.5.0 machine types (only x86_64 changes) + +Merged patches (7.0.0): +- eae7d8dd3c x86/rhel machine types: Add pc_rhel_8_5_compat +- 6762f56469 x86/rhel machine types: Wire compat into q35 and i440fx +- 5762101438 rhel machine types/x86: set prefer_sockets +- 9ba9ddc632 x86: Add q35 RHEL 8.6.0 machine type +- 6110d865e5 x86: Add q35 RHEL 9.0.0 machine type +- dcc64971bf RHEL: mark old machine types as deprecated (partialy) +- 6b396f182b RHEL: disable "seqpacket" for "vhost-vsock-device" in rhel8.6.0 --- - hw/i386/pc.c | 114 +++++++++++++++++++++++- - hw/i386/pc_piix.c | 68 +++++++++++++- - hw/i386/pc_q35.c | 177 ++++++++++++++++++++++++++++++++++++- - include/hw/boards.h | 2 + - include/hw/i386/pc.h | 21 +++++ + hw/core/machine.c | 10 ++ + hw/i386/pc.c | 135 +++++++++++++++++++++- + hw/i386/pc_piix.c | 79 ++++++++++++- + hw/i386/pc_q35.c | 227 ++++++++++++++++++++++++++++++++++++- + hw/s390x/s390-virtio-ccw.c | 1 + + include/hw/boards.h | 5 + + include/hw/i386/pc.h | 24 ++++ target/i386/kvm/kvm-cpu.c | 1 + target/i386/kvm/kvm.c | 4 + tests/qtest/pvpanic-test.c | 5 +- - 8 files changed, 385 insertions(+), 7 deletions(-) + 10 files changed, 484 insertions(+), 7 deletions(-) +diff --git a/hw/core/machine.c b/hw/core/machine.c +index 77202a3570..28989b6e7b 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -43,6 +43,16 @@ + const char *rhel_old_machine_deprecation = + "machine types for previous major releases are deprecated"; + ++GlobalProperty hw_compat_rhel_8_6[] = { ++ /* hw_compat_rhel_8_6 bz 2065589 */ ++ /* ++ * vhost-vsock device in RHEL 8 kernels doesn't support seqpacket, so ++ * we need do disable it downstream on the latest hw_compat_rhel_8. ++ */ ++ { "vhost-vsock-device", "seqpacket", "off" }, ++}; ++const size_t hw_compat_rhel_8_6_len = G_N_ELEMENTS(hw_compat_rhel_8_6); ++ + /* + * Mostly the same as hw_compat_6_0 and hw_compat_6_1 + */ diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index a2ef40ecbc..b6d2db8d04 100644 +index fd55fc725c..263d882af6 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c -@@ -371,6 +371,116 @@ GlobalProperty pc_compat_1_4[] = { +@@ -375,6 +375,137 @@ GlobalProperty pc_compat_1_4[] = { }; const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); @@ -54,6 +89,27 @@ index a2ef40ecbc..b6d2db8d04 100644 +}; +const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); + ++GlobalProperty pc_rhel_8_5_compat[] = { ++ /* pc_rhel_8_5_compat from pc_compat_6_0 */ ++ { "qemu64" "-" TYPE_X86_CPU, "family", "6" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_0 */ ++ { "qemu64" "-" TYPE_X86_CPU, "model", "6" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_0 */ ++ { "qemu64" "-" TYPE_X86_CPU, "stepping", "3" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_0 */ ++ { TYPE_X86_CPU, "x-vendor-cpuid-only", "off" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_0 */ ++ { "ICH9-LPC", ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, "off" }, ++ ++ /* pc_rhel_8_5_compat from pc_compat_6_1 */ ++ { TYPE_X86_CPU, "hv-version-id-build", "0x1bbc" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_1 */ ++ { TYPE_X86_CPU, "hv-version-id-major", "0x0006" }, ++ /* pc_rhel_8_5_compat from pc_compat_6_1 */ ++ { TYPE_X86_CPU, "hv-version-id-minor", "0x0001" }, ++}; ++const size_t pc_rhel_8_5_compat_len = G_N_ELEMENTS(pc_rhel_8_5_compat); ++ +GlobalProperty pc_rhel_8_4_compat[] = { + /* pc_rhel_8_4_compat from pc_compat_5_2 */ + { "ICH9-LPC", "x-smi-cpu-hotunplug", "off" }, @@ -151,7 +207,7 @@ index a2ef40ecbc..b6d2db8d04 100644 GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled) { GSIState *s; -@@ -1694,6 +1804,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) +@@ -1738,6 +1869,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) pcmc->pvh_enabled = true; pcmc->kvmclock_create_always = true; assert(!mc->get_hotplug_handler); @@ -159,7 +215,7 @@ index a2ef40ecbc..b6d2db8d04 100644 mc->get_hotplug_handler = pc_get_hotplug_handler; mc->hotplug_allowed = pc_hotplug_allowed; mc->cpu_index_to_instance_props = x86_cpu_index_to_props; -@@ -1704,7 +1815,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) +@@ -1748,7 +1880,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) mc->has_hotpluggable_cpus = true; mc->default_boot_order = "cad"; mc->block_default_type = IF_IDE; @@ -170,7 +226,7 @@ index a2ef40ecbc..b6d2db8d04 100644 mc->wakeup = pc_machine_wakeup; hc->pre_plug = pc_machine_device_pre_plug_cb; diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index dda3f64f19..dabc6c1933 100644 +index c797e98312..0cacc0d623 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -50,6 +50,7 @@ @@ -200,7 +256,7 @@ index dda3f64f19..dabc6c1933 100644 static void pc_compat_2_3_fn(MachineState *machine) { X86MachineState *x86ms = X86_MACHINE(machine); -@@ -951,3 +953,65 @@ static void xenfv_3_1_machine_options(MachineClass *m) +@@ -967,3 +969,76 @@ static void xenfv_3_1_machine_options(MachineClass *m) DEFINE_PC_MACHINE(xenfv, "xenfv-3.1", pc_xen_hvm_init, xenfv_3_1_machine_options); #endif @@ -224,6 +280,7 @@ index dda3f64f19..dabc6c1933 100644 + compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); + m->alias = "pc"; + m->is_default = 1; ++ m->smp_props.prefer_sockets = true; +} + +static void pc_init_rhel760(MachineState *machine) @@ -239,11 +296,21 @@ index dda3f64f19..dabc6c1933 100644 + m->desc = "RHEL 7.6.0 PC (i440FX + PIIX, 1996)"; + m->async_pf_vmexit_disable = true; + m->smbus_no_migration_support = true; ++ ++ /* All RHEL machines for prior major releases are deprecated */ ++ m->deprecation_reason = rhel_old_machine_deprecation; ++ + pcmc->pvh_enabled = false; + pcmc->default_cpu_version = CPU_VERSION_LEGACY; + pcmc->kvmclock_create_always = false; + /* From pc_i440fx_5_1_machine_options() */ + pcmc->pci_root_uid = 1; ++ compat_props_add(m->compat_props, hw_compat_rhel_8_6, ++ hw_compat_rhel_8_6_len); ++ compat_props_add(m->compat_props, hw_compat_rhel_8_5, ++ hw_compat_rhel_8_5_len); ++ compat_props_add(m->compat_props, pc_rhel_8_5_compat, ++ pc_rhel_8_5_compat_len); + compat_props_add(m->compat_props, hw_compat_rhel_8_4, + hw_compat_rhel_8_4_len); + compat_props_add(m->compat_props, pc_rhel_8_4_compat, @@ -267,7 +334,7 @@ index dda3f64f19..dabc6c1933 100644 +DEFINE_PC_MACHINE(rhel760, "pc-i440fx-rhel7.6.0", pc_init_rhel760, + pc_machine_rhel760_options); diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 235054a643..04c911da18 100644 +index b695f88c45..157160e069 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -197,8 +197,8 @@ static void pc_q35_init(MachineState *machine) @@ -289,7 +356,7 @@ index 235054a643..04c911da18 100644 static void pc_q35_machine_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -@@ -620,3 +621,175 @@ static void pc_q35_2_4_machine_options(MachineClass *m) +@@ -631,3 +632,225 @@ static void pc_q35_2_4_machine_options(MachineClass *m) DEFINE_Q35_MACHINE(v2_4, "pc-q35-2.4", NULL, pc_q35_2_4_machine_options); @@ -318,6 +385,48 @@ index 235054a643..04c911da18 100644 + compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); +} + ++static void pc_q35_init_rhel900(MachineState *machine) ++{ ++ pc_q35_init(machine); ++} ++ ++static void pc_q35_machine_rhel900_options(MachineClass *m) ++{ ++ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); ++ pc_q35_machine_rhel_options(m); ++ m->desc = "RHEL-9.0.0 PC (Q35 + ICH9, 2009)"; ++ pcmc->smbios_stream_product = "RHEL"; ++ pcmc->smbios_stream_version = "9.0.0"; ++} ++ ++DEFINE_PC_MACHINE(q35_rhel900, "pc-q35-rhel9.0.0", pc_q35_init_rhel900, ++ pc_q35_machine_rhel900_options); ++ ++static void pc_q35_init_rhel860(MachineState *machine) ++{ ++ pc_q35_init(machine); ++} ++ ++static void pc_q35_machine_rhel860_options(MachineClass *m) ++{ ++ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); ++ pc_q35_machine_rhel900_options(m); ++ m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)"; ++ m->alias = NULL; ++ ++ /* All RHEL machines for prior major releases are deprecated */ ++ m->deprecation_reason = rhel_old_machine_deprecation; ++ ++ pcmc->smbios_stream_product = "RHEL-AV"; ++ pcmc->smbios_stream_version = "8.6.0"; ++ compat_props_add(m->compat_props, hw_compat_rhel_8_6, ++ hw_compat_rhel_8_6_len); ++} ++ ++DEFINE_PC_MACHINE(q35_rhel860, "pc-q35-rhel8.6.0", pc_q35_init_rhel860, ++ pc_q35_machine_rhel860_options); ++ ++ +static void pc_q35_init_rhel850(MachineState *machine) +{ + pc_q35_init(machine); @@ -326,10 +435,16 @@ index 235054a643..04c911da18 100644 +static void pc_q35_machine_rhel850_options(MachineClass *m) +{ + PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel_options(m); ++ pc_q35_machine_rhel860_options(m); + m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; ++ m->alias = NULL; + pcmc->smbios_stream_product = "RHEL-AV"; + pcmc->smbios_stream_version = "8.5.0"; ++ compat_props_add(m->compat_props, hw_compat_rhel_8_5, ++ hw_compat_rhel_8_5_len); ++ compat_props_add(m->compat_props, pc_rhel_8_5_compat, ++ pc_rhel_8_5_compat_len); ++ m->smp_props.prefer_sockets = true; +} + +DEFINE_PC_MACHINE(q35_rhel850, "pc-q35-rhel8.5.0", pc_q35_init_rhel850, @@ -369,6 +484,7 @@ index 235054a643..04c911da18 100644 + PCMachineClass *pcmc = PC_MACHINE_CLASS(m); + pc_q35_machine_rhel840_options(m); + m->desc = "RHEL-8.3.0 PC (Q35 + ICH9, 2009)"; ++ m->alias = NULL; + pcmc->smbios_stream_product = "RHEL-AV"; + pcmc->smbios_stream_version = "8.3.0"; + compat_props_add(m->compat_props, hw_compat_rhel_8_3, @@ -394,6 +510,7 @@ index 235054a643..04c911da18 100644 + PCMachineClass *pcmc = PC_MACHINE_CLASS(m); + pc_q35_machine_rhel830_options(m); + m->desc = "RHEL-8.2.0 PC (Q35 + ICH9, 2009)"; ++ m->alias = NULL; + m->numa_mem_supported = true; + m->auto_enable_numa_with_memdev = false; + pcmc->smbios_stream_product = "RHEL-AV"; @@ -465,11 +582,23 @@ index 235054a643..04c911da18 100644 + +DEFINE_PC_MACHINE(q35_rhel760, "pc-q35-rhel7.6.0", pc_q35_init_rhel760, + pc_q35_machine_rhel760_options); +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index ec4176a1e0..465a2a09d2 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -1136,6 +1136,7 @@ static void ccw_machine_rhel860_instance_options(MachineState *machine) + static void ccw_machine_rhel860_class_options(MachineClass *mc) + { + ccw_machine_rhel900_class_options(mc); ++ compat_props_add(mc->compat_props, hw_compat_rhel_8_6, hw_compat_rhel_8_6_len); + + /* All RHEL machines for prior major releases are deprecated */ + mc->deprecation_reason = rhel_old_machine_deprecation; diff --git a/include/hw/boards.h b/include/hw/boards.h -index b0a6e05b48..3c3d2ad450 100644 +index bf59275f18..d1555665df 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h -@@ -263,6 +263,8 @@ struct MachineClass { +@@ -266,6 +266,8 @@ struct MachineClass { strList *allowed_dynamic_sysbus_devices; bool auto_enable_numa_with_memhp; bool auto_enable_numa_with_memdev; @@ -478,17 +607,30 @@ index b0a6e05b48..3c3d2ad450 100644 bool ignore_boot_device_suffixes; bool smbus_no_migration_support; bool nvdimm_supported; +@@ -449,6 +451,9 @@ extern const size_t hw_compat_2_2_len; + extern GlobalProperty hw_compat_2_1[]; + extern const size_t hw_compat_2_1_len; + ++extern GlobalProperty hw_compat_rhel_8_6[]; ++extern const size_t hw_compat_rhel_8_6_len; ++ + extern GlobalProperty hw_compat_rhel_8_5[]; + extern const size_t hw_compat_rhel_8_5_len; + diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 7ccc9a1a07..9689a58b14 100644 +index 91331059d9..419a6ec24b 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h -@@ -280,6 +280,27 @@ extern const size_t pc_compat_1_5_len; +@@ -289,6 +289,30 @@ extern const size_t pc_compat_1_5_len; extern GlobalProperty pc_compat_1_4[]; extern const size_t pc_compat_1_4_len; +extern GlobalProperty pc_rhel_compat[]; +extern const size_t pc_rhel_compat_len; + ++extern GlobalProperty pc_rhel_8_5_compat[]; ++extern const size_t pc_rhel_8_5_compat_len; ++ +extern GlobalProperty pc_rhel_8_4_compat[]; +extern const size_t pc_rhel_8_4_compat_len; + @@ -511,10 +653,10 @@ index 7ccc9a1a07..9689a58b14 100644 * depending on QEMU versions up to QEMU 2.4. */ diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c -index d95028018e..7b004065ae 100644 +index 5eb955ce9a..74c1396a93 100644 --- a/target/i386/kvm/kvm-cpu.c +++ b/target/i386/kvm/kvm-cpu.c -@@ -131,6 +131,7 @@ static PropValue kvm_default_props[] = { +@@ -137,6 +137,7 @@ static PropValue kvm_default_props[] = { { "acpi", "off" }, { "monitor", "off" }, { "svm", "off" }, @@ -523,10 +665,10 @@ index d95028018e..7b004065ae 100644 }; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c -index 5a698bde19..a668f521ac 100644 +index 9cf8e03669..6d1e009443 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c -@@ -3336,6 +3336,7 @@ static int kvm_get_msrs(X86CPU *cpu) +@@ -3488,6 +3488,7 @@ static int kvm_get_msrs(X86CPU *cpu) struct kvm_msr_entry *msrs = cpu->kvm_msr_buf->entries; int ret, i; uint64_t mtrr_top_bits; @@ -534,7 +676,7 @@ index 5a698bde19..a668f521ac 100644 kvm_msr_buf_reset(cpu); -@@ -3665,6 +3666,9 @@ static int kvm_get_msrs(X86CPU *cpu) +@@ -3822,6 +3823,9 @@ static int kvm_get_msrs(X86CPU *cpu) break; case MSR_KVM_ASYNC_PF_EN: env->async_pf_en_msr = msrs[i].data; @@ -568,5 +710,5 @@ index 6dcad2db49..580c2c43d2 100644 val = qtest_inb(qts, 0x505); g_assert_cmpuint(val, ==, 3); -- -2.27.0 +2.31.1 diff --git a/0011-Enable-make-check.patch b/0011-Enable-make-check.patch new file mode 100644 index 0000000..832b38d --- /dev/null +++ b/0011-Enable-make-check.patch @@ -0,0 +1,186 @@ +From 5e419e5e0a721bdbbfa6d9b82c8be5c5b3d26a01 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Wed, 2 Sep 2020 09:39:41 +0200 +Subject: Enable make check + +Fixing tests after device disabling and machine types changes and enabling +make check run during build. + +Signed-off-by: Miroslav Rezanina +--- +Rebase changes (6.1.0): +- removed unnecessary test changes + +Rebase changes (6.2.0): +- new way of disabling bios-table-test + +Rebase changes (7.0.0): +- Disable testing virtio-iommu-pci +- Rename default_bus_bypass_iommu property to default-bus-bypass-iommu +- Disable qtest-bios-table for aarch64 +- Removed redhat chunks for boot-serial-test.c, cdrom-test.c and cpu-plug-test.c qtests +- Do not disable boot-order-test, prom-env-test and boot-serial-test qtests +- Use rhel machine type for new intel hda qtest +- Remove unnecessary changes in iotest 051 +- Remove changes in bios-tables-test.c and prom-env-test.c qtests + +Merged patches (6.1.0): +- 2f129df7d3 redhat: Enable the 'test-block-iothread' test again +--- + .distro/qemu-kvm.spec.template | 5 ++--- + tests/qtest/fuzz-e1000e-test.c | 2 +- + tests/qtest/fuzz-virtio-scsi-test.c | 2 +- + tests/qtest/intel-hda-test.c | 2 +- + tests/qtest/libqos/meson.build | 2 +- + tests/qtest/lpc-ich9-test.c | 2 +- + tests/qtest/meson.build | 4 ---- + tests/qtest/usb-hcd-xhci-test.c | 4 ++++ + tests/qtest/virtio-net-failover.c | 1 + + 9 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/tests/qtest/fuzz-e1000e-test.c b/tests/qtest/fuzz-e1000e-test.c +index 66229e6096..947fba73b7 100644 +--- a/tests/qtest/fuzz-e1000e-test.c ++++ b/tests/qtest/fuzz-e1000e-test.c +@@ -17,7 +17,7 @@ static void test_lp1879531_eth_get_rss_ex_dst_addr(void) + { + QTestState *s; + +- s = qtest_init("-nographic -monitor none -serial none -M pc-q35-5.0"); ++ s = qtest_init("-nographic -monitor none -serial none -M pc-q35-rhel8.4.0"); + + qtest_outl(s, 0xcf8, 0x80001010); + qtest_outl(s, 0xcfc, 0xe1020000); +diff --git a/tests/qtest/fuzz-virtio-scsi-test.c b/tests/qtest/fuzz-virtio-scsi-test.c +index aaf6d10e18..43727d62ac 100644 +--- a/tests/qtest/fuzz-virtio-scsi-test.c ++++ b/tests/qtest/fuzz-virtio-scsi-test.c +@@ -19,7 +19,7 @@ static void test_mmio_oob_from_memory_region_cache(void) + { + QTestState *s; + +- s = qtest_init("-M pc-q35-5.2 -display none -m 512M " ++ s = qtest_init("-M pc-q35-rhel8.4.0 -display none -m 512M " + "-device virtio-scsi,num_queues=8,addr=03.0 "); + + qtest_outl(s, 0xcf8, 0x80001811); +diff --git a/tests/qtest/intel-hda-test.c b/tests/qtest/intel-hda-test.c +index a58c98e4d1..c8387e39ce 100644 +--- a/tests/qtest/intel-hda-test.c ++++ b/tests/qtest/intel-hda-test.c +@@ -38,7 +38,7 @@ static void test_issue542_ich6(void) + { + QTestState *s; + +- s = qtest_init("-nographic -nodefaults -M pc-q35-6.2 " ++ s = qtest_init("-nographic -nodefaults -M pc-q35-rhel9.0.0 " + "-device intel-hda,id=" HDA_ID CODEC_DEVICES); + + qtest_outl(s, 0xcf8, 0x80000804); +diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build +index e988d15791..46f7dcb81a 100644 +--- a/tests/qtest/libqos/meson.build ++++ b/tests/qtest/libqos/meson.build +@@ -41,7 +41,7 @@ libqos_srcs = files('../libqtest.c', + 'virtio-rng.c', + 'virtio-scsi.c', + 'virtio-serial.c', +- 'virtio-iommu.c', ++# 'virtio-iommu.c', + + # qgraph machines: + 'aarch64-xlnx-zcu102-machine.c', +diff --git a/tests/qtest/lpc-ich9-test.c b/tests/qtest/lpc-ich9-test.c +index fe0bef9980..7a9d51579b 100644 +--- a/tests/qtest/lpc-ich9-test.c ++++ b/tests/qtest/lpc-ich9-test.c +@@ -15,7 +15,7 @@ static void test_lp1878642_pci_bus_get_irq_level_assert(void) + { + QTestState *s; + +- s = qtest_init("-M pc-q35-5.0 " ++ s = qtest_init("-M pc-q35-rhel8.4.0 " + "-nographic -monitor none -serial none"); + + qtest_outl(s, 0xcf8, 0x8000f840); /* PMBASE */ +diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build +index d25f82bb5a..67cd32def1 100644 +--- a/tests/qtest/meson.build ++++ b/tests/qtest/meson.build +@@ -73,7 +73,6 @@ qtests_i386 = \ + config_all_devices.has_key('CONFIG_Q35') and \ + config_all_devices.has_key('CONFIG_VIRTIO_PCI') and \ + slirp.found() ? ['virtio-net-failover'] : []) + \ +- (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ + qtests_pci + \ + ['fdc-test', + 'ide-test', +@@ -86,7 +85,6 @@ qtests_i386 = \ + 'drive_del-test', + 'tco-test', + 'cpu-plug-test', +- 'q35-test', + 'vmgenid-test', + 'migration-test', + 'test-x86-cpuid-compat', +@@ -216,7 +214,6 @@ qtests_arm = \ + + # TODO: once aarch64 TCG is fixed on ARM 32 bit host, make bios-tables-test unconditional + qtests_aarch64 = \ +- (cpu != 'arm' and unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ + (config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? ['tpm-tis-device-test'] : []) + \ + (config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? ['tpm-tis-device-swtpm-test'] : []) + \ + (config_all_devices.has_key('CONFIG_XLNX_ZYNQMP_ARM') ? ['xlnx-can-test', 'fuzz-xlnx-dp-test'] : []) + \ +@@ -231,7 +228,6 @@ qtests_s390x = \ + (config_host.has_key('CONFIG_POSIX') ? ['test-filter-redirector'] : []) + \ + ['boot-serial-test', + 'drive_del-test', +- 'device-plug-test', + 'virtio-ccw-test', + 'cpu-plug-test', + 'migration-test'] +diff --git a/tests/qtest/usb-hcd-xhci-test.c b/tests/qtest/usb-hcd-xhci-test.c +index 10ef9d2a91..3855873050 100644 +--- a/tests/qtest/usb-hcd-xhci-test.c ++++ b/tests/qtest/usb-hcd-xhci-test.c +@@ -21,6 +21,7 @@ static void test_xhci_hotplug(void) + usb_test_hotplug(global_qtest, "xhci", "1", NULL); + } + ++#if 0 /* Disabled for Red Hat Enterprise Linux */ + static void test_usb_uas_hotplug(void) + { + QTestState *qts = global_qtest; +@@ -36,6 +37,7 @@ static void test_usb_uas_hotplug(void) + qtest_qmp_device_del(qts, "scsihd"); + qtest_qmp_device_del(qts, "uas"); + } ++#endif + + static void test_usb_ccid_hotplug(void) + { +@@ -56,7 +58,9 @@ int main(int argc, char **argv) + + qtest_add_func("/xhci/pci/init", test_xhci_init); + qtest_add_func("/xhci/pci/hotplug", test_xhci_hotplug); ++#if 0 /* Disabled for Red Hat Enterprise Linux */ + qtest_add_func("/xhci/pci/hotplug/usb-uas", test_usb_uas_hotplug); ++#endif + qtest_add_func("/xhci/pci/hotplug/usb-ccid", test_usb_ccid_hotplug); + + qtest_start("-device nec-usb-xhci,id=xhci" +diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c +index 78811f1c92..44de8af00c 100644 +--- a/tests/qtest/virtio-net-failover.c ++++ b/tests/qtest/virtio-net-failover.c +@@ -25,6 +25,7 @@ + #define PCI_SEL_BASE 0x0010 + + #define BASE_MACHINE "-M q35 -nodefaults " \ ++ "-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=on " \ + "-device pcie-root-port,id=root0,addr=0x1,bus=pcie.0,chassis=1 " \ + "-device pcie-root-port,id=root1,addr=0x2,bus=pcie.0,chassis=2 " + +-- +2.31.1 + diff --git a/0012-Enable-make-check.patch b/0012-Enable-make-check.patch deleted file mode 100644 index 4cd1ecc..0000000 --- a/0012-Enable-make-check.patch +++ /dev/null @@ -1,376 +0,0 @@ -From b071f3eaa77dde1567d70b43d0b2975efe380da2 Mon Sep 17 00:00:00 2001 -From: Miroslav Rezanina -Date: Wed, 2 Sep 2020 09:39:41 +0200 -Subject: Enable make check - -Fixing tests after device disabling and machine types changes and enabling -make check run during build. - -Signed-off-by: Miroslav Rezanina ---- -Rebase changes (6.1.0): -- removed unnecessary test changes - -Rebase changes (6.2.0 RC0): -- new way of disabling bios-table-test - -Merged patches (6.1.0): -- 2f129df7d3 redhat: Enable the 'test-block-iothread' test again ---- - .distro/qemu-kvm.spec.template | 5 ++--- - tests/qemu-iotests/051 | 8 ++++---- - tests/qtest/bios-tables-test.c | 6 +++--- - tests/qtest/boot-serial-test.c | 6 +++++- - tests/qtest/cdrom-test.c | 4 ++++ - tests/qtest/cpu-plug-test.c | 4 ++-- - tests/qtest/fuzz-e1000e-test.c | 2 +- - tests/qtest/fuzz-virtio-scsi-test.c | 2 +- - tests/qtest/hd-geo-test.c | 4 ++++ - tests/qtest/lpc-ich9-test.c | 2 +- - tests/qtest/meson.build | 13 ++++--------- - tests/qtest/prom-env-test.c | 4 ++++ - tests/qtest/test-x86-cpuid-compat.c | 2 ++ - tests/qtest/usb-hcd-xhci-test.c | 4 ++++ - 14 files changed, 41 insertions(+), 25 deletions(-) - -diff --git a/tests/qemu-iotests/051 b/tests/qemu-iotests/051 -index 1d2fa93a11..c8a2815f54 100755 ---- a/tests/qemu-iotests/051 -+++ b/tests/qemu-iotests/051 -@@ -174,9 +174,9 @@ run_qemu -drive if=virtio - case "$QEMU_DEFAULT_MACHINE" in - pc) - run_qemu -drive if=none,id=disk -device ide-cd,drive=disk -- run_qemu -drive if=none,id=disk -device lsi53c895a -device scsi-cd,drive=disk -+# run_qemu -drive if=none,id=disk -device lsi53c895a -device scsi-cd,drive=disk - run_qemu -drive if=none,id=disk -device ide-hd,drive=disk -- run_qemu -drive if=none,id=disk -device lsi53c895a -device scsi-hd,drive=disk -+# run_qemu -drive if=none,id=disk -device lsi53c895a -device scsi-hd,drive=disk - ;; - *) - ;; -@@ -225,9 +225,9 @@ run_qemu -drive file="$TEST_IMG",if=virtio,readonly=on - case "$QEMU_DEFAULT_MACHINE" in - pc) - run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device ide-cd,drive=disk -- run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device lsi53c895a -device scsi-cd,drive=disk -+# run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device lsi53c895a -device scsi-cd,drive=disk - run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device ide-hd,drive=disk -- run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device lsi53c895a -device scsi-hd,drive=disk -+# run_qemu -drive file="$TEST_IMG",if=none,id=disk,readonly=on -device lsi53c895a -device scsi-hd,drive=disk - ;; - *) - ;; -diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c -index 258874167e..62745181a8 100644 ---- a/tests/qtest/bios-tables-test.c -+++ b/tests/qtest/bios-tables-test.c -@@ -1371,7 +1371,7 @@ static void test_acpi_virt_tcg_numamem(void) - free_test_data(&data); - - } -- -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - static void test_acpi_virt_tcg_pxb(void) - { - test_data data = { -@@ -1403,7 +1403,7 @@ static void test_acpi_virt_tcg_pxb(void) - - free_test_data(&data); - } -- -+#endif - static void test_acpi_tcg_acpi_hmat(const char *machine) - { - test_data data; -@@ -1644,7 +1644,7 @@ int main(int argc, char *argv[]) - qtest_add_func("acpi/virt", test_acpi_virt_tcg); - qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem); - qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp); -- qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb); -+/* qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb); */ - qtest_add_func("acpi/virt/oem-fields", test_acpi_oem_fields_virt); - } - } -diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c -index 83828ba270..294476b959 100644 ---- a/tests/qtest/boot-serial-test.c -+++ b/tests/qtest/boot-serial-test.c -@@ -148,19 +148,23 @@ static testdef_t tests[] = { - { "ppc", "g3beige", "", "PowerPC,750" }, - { "ppc", "mac99", "", "PowerPC,G4" }, - { "ppc", "sam460ex", "-m 256", "DRAM: 256 MiB" }, -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - { "ppc64", "ppce500", "", "U-Boot" }, - { "ppc64", "40p", "-m 192", "Memory: 192M" }, - { "ppc64", "mac99", "", "PowerPC,970FX" }, -+#endif - { "ppc64", "pseries", - "-machine " PSERIES_DEFAULT_CAPABILITIES, - "Open Firmware" }, -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - { "ppc64", "powernv8", "", "OPAL" }, - { "ppc64", "powernv9", "", "OPAL" }, - { "ppc64", "sam460ex", "-device e1000", "8086 100e" }, -+#endif - { "i386", "isapc", "-cpu qemu32 -device sga", "SGABIOS" }, - { "i386", "pc", "-device sga", "SGABIOS" }, - { "i386", "q35", "-device sga", "SGABIOS" }, -- { "x86_64", "isapc", "-cpu qemu32 -device sga", "SGABIOS" }, -+ { "x86_64", "pc", "-cpu qemu32 -device sga", "SGABIOS" }, - { "x86_64", "q35", "-device sga", "SGABIOS" }, - { "sparc", "LX", "", "TMS390S10" }, - { "sparc", "SS-4", "", "MB86904" }, -diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c -index 5af944a5fb..69d9bac38a 100644 ---- a/tests/qtest/cdrom-test.c -+++ b/tests/qtest/cdrom-test.c -@@ -140,6 +140,7 @@ static void add_x86_tests(void) - qtest_add_data_func("cdrom/boot/isapc", "-M isapc " - "-drive if=ide,media=cdrom,file=", test_cdboot); - } -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - qtest_add_data_func("cdrom/boot/am53c974", - "-device am53c974 -device scsi-cd,drive=cd1 " - "-drive if=none,id=cd1,format=raw,file=", test_cdboot); -@@ -155,6 +156,7 @@ static void add_x86_tests(void) - qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 " - "-device megasas-gen2 -device scsi-cd,drive=cd1 " - "-blockdev file,node-name=cd1,filename=", test_cdboot); -+#endif - } - - static void add_s390x_tests(void) -@@ -220,6 +222,7 @@ int main(int argc, char **argv) - "magnum", "malta", "pica61", NULL - }; - add_cdrom_param_tests(mips64machines); -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - } else if (g_str_equal(arch, "arm") || g_str_equal(arch, "aarch64")) { - const char *armmachines[] = { - "realview-eb", "realview-eb-mpcore", "realview-pb-a8", -@@ -227,6 +230,7 @@ int main(int argc, char **argv) - "vexpress-a9", "virt", NULL - }; - add_cdrom_param_tests(armmachines); -+#endif - } else { - const char *nonemachine[] = { "none", NULL }; - add_cdrom_param_tests(nonemachine); -diff --git a/tests/qtest/cpu-plug-test.c b/tests/qtest/cpu-plug-test.c -index a1c689414b..a8f076711c 100644 ---- a/tests/qtest/cpu-plug-test.c -+++ b/tests/qtest/cpu-plug-test.c -@@ -110,8 +110,8 @@ static void add_pseries_test_case(const char *mname) - char *path; - PlugTestData *data; - -- if (!g_str_has_prefix(mname, "pseries-") || -- (g_str_has_prefix(mname, "pseries-2.") && atoi(&mname[10]) < 7)) { -+ if (!g_str_has_prefix(mname, "pseries-rhel") || -+ (g_str_has_prefix(mname, "pseries-rhel7.") && atoi(&mname[14]) < 4)) { - return; - } - data = g_new(PlugTestData, 1); -diff --git a/tests/qtest/fuzz-e1000e-test.c b/tests/qtest/fuzz-e1000e-test.c -index 66229e6096..947fba73b7 100644 ---- a/tests/qtest/fuzz-e1000e-test.c -+++ b/tests/qtest/fuzz-e1000e-test.c -@@ -17,7 +17,7 @@ static void test_lp1879531_eth_get_rss_ex_dst_addr(void) - { - QTestState *s; - -- s = qtest_init("-nographic -monitor none -serial none -M pc-q35-5.0"); -+ s = qtest_init("-nographic -monitor none -serial none -M pc-q35-rhel8.4.0"); - - qtest_outl(s, 0xcf8, 0x80001010); - qtest_outl(s, 0xcfc, 0xe1020000); -diff --git a/tests/qtest/fuzz-virtio-scsi-test.c b/tests/qtest/fuzz-virtio-scsi-test.c -index aaf6d10e18..43727d62ac 100644 ---- a/tests/qtest/fuzz-virtio-scsi-test.c -+++ b/tests/qtest/fuzz-virtio-scsi-test.c -@@ -19,7 +19,7 @@ static void test_mmio_oob_from_memory_region_cache(void) - { - QTestState *s; - -- s = qtest_init("-M pc-q35-5.2 -display none -m 512M " -+ s = qtest_init("-M pc-q35-rhel8.4.0 -display none -m 512M " - "-device virtio-scsi,num_queues=8,addr=03.0 "); - - qtest_outl(s, 0xcf8, 0x80001811); -diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c -index 113126ae06..999ef2aace 100644 ---- a/tests/qtest/hd-geo-test.c -+++ b/tests/qtest/hd-geo-test.c -@@ -737,6 +737,7 @@ static void test_override_ide(void) - test_override(args, expected); - } - -+#if 0 /* Require lsi53c895a - not supported on RHEL */ - static void test_override_scsi(void) - { - TestArgs *args = create_args(); -@@ -781,6 +782,7 @@ static void test_override_scsi_2_controllers(void) - add_scsi_disk(args, 3, 1, 0, 1, 2, 0, 1, 0); - test_override(args, expected); - } -+#endif - - static void test_override_virtio_blk(void) - { -@@ -960,9 +962,11 @@ int main(int argc, char **argv) - qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); - if (have_qemu_img()) { - qtest_add_func("hd-geo/override/ide", test_override_ide); -+#if 0 /* Require lsi53c895a - not supported on RHEL */ - qtest_add_func("hd-geo/override/scsi", test_override_scsi); - qtest_add_func("hd-geo/override/scsi_2_controllers", - test_override_scsi_2_controllers); -+#endif - qtest_add_func("hd-geo/override/virtio_blk", test_override_virtio_blk); - qtest_add_func("hd-geo/override/zero_chs", test_override_zero_chs); - qtest_add_func("hd-geo/override/scsi_hot_unplug", -diff --git a/tests/qtest/lpc-ich9-test.c b/tests/qtest/lpc-ich9-test.c -index fe0bef9980..7a9d51579b 100644 ---- a/tests/qtest/lpc-ich9-test.c -+++ b/tests/qtest/lpc-ich9-test.c -@@ -15,7 +15,7 @@ static void test_lp1878642_pci_bus_get_irq_level_assert(void) - { - QTestState *s; - -- s = qtest_init("-M pc-q35-5.0 " -+ s = qtest_init("-M pc-q35-rhel8.4.0 " - "-nographic -monitor none -serial none"); - - qtest_outl(s, 0xcf8, 0x8000f840); /* PMBASE */ -diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build -index c9d8458062..049e06c057 100644 ---- a/tests/qtest/meson.build -+++ b/tests/qtest/meson.build -@@ -68,7 +68,6 @@ qtests_i386 = \ - (config_all_devices.has_key('CONFIG_RTL8139_PCI') ? ['rtl8139-test'] : []) + \ - (config_all_devices.has_key('CONFIG_E1000E_PCI_EXPRESS') ? ['fuzz-e1000e-test'] : []) + \ - (config_all_devices.has_key('CONFIG_ESP_PCI') ? ['am53c974-test'] : []) + \ -- (unpack_edk2_blobs ? ['bios-tables-test'] : []) + \ - qtests_pci + \ - ['fdc-test', - 'ide-test', -@@ -81,7 +80,6 @@ qtests_i386 = \ - 'drive_del-test', - 'tco-test', - 'cpu-plug-test', -- 'q35-test', - 'vmgenid-test', - 'migration-test', - 'test-x86-cpuid-compat', -@@ -130,17 +128,15 @@ qtests_mips64el = \ - - qtests_ppc = \ - (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) + \ -- (config_all_devices.has_key('CONFIG_M48T59') ? ['m48t59-test'] : []) + \ -- ['boot-order-test', 'prom-env-test', 'boot-serial-test'] \ -+ (config_all_devices.has_key('CONFIG_M48T59') ? ['m48t59-test'] : []) - - qtests_ppc64 = \ - (config_all_devices.has_key('CONFIG_PSERIES') ? ['device-plug-test'] : []) + \ - (config_all_devices.has_key('CONFIG_POWERNV') ? ['pnv-xscom-test'] : []) + \ - (config_all_devices.has_key('CONFIG_PSERIES') ? ['rtas-test'] : []) + \ -- (slirp.found() ? ['pxe-test', 'test-netfilter'] : []) + \ -+ (slirp.found() ? ['pxe-test'] : []) + \ - (config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \ - (config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \ -- (config_host.has_key('CONFIG_POSIX') ? ['test-filter-mirror'] : []) + \ - qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test'] - - qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) -@@ -186,8 +182,8 @@ qtests_aarch64 = \ - ['arm-cpu-features', - 'numa-test', - 'boot-serial-test', -- 'xlnx-can-test', -- 'fuzz-xlnx-dp-test', -+# 'xlnx-can-test', -+# 'fuzz-xlnx-dp-test', - 'migration-test'] - - qtests_s390x = \ -@@ -196,7 +192,6 @@ qtests_s390x = \ - (config_host.has_key('CONFIG_POSIX') ? ['test-filter-redirector'] : []) + \ - ['boot-serial-test', - 'drive_del-test', -- 'device-plug-test', - 'virtio-ccw-test', - 'cpu-plug-test', - 'migration-test'] -diff --git a/tests/qtest/prom-env-test.c b/tests/qtest/prom-env-test.c -index f41d80154a..f8dc478ce8 100644 ---- a/tests/qtest/prom-env-test.c -+++ b/tests/qtest/prom-env-test.c -@@ -89,10 +89,14 @@ int main(int argc, char *argv[]) - if (!strcmp(arch, "ppc")) { - add_tests(ppc_machines); - } else if (!strcmp(arch, "ppc64")) { -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - add_tests(ppc_machines); - if (g_test_slow()) { -+#endif - qtest_add_data_func("prom-env/pseries", "pseries", test_machine); -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - } -+#endif - } else if (!strcmp(arch, "sparc")) { - add_tests(sparc_machines); - } else if (!strcmp(arch, "sparc64")) { -diff --git a/tests/qtest/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpuid-compat.c -index f28848e06e..6b2fd398a2 100644 ---- a/tests/qtest/test-x86-cpuid-compat.c -+++ b/tests/qtest/test-x86-cpuid-compat.c -@@ -300,6 +300,7 @@ int main(int argc, char **argv) - "-cpu 486,xlevel2=0xC0000002,xstore=on", - "xlevel2", 0xC0000002); - -+#if 0 /* Disabled in Red Hat Enterprise Linux */ - /* Check compatibility of old machine-types that didn't - * auto-increase level/xlevel/xlevel2: */ - -@@ -350,6 +351,7 @@ int main(int argc, char **argv) - add_cpuid_test("x86/cpuid/xlevel-compat/pc-i440fx-2.4/npt-on", - "-machine pc-i440fx-2.4 -cpu SandyBridge,svm=on,npt=on", - "xlevel", 0x80000008); -+#endif - - /* Test feature parsing */ - add_feature_test("x86/cpuid/features/plus", -diff --git a/tests/qtest/usb-hcd-xhci-test.c b/tests/qtest/usb-hcd-xhci-test.c -index 10ef9d2a91..3855873050 100644 ---- a/tests/qtest/usb-hcd-xhci-test.c -+++ b/tests/qtest/usb-hcd-xhci-test.c -@@ -21,6 +21,7 @@ static void test_xhci_hotplug(void) - usb_test_hotplug(global_qtest, "xhci", "1", NULL); - } - -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - static void test_usb_uas_hotplug(void) - { - QTestState *qts = global_qtest; -@@ -36,6 +37,7 @@ static void test_usb_uas_hotplug(void) - qtest_qmp_device_del(qts, "scsihd"); - qtest_qmp_device_del(qts, "uas"); - } -+#endif - - static void test_usb_ccid_hotplug(void) - { -@@ -56,7 +58,9 @@ int main(int argc, char **argv) - - qtest_add_func("/xhci/pci/init", test_xhci_init); - qtest_add_func("/xhci/pci/hotplug", test_xhci_hotplug); -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - qtest_add_func("/xhci/pci/hotplug/usb-uas", test_usb_uas_hotplug); -+#endif - qtest_add_func("/xhci/pci/hotplug/usb-ccid", test_usb_ccid_hotplug); - - qtest_start("-device nec-usb-xhci,id=xhci" --- -2.27.0 - diff --git a/0013-vfio-cap-number-of-devices-that-can-be-assigned.patch b/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch similarity index 93% rename from 0013-vfio-cap-number-of-devices-that-can-be-assigned.patch rename to 0012-vfio-cap-number-of-devices-that-can-be-assigned.patch index 44db7e1..c9e42b2 100644 --- a/0013-vfio-cap-number-of-devices-that-can-be-assigned.patch +++ b/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch @@ -1,4 +1,4 @@ -From 55dcef9d806aa530f10e3ca42eb24d52f850d674 Mon Sep 17 00:00:00 2001 +From c358fd4c224a9c3f64b4a8fff34cc6b1dc201fa0 Mon Sep 17 00:00:00 2001 From: Bandan Das Date: Tue, 3 Dec 2013 20:05:13 +0100 Subject: vfio: cap number of devices that can be assigned @@ -32,7 +32,7 @@ Signed-off-by: Bandan Das 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c -index 7b45353ce2..eb725a3aee 100644 +index 67a183f17b..1e20f9fd59 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -45,6 +45,9 @@ @@ -45,7 +45,7 @@ index 7b45353ce2..eb725a3aee 100644 static void vfio_disable_interrupts(VFIOPCIDevice *vdev); static void vfio_mmap_set_enabled(VFIOPCIDevice *vdev, bool enabled); -@@ -2807,9 +2810,30 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) +@@ -2810,9 +2813,30 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) ssize_t len; struct stat st; int groupid; @@ -77,7 +77,7 @@ index 7b45353ce2..eb725a3aee 100644 if (!vdev->vbasedev.sysfsdev) { if (!(~vdev->host.domain || ~vdev->host.bus || ~vdev->host.slot || ~vdev->host.function)) { -@@ -3246,6 +3270,9 @@ static Property vfio_pci_dev_properties[] = { +@@ -3249,6 +3273,9 @@ static Property vfio_pci_dev_properties[] = { DEFINE_PROP_BOOL("x-no-kvm-msix", VFIOPCIDevice, no_kvm_msix, false), DEFINE_PROP_BOOL("x-no-geforce-quirks", VFIOPCIDevice, no_geforce_quirks, false), @@ -100,5 +100,5 @@ index 64777516d1..e0fe6ca97e 100644 uint32_t device_id; uint32_t sub_vendor_id; -- -2.27.0 +2.31.1 diff --git a/0014-Add-support-statement-to-help-output.patch b/0013-Add-support-statement-to-help-output.patch similarity index 86% rename from 0014-Add-support-statement-to-help-output.patch rename to 0013-Add-support-statement-to-help-output.patch index 095b9db..4826ea4 100644 --- a/0014-Add-support-statement-to-help-output.patch +++ b/0013-Add-support-statement-to-help-output.patch @@ -1,4 +1,4 @@ -From fcccb5c061b8bbae29de59637c5ad4cf4416281b Mon Sep 17 00:00:00 2001 +From ba0c7a5f6b9a1f75666db6b3b795ddf03695dc26 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Wed, 4 Dec 2013 18:53:17 +0100 Subject: Add support statement to -help output @@ -21,10 +21,10 @@ Signed-off-by: Eduardo Habkost 1 file changed, 9 insertions(+) diff --git a/softmmu/vl.c b/softmmu/vl.c -index 620a1f1367..d46b8fb4ab 100644 +index 6f646531a0..9d5dab43d2 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c -@@ -827,9 +827,17 @@ static void version(void) +@@ -831,9 +831,17 @@ static void version(void) QEMU_COPYRIGHT "\n"); } @@ -41,8 +41,8 @@ index 620a1f1367..d46b8fb4ab 100644 + print_rh_warning(); printf("usage: %s [options] [disk_image]\n\n" "'disk_image' is a raw hard disk image for IDE hard disk 0\n\n", - error_get_progname()); -@@ -855,6 +863,7 @@ static void help(int exitcode) + g_get_prgname()); +@@ -859,6 +867,7 @@ static void help(int exitcode) "\n" QEMU_HELP_BOTTOM "\n"); @@ -51,5 +51,5 @@ index 620a1f1367..d46b8fb4ab 100644 } -- -2.27.0 +2.31.1 diff --git a/0015-globally-limit-the-maximum-number-of-CPUs.patch b/0014-globally-limit-the-maximum-number-of-CPUs.patch similarity index 89% rename from 0015-globally-limit-the-maximum-number-of-CPUs.patch rename to 0014-globally-limit-the-maximum-number-of-CPUs.patch index 50c1e79..6764a84 100644 --- a/0015-globally-limit-the-maximum-number-of-CPUs.patch +++ b/0014-globally-limit-the-maximum-number-of-CPUs.patch @@ -1,4 +1,4 @@ -From 354c9ce982e566ddb3c724a57252986dcb7c36db Mon Sep 17 00:00:00 2001 +From 9ebfd2f6cfa8e79c92e58fd169f90cc768fb865a Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Tue, 21 Jan 2014 10:46:52 +0100 Subject: globally limit the maximum number of CPUs @@ -18,10 +18,10 @@ Signed-off-by: Danilo Cesar Lemes de Paula 1 file changed, 12 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c -index eecd8031cf..8f2a53438f 100644 +index 5f1377ca04..fdf0e4d429 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c -@@ -2423,6 +2423,18 @@ static int kvm_init(MachineState *ms) +@@ -2430,6 +2430,18 @@ static int kvm_init(MachineState *ms) soft_vcpus_limit = kvm_recommended_vcpus(s); hard_vcpus_limit = kvm_max_vcpus(s); @@ -41,5 +41,5 @@ index eecd8031cf..8f2a53438f 100644 if (nc->num > soft_vcpus_limit) { warn_report("Number of %s cpus requested (%d) exceeds " -- -2.27.0 +2.31.1 diff --git a/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch b/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch new file mode 100644 index 0000000..722484d --- /dev/null +++ b/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch @@ -0,0 +1,61 @@ +From 4b6c8cdc52fdf94d4098d278defb3833dce1d189 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Wed, 8 Jul 2020 08:35:50 +0200 +Subject: Use qemu-kvm in documentation instead of qemu-system- + +Patchwork-id: 62380 +O-Subject: [RHEV-7.1 qemu-kvm-rhev PATCHv4] Use qemu-kvm in documentation instead of qemu-system-i386 +Bugzilla: 1140620 +RH-Acked-by: Laszlo Ersek +RH-Acked-by: Markus Armbruster +RH-Acked-by: Stefan Hajnoczi + +From: Miroslav Rezanina + +We change the name and location of qemu-kvm binaries. Update documentation +to reflect this change. Only architectures available in RHEL are updated. + +Signed-off-by: Miroslav Rezanina +--- + docs/defs.rst.inc | 4 ++-- + qemu-options.hx | 10 +++++----- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/docs/defs.rst.inc b/docs/defs.rst.inc +index 52d6454b93..d74dbdeca9 100644 +--- a/docs/defs.rst.inc ++++ b/docs/defs.rst.inc +@@ -9,7 +9,7 @@ + but the manpages will end up misrendered with following normal text + incorrectly in boldface. + +-.. |qemu_system| replace:: qemu-system-x86_64 +-.. |qemu_system_x86| replace:: qemu-system-x86_64 ++.. |qemu_system| replace:: qemu-kvm ++.. |qemu_system_x86| replace:: qemu-kvm + .. |I2C| replace:: I\ :sup:`2`\ C + .. |I2S| replace:: I\ :sup:`2`\ S +diff --git a/qemu-options.hx b/qemu-options.hx +index 34e9b32a5c..924f61ab6d 100644 +--- a/qemu-options.hx ++++ b/qemu-options.hx +@@ -3233,11 +3233,11 @@ SRST + + :: + +- qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \ +- -numa node,memdev=mem \ +- -chardev socket,id=chr0,path=/path/to/socket \ +- -netdev type=vhost-user,id=net0,chardev=chr0 \ +- -device virtio-net-pci,netdev=net0 ++ qemu-kvm -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \ ++ -numa node,memdev=mem \ ++ -chardev socket,id=chr0,path=/path/to/socket \ ++ -netdev type=vhost-user,id=net0,chardev=chr0 \ ++ -device virtio-net-pci,netdev=net0 + + ``-netdev vhost-vdpa,vhostdev=/path/to/dev`` + Establish a vhost-vdpa netdev. +-- +2.31.1 + diff --git a/0016-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch b/0016-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch deleted file mode 100644 index 415bcc2..0000000 --- a/0016-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch +++ /dev/null @@ -1,120 +0,0 @@ -From b057b4ebec0f87f21ba4a15adbb2a1bde7240ed5 Mon Sep 17 00:00:00 2001 -From: Miroslav Rezanina -Date: Wed, 8 Jul 2020 08:35:50 +0200 -Subject: Use qemu-kvm in documentation instead of qemu-system- - -Patchwork-id: 62380 -O-Subject: [RHEV-7.1 qemu-kvm-rhev PATCHv4] Use qemu-kvm in documentation instead of qemu-system-i386 -Bugzilla: 1140620 -RH-Acked-by: Laszlo Ersek -RH-Acked-by: Markus Armbruster -RH-Acked-by: Stefan Hajnoczi - -From: Miroslav Rezanina - -We change the name and location of qemu-kvm binaries. Update documentation -to reflect this change. Only architectures available in RHEL are updated. - -Signed-off-by: Miroslav Rezanina ---- - docs/defs.rst.inc | 4 ++-- - docs/tools/qemu-trace-stap.rst | 14 +++++++------- - qemu-options.hx | 10 +++++----- - 3 files changed, 14 insertions(+), 14 deletions(-) - -diff --git a/docs/defs.rst.inc b/docs/defs.rst.inc -index 52d6454b93..d74dbdeca9 100644 ---- a/docs/defs.rst.inc -+++ b/docs/defs.rst.inc -@@ -9,7 +9,7 @@ - but the manpages will end up misrendered with following normal text - incorrectly in boldface. - --.. |qemu_system| replace:: qemu-system-x86_64 --.. |qemu_system_x86| replace:: qemu-system-x86_64 -+.. |qemu_system| replace:: qemu-kvm -+.. |qemu_system_x86| replace:: qemu-kvm - .. |I2C| replace:: I\ :sup:`2`\ C - .. |I2S| replace:: I\ :sup:`2`\ S -diff --git a/docs/tools/qemu-trace-stap.rst b/docs/tools/qemu-trace-stap.rst -index d53073b52b..9e93df084f 100644 ---- a/docs/tools/qemu-trace-stap.rst -+++ b/docs/tools/qemu-trace-stap.rst -@@ -46,19 +46,19 @@ The following commands are valid: - any of the listed names. If no *PATTERN* is given, the all possible - probes will be listed. - -- For example, to list all probes available in the ``qemu-system-x86_64`` -+ For example, to list all probes available in the ``qemu-kvm`` - binary: - - :: - -- $ qemu-trace-stap list qemu-system-x86_64 -+ $ qemu-trace-stap list qemu-kvm - - To filter the list to only cover probes related to QEMU's cryptographic - subsystem, in a binary outside ``$PATH`` - - :: - -- $ qemu-trace-stap list /opt/qemu/4.0.0/bin/qemu-system-x86_64 'qcrypto*' -+ $ qemu-trace-stap list /opt/qemu/4.0.0/bin/qemu-kvm 'qcrypto*' - - .. option:: run OPTIONS BINARY PATTERN... - -@@ -90,18 +90,18 @@ The following commands are valid: - Restrict the tracing session so that it only triggers for the process - identified by *PID*. - -- For example, to monitor all processes executing ``qemu-system-x86_64`` -+ For example, to monitor all processes executing ``qemu-kvm`` - as found on ``$PATH``, displaying all I/O related probes: - - :: - -- $ qemu-trace-stap run qemu-system-x86_64 'qio*' -+ $ qemu-trace-stap run qemu-kvm 'qio*' - - To monitor only the QEMU process with PID 1732 - - :: - -- $ qemu-trace-stap run --pid=1732 qemu-system-x86_64 'qio*' -+ $ qemu-trace-stap run --pid=1732 qemu-kvm 'qio*' - - To monitor QEMU processes running an alternative binary outside of - ``$PATH``, displaying verbose information about setup of the -@@ -109,7 +109,7 @@ The following commands are valid: - - :: - -- $ qemu-trace-stap -v run /opt/qemu/4.0.0/qemu-system-x86_64 'qio*' -+ $ qemu-trace-stap -v run /opt/qemu/4.0.0/qemu-kvm 'qio*' - - See also - -------- -diff --git a/qemu-options.hx b/qemu-options.hx -index ae2c6dbbfc..94c4a8dbaf 100644 ---- a/qemu-options.hx -+++ b/qemu-options.hx -@@ -3150,11 +3150,11 @@ SRST - - :: - -- qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \ -- -numa node,memdev=mem \ -- -chardev socket,id=chr0,path=/path/to/socket \ -- -netdev type=vhost-user,id=net0,chardev=chr0 \ -- -device virtio-net-pci,netdev=net0 -+ qemu-kvm -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \ -+ -numa node,memdev=mem \ -+ -chardev socket,id=chr0,path=/path/to/socket \ -+ -netdev type=vhost-user,id=net0,chardev=chr0 \ -+ -device virtio-net-pci,netdev=net0 - - ``-netdev vhost-vdpa,vhostdev=/path/to/dev`` - Establish a vhost-vdpa netdev. --- -2.27.0 - diff --git a/0017-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch b/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch similarity index 96% rename from 0017-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch rename to 0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch index 031b551..9f08024 100644 --- a/0017-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch +++ b/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch @@ -1,4 +1,4 @@ -From 41fe05330d095f69f12973b0540466439e030047 Mon Sep 17 00:00:00 2001 +From b72e04cb7e417d9e1c973223747ab3a27abda8b4 Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Wed, 14 Jun 2017 15:37:01 +0200 Subject: virtio-scsi: Reject scsi-cd if data plane enabled [RHEL only] @@ -42,7 +42,7 @@ Signed-off-by: Danilo C. L. de Paula 1 file changed, 9 insertions(+) diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c -index 51fd09522a..a35257c35a 100644 +index 34a968ecfb..7f6da33a8a 100644 --- a/hw/scsi/virtio-scsi.c +++ b/hw/scsi/virtio-scsi.c @@ -896,6 +896,15 @@ static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, @@ -62,5 +62,5 @@ index 51fd09522a..a35257c35a 100644 if (blk_op_is_blocked(sd->conf.blk, BLOCK_OP_TYPE_DATAPLANE, errp)) { return; -- -2.27.0 +2.31.1 diff --git a/0018-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch b/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch similarity index 92% rename from 0018-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch rename to 0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch index 7f161e8..2bc687c 100644 --- a/0018-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch +++ b/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch @@ -1,4 +1,4 @@ -From 295ee942608d48ab167aa76adabf3697c28e6910 Mon Sep 17 00:00:00 2001 +From 64a06662cdea0ff62efb122be4eab506b2a842d9 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 6 Feb 2019 03:58:56 +0000 Subject: BZ1653590: Require at least 64kiB pages for downstream guests & hosts @@ -32,10 +32,10 @@ Signed-off-by: Danilo C. L. de Paula 1 file changed, 7 insertions(+) diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c -index ed7c077a0d..48a8efe678 100644 +index 655ab856a0..6aa7f93df9 100644 --- a/hw/ppc/spapr_caps.c +++ b/hw/ppc/spapr_caps.c -@@ -332,12 +332,19 @@ bool spapr_check_pagesize(SpaprMachineState *spapr, hwaddr pagesize, +@@ -329,12 +329,19 @@ bool spapr_check_pagesize(SpaprMachineState *spapr, hwaddr pagesize, static void cap_hpt_maxpagesize_apply(SpaprMachineState *spapr, uint8_t val, Error **errp) { @@ -56,5 +56,5 @@ index ed7c077a0d..48a8efe678 100644 spapr_check_pagesize(spapr, qemu_minrampagesize(), errp); } -- -2.27.0 +2.31.1 diff --git a/0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch b/0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch similarity index 90% rename from 0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch rename to 0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch index 7ff46fd..d7401d5 100644 --- a/0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch +++ b/0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch @@ -1,4 +1,4 @@ -From a3bb2330bbf68faabc57b768cdf3ae2f4f4d86f3 Mon Sep 17 00:00:00 2001 +From 54f9157a918e1404f2f17ce89a9c8b9088c1bc06 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Fri, 20 Aug 2021 18:25:12 +0200 Subject: qcow2: Deprecation warning when opening v2 images rw @@ -44,10 +44,10 @@ Rebase notes (6.1.0): 2 files changed, 7 insertions(+) diff --git a/block/qcow2.c b/block/qcow2.c -index d509016756..37d1c26a71 100644 +index b5c47931ef..a795e457ac 100644 --- a/block/qcow2.c +++ b/block/qcow2.c -@@ -1336,6 +1336,12 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options, +@@ -1337,6 +1337,12 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options, ret = -ENOTSUP; goto fail; } @@ -61,17 +61,17 @@ index d509016756..37d1c26a71 100644 s->qcow_version = header.version; diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter -index 2b2b53946c..c5c2dc39bd 100644 +index cc9f1a5891..6a13757177 100644 --- a/tests/qemu-iotests/common.filter +++ b/tests/qemu-iotests/common.filter -@@ -82,6 +82,7 @@ _filter_qemu() +@@ -83,6 +83,7 @@ _filter_qemu() { - $SED -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG):#\1QEMU_PROG:#" \ + gsed -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG):#\1QEMU_PROG:#" \ -e 's#^QEMU [0-9]\+\.[0-9]\+\.[0-9]\+ monitor#QEMU X.Y.Z monitor#' \ + -e "/qcow2 v2 images are deprecated/d" \ -e $'s#\r##' # QEMU monitor uses \r\n line endings } -- -2.27.0 +2.31.1 diff --git a/0019-WRB-Introduce-RHEL-9.0.0-hw-compat-structure.patch b/0019-WRB-Introduce-RHEL-9.0.0-hw-compat-structure.patch new file mode 100644 index 0000000..285cd6b --- /dev/null +++ b/0019-WRB-Introduce-RHEL-9.0.0-hw-compat-structure.patch @@ -0,0 +1,135 @@ +From 1d6439527aa6ccabb58208c94417778ccc19de39 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Wed, 9 Feb 2022 04:16:25 -0500 +Subject: WRB: Introduce RHEL 9.0.0 hw compat structure + +General compatibility structure for post RHEL 9.0.0 rebase. + +Signed-off-by: Miroslav Rezanina +--- + hw/core/machine.c | 9 +++++++++ + hw/i386/pc.c | 6 ++++++ + hw/i386/pc_piix.c | 4 ++++ + hw/i386/pc_q35.c | 4 ++++ + hw/s390x/s390-virtio-ccw.c | 2 ++ + include/hw/boards.h | 3 +++ + include/hw/i386/pc.h | 3 +++ + 7 files changed, 31 insertions(+) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index 28989b6e7b..dffc3ef4ab 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -53,6 +53,15 @@ GlobalProperty hw_compat_rhel_8_6[] = { + }; + const size_t hw_compat_rhel_8_6_len = G_N_ELEMENTS(hw_compat_rhel_8_6); + ++/* ++ * Mostly the same as hw_compat_6_2 ++ */ ++GlobalProperty hw_compat_rhel_9_0[] = { ++ /* hw_compat_rhel_9_0 from hw_compat_6_2 */ ++ { "PIIX4_PM", "x-not-migrate-acpi-index", "on"}, ++}; ++const size_t hw_compat_rhel_9_0_len = G_N_ELEMENTS(hw_compat_rhel_9_0); ++ + /* + * Mostly the same as hw_compat_6_0 and hw_compat_6_1 + */ +diff --git a/hw/i386/pc.c b/hw/i386/pc.c +index 263d882af6..0886cfe3fe 100644 +--- a/hw/i386/pc.c ++++ b/hw/i386/pc.c +@@ -391,6 +391,12 @@ GlobalProperty pc_rhel_compat[] = { + }; + const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); + ++GlobalProperty pc_rhel_9_0_compat[] = { ++ /* pc_rhel_9_0_compat from pc_compat_6_2 */ ++ { "virtio-mem", "unplugged-inaccessible", "off" }, ++}; ++const size_t pc_rhel_9_0_compat_len = G_N_ELEMENTS(pc_rhel_9_0_compat); ++ + GlobalProperty pc_rhel_8_5_compat[] = { + /* pc_rhel_8_5_compat from pc_compat_6_0 */ + { "qemu64" "-" TYPE_X86_CPU, "family", "6" }, +diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c +index 0cacc0d623..dc987fe93b 100644 +--- a/hw/i386/pc_piix.c ++++ b/hw/i386/pc_piix.c +@@ -1014,6 +1014,10 @@ static void pc_machine_rhel760_options(MachineClass *m) + pcmc->kvmclock_create_always = false; + /* From pc_i440fx_5_1_machine_options() */ + pcmc->pci_root_uid = 1; ++ compat_props_add(m->compat_props, hw_compat_rhel_9_0, ++ hw_compat_rhel_9_0_len); ++ compat_props_add(m->compat_props, pc_rhel_9_0_compat, ++ pc_rhel_9_0_compat_len); + compat_props_add(m->compat_props, hw_compat_rhel_8_6, + hw_compat_rhel_8_6_len); + compat_props_add(m->compat_props, hw_compat_rhel_8_5, +diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c +index 157160e069..52c253c570 100644 +--- a/hw/i386/pc_q35.c ++++ b/hw/i386/pc_q35.c +@@ -669,6 +669,10 @@ static void pc_q35_machine_rhel900_options(MachineClass *m) + m->desc = "RHEL-9.0.0 PC (Q35 + ICH9, 2009)"; + pcmc->smbios_stream_product = "RHEL"; + pcmc->smbios_stream_version = "9.0.0"; ++ compat_props_add(m->compat_props, hw_compat_rhel_9_0, ++ hw_compat_rhel_9_0_len); ++ compat_props_add(m->compat_props, pc_rhel_9_0_compat, ++ pc_rhel_9_0_compat_len); + } + + DEFINE_PC_MACHINE(q35_rhel900, "pc-q35-rhel9.0.0", pc_q35_init_rhel900, +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index 465a2a09d2..08e0f6a79b 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -1118,12 +1118,14 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) + DEFINE_CCW_MACHINE(2_4, "2.4", false); + #endif + ++ + static void ccw_machine_rhel900_instance_options(MachineState *machine) + { + } + + static void ccw_machine_rhel900_class_options(MachineClass *mc) + { ++ compat_props_add(mc->compat_props, hw_compat_rhel_9_0, hw_compat_rhel_9_0_len); + } + DEFINE_CCW_MACHINE(rhel900, "rhel9.0.0", true); + +diff --git a/include/hw/boards.h b/include/hw/boards.h +index d1555665df..635e45dd71 100644 +--- a/include/hw/boards.h ++++ b/include/hw/boards.h +@@ -451,6 +451,9 @@ extern const size_t hw_compat_2_2_len; + extern GlobalProperty hw_compat_2_1[]; + extern const size_t hw_compat_2_1_len; + ++extern GlobalProperty hw_compat_rhel_9_0[]; ++extern const size_t hw_compat_rhel_9_0_len; ++ + extern GlobalProperty hw_compat_rhel_8_6[]; + extern const size_t hw_compat_rhel_8_6_len; + +diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h +index 419a6ec24b..a492c420b5 100644 +--- a/include/hw/i386/pc.h ++++ b/include/hw/i386/pc.h +@@ -292,6 +292,9 @@ extern const size_t pc_compat_1_4_len; + extern GlobalProperty pc_rhel_compat[]; + extern const size_t pc_rhel_compat_len; + ++extern GlobalProperty pc_rhel_9_0_compat[]; ++extern const size_t pc_rhel_9_0_compat_len; ++ + extern GlobalProperty pc_rhel_8_5_compat[]; + extern const size_t pc_rhel_8_5_compat_len; + +-- +2.31.1 + diff --git a/0020-Fix-virtio-net-pci-vectors-compat.patch b/0020-Fix-virtio-net-pci-vectors-compat.patch deleted file mode 100644 index 6caad1d..0000000 --- a/0020-Fix-virtio-net-pci-vectors-compat.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ef5afcc86dc44d1c9d3030a8ceca2018df86c6ec Mon Sep 17 00:00:00 2001 -From: Eduardo Habkost -Date: Tue, 19 Oct 2021 13:17:06 -0400 -Subject: Fix virtio-net-pci* "vectors" compat - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 76: 9.0/6.2.0-rc1 x86 machine type fixes -RH-Commit: [20/22] ebb570f053f96d3558bac49962dc7dc88296c207 -RH-Bugzilla: 2025468 -RH-Acked-by: quintela1 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Cornelia Huck - -hw_compat_rhel_8_4 has an issue: it affects only "virtio-net-pci" -but not "virtio-net-pci-transitional" and -"virtio-net-pci-non-transitional". The solution is to use the -"virtio-net-pci-base" type in compat_props. - -An equivalent fix will be submitted for hw_compat_5_2 upstream. - -Signed-off-by: Eduardo Habkost -(cherry picked from commit d45823ab0d0138b2fbaf2ed1e1896d2052f3ccb3) ---- - hw/core/machine.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 53a3caf4fb..448a8dd127 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -69,7 +69,11 @@ GlobalProperty hw_compat_rhel_8_4[] = { - /* hw_compat_rhel_8_4 from hw_compat_5_2 */ - { "virtio-blk-device", "report-discard-granularity", "off" }, - /* hw_compat_rhel_8_4 from hw_compat_5_2 */ -- { "virtio-net-pci", "vectors", "3"}, -+ /* -+ * Upstream incorrectly had "virtio-net-pci" instead of "virtio-net-pci-base", -+ * (https://bugzilla.redhat.com/show_bug.cgi?id=1999141) -+ */ -+ { "virtio-net-pci-base", "vectors", "3"}, - }; - const size_t hw_compat_rhel_8_4_len = G_N_ELEMENTS(hw_compat_rhel_8_4); - --- -2.27.0 - diff --git a/0020-redhat-Update-s390x-machine-type-compatibility-for-r.patch b/0020-redhat-Update-s390x-machine-type-compatibility-for-r.patch new file mode 100644 index 0000000..d3b91d0 --- /dev/null +++ b/0020-redhat-Update-s390x-machine-type-compatibility-for-r.patch @@ -0,0 +1,38 @@ +From c8ad21ca31892f8798cf82508c2b2c61bf3b9895 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Mon, 4 Apr 2022 12:15:50 +0200 +Subject: redhat: Update s390x machine type compatibility for rebase to QEMU + 7.0.0 + +RH-Author: Thomas Huth +RH-MergeRequest: 143: Update machine type compatibility for QEMU 7.0.0 update [s390x] +RH-Commit: [23/23] 0ecf97d7bdddc50565b5779c64744b353f715cbd +RH-Bugzilla: 2064782 +RH-Acked-by: Cornelia Huck +RH-Acked-by: David Hildenbrand + +No s390x-specific machine class property updates required this time, +only an update to the default qemu cpu model. + +Signed-off-by: Thomas Huth +--- + hw/s390x/s390-virtio-ccw.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index 08e0f6a79b..4a491d4988 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -1121,6 +1121,9 @@ DEFINE_CCW_MACHINE(2_4, "2.4", false); + + static void ccw_machine_rhel900_instance_options(MachineState *machine) + { ++ static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_2 }; ++ ++ s390_set_qemu_cpu_model(0x3906, 14, 2, qemu_cpu_feat); + } + + static void ccw_machine_rhel900_class_options(MachineClass *mc) +-- +2.31.1 + diff --git a/0021-pc-Move-s3-s4-suspend-disabling-to-compat.patch b/0021-pc-Move-s3-s4-suspend-disabling-to-compat.patch new file mode 100644 index 0000000..f9535a8 --- /dev/null +++ b/0021-pc-Move-s3-s4-suspend-disabling-to-compat.patch @@ -0,0 +1,70 @@ +From 38b89dc24551258b630f09d1c654b6c72b265c79 Mon Sep 17 00:00:00 2001 +From: "Dr. David Alan Gilbert" +Date: Thu, 14 Apr 2022 14:58:43 +0100 +Subject: pc: Move s3/s4 suspend disabling to compat + +RH-Author: Dr. David Alan Gilbert +RH-MergeRequest: 155: 7.0 machine type fixes (x86) +RH-Commit: [26/26] 7d666032d5f5dab1444ebba085f92f2de4e86699 +RH-Bugzilla: 2064771 + +Our downstream patches currently have tweaks in the C code to disable +s3/s4; Thomas pointed out we can just set the property. + +Signed-off-by: Dr. David Alan Gilbert +--- + hw/acpi/ich9.c | 4 ++-- + hw/acpi/piix4.c | 4 ++-- + hw/i386/pc.c | 6 ++++++ + 3 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c +index de1e401cdf..bd9bbade70 100644 +--- a/hw/acpi/ich9.c ++++ b/hw/acpi/ich9.c +@@ -435,8 +435,8 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) + static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN; + pm->acpi_memory_hotplug.is_enabled = true; + pm->cpu_hotplug_legacy = true; +- pm->disable_s3 = 1; +- pm->disable_s4 = 1; ++ pm->disable_s3 = 0; ++ pm->disable_s4 = 0; + pm->s4_val = 2; + pm->use_acpi_hotplug_bridge = true; + pm->keep_pci_slot_hpc = true; +diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c +index 28544e78c3..2fb2b43248 100644 +--- a/hw/acpi/piix4.c ++++ b/hw/acpi/piix4.c +@@ -653,8 +653,8 @@ static void piix4_send_gpe(AcpiDeviceIf *adev, AcpiEventStatusBits ev) + + static Property piix4_pm_properties[] = { + DEFINE_PROP_UINT32("smb_io_base", PIIX4PMState, smb_io_base, 0), +- DEFINE_PROP_UINT8(ACPI_PM_PROP_S3_DISABLED, PIIX4PMState, disable_s3, 1), +- DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_DISABLED, PIIX4PMState, disable_s4, 1), ++ DEFINE_PROP_UINT8(ACPI_PM_PROP_S3_DISABLED, PIIX4PMState, disable_s3, 0), ++ DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_DISABLED, PIIX4PMState, disable_s4, 0), + DEFINE_PROP_UINT8(ACPI_PM_PROP_S4_VAL, PIIX4PMState, s4_val, 2), + DEFINE_PROP_BOOL(ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, PIIX4PMState, + use_acpi_hotplug_bridge, true), +diff --git a/hw/i386/pc.c b/hw/i386/pc.c +index 0886cfe3fe..f98f842f80 100644 +--- a/hw/i386/pc.c ++++ b/hw/i386/pc.c +@@ -380,6 +380,12 @@ const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); + * machine type. + */ + GlobalProperty pc_rhel_compat[] = { ++ /* we don't support s3/s4 suspend */ ++ { "PIIX4_PM", "disable_s3", "1" }, ++ { "PIIX4_PM", "disable_s4", "1" }, ++ { "ICH9-LPC", "disable_s3", "1" }, ++ { "ICH9-LPC", "disable_s4", "1" }, ++ + { TYPE_X86_CPU, "host-phys-bits", "on" }, + { TYPE_X86_CPU, "host-phys-bits-limit", "48" }, + { TYPE_X86_CPU, "vmx-entry-load-perf-global-ctrl", "off" }, +-- +2.31.1 + diff --git a/0021-x86-rhel-machine-types-Add-pc_rhel_8_5_compat.patch b/0021-x86-rhel-machine-types-Add-pc_rhel_8_5_compat.patch deleted file mode 100644 index 8ef276d..0000000 --- a/0021-x86-rhel-machine-types-Add-pc_rhel_8_5_compat.patch +++ /dev/null @@ -1,75 +0,0 @@ -From eae7d8dd3c3b9aa859a619933f52a4759a42bf66 Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Tue, 23 Nov 2021 17:57:42 +0000 -Subject: x86/rhel machine types: Add pc_rhel_8_5_compat - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 76: 9.0/6.2.0-rc1 x86 machine type fixes -RH-Commit: [21/22] dd23060695bc0ad892bbfa51d93afe31f5d745c7 -RH-Bugzilla: 2025468 -RH-Acked-by: quintela1 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Cornelia Huck - -Add pc_rhel_8_5_compat as the merge of pc_compat_6_1 and pc_compat_6_0 -(since 8.5 was based on 6.0). - -Note, x-keep-pci-slot-hpc flipped back and forward, leaving it out -looks like it leaves us with the original. - -Signed-off-by: Dr. David Alan Gilbert -Signed-off-by: Miroslav Rezanina ---- - hw/i386/pc.c | 21 +++++++++++++++++++++ - include/hw/i386/pc.h | 3 +++ - 2 files changed, 24 insertions(+) - -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index b6d2db8d04..4661473d2a 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -387,6 +387,27 @@ GlobalProperty pc_rhel_compat[] = { - }; - const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); - -+GlobalProperty pc_rhel_8_5_compat[] = { -+ /* pc_rhel_8_5_compat from pc_compat_6_0 */ -+ { "qemu64" "-" TYPE_X86_CPU, "family", "6" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_0 */ -+ { "qemu64" "-" TYPE_X86_CPU, "model", "6" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_0 */ -+ { "qemu64" "-" TYPE_X86_CPU, "stepping", "3" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_0 */ -+ { TYPE_X86_CPU, "x-vendor-cpuid-only", "off" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_0 */ -+ { "ICH9-LPC", ACPI_PM_PROP_ACPI_PCIHP_BRIDGE, "off" }, -+ -+ /* pc_rhel_8_5_compat from pc_compat_6_1 */ -+ { TYPE_X86_CPU, "hv-version-id-build", "0x1bbc" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_1 */ -+ { TYPE_X86_CPU, "hv-version-id-major", "0x0006" }, -+ /* pc_rhel_8_5_compat from pc_compat_6_1 */ -+ { TYPE_X86_CPU, "hv-version-id-minor", "0x0001" }, -+}; -+const size_t pc_rhel_8_5_compat_len = G_N_ELEMENTS(pc_rhel_8_5_compat); -+ - GlobalProperty pc_rhel_8_4_compat[] = { - /* pc_rhel_8_4_compat from pc_compat_5_2 */ - { "ICH9-LPC", "x-smi-cpu-hotunplug", "off" }, -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 9689a58b14..afb570ba14 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -283,6 +283,9 @@ extern const size_t pc_compat_1_4_len; - extern GlobalProperty pc_rhel_compat[]; - extern const size_t pc_rhel_compat_len; - -+extern GlobalProperty pc_rhel_8_5_compat[]; -+extern const size_t pc_rhel_8_5_compat_len; -+ - extern GlobalProperty pc_rhel_8_4_compat[]; - extern const size_t pc_rhel_8_4_compat_len; - --- -2.27.0 - diff --git a/0022-x86-rhel-machine-types-Wire-compat-into-q35-and-i440.patch b/0022-x86-rhel-machine-types-Wire-compat-into-q35-and-i440.patch deleted file mode 100644 index 85c6b26..0000000 --- a/0022-x86-rhel-machine-types-Wire-compat-into-q35-and-i440.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 6762f5646943c759ece5972f08eb88364cf0a8ad Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Tue, 23 Nov 2021 18:07:49 +0000 -Subject: x86/rhel machine types: Wire compat into q35 and i440fx - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 76: 9.0/6.2.0-rc1 x86 machine type fixes -RH-Commit: [22/22] e2767df0d920773057cb52d346e0106a76cb0a28 -RH-Bugzilla: 2025468 -RH-Acked-by: quintela1 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Cornelia Huck -Wire the pc_rhel_8_5 compat data into both piix and q35 -to keep the existing machine types compatible. - -Signed-off-by: Dr. David Alan Gilbert -Signed-off-by: Miroslav Rezanina ---- - hw/i386/pc_piix.c | 4 ++++ - hw/i386/pc_q35.c | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index dabc6c1933..183b5d5464 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -993,6 +993,10 @@ static void pc_machine_rhel760_options(MachineClass *m) - pcmc->kvmclock_create_always = false; - /* From pc_i440fx_5_1_machine_options() */ - pcmc->pci_root_uid = 1; -+ compat_props_add(m->compat_props, hw_compat_rhel_8_5, -+ hw_compat_rhel_8_5_len); -+ compat_props_add(m->compat_props, pc_rhel_8_5_compat, -+ pc_rhel_8_5_compat_len); - compat_props_add(m->compat_props, hw_compat_rhel_8_4, - hw_compat_rhel_8_4_len); - compat_props_add(m->compat_props, pc_rhel_8_4_compat, -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 04c911da18..0e7e885e78 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -658,6 +658,10 @@ static void pc_q35_machine_rhel850_options(MachineClass *m) - m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.5.0"; -+ compat_props_add(m->compat_props, hw_compat_rhel_8_5, -+ hw_compat_rhel_8_5_len); -+ compat_props_add(m->compat_props, pc_rhel_8_5_compat, -+ pc_rhel_8_5_compat_len); - } - - DEFINE_PC_MACHINE(q35_rhel850, "pc-q35-rhel8.5.0", pc_q35_init_rhel850, --- -2.27.0 - diff --git a/0023-redhat-virt-rhel8.5.0-Update-machine-type-compatibil.patch b/0023-redhat-virt-rhel8.5.0-Update-machine-type-compatibil.patch deleted file mode 100644 index 293854f..0000000 --- a/0023-redhat-virt-rhel8.5.0-Update-machine-type-compatibil.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 3b82be3dd3d5254baedf82ba2a6cf0412e84a991 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Tue, 16 Nov 2021 17:03:07 +0100 -Subject: redhat: virt-rhel8.5.0: Update machine type compatibility for QEMU - 6.2.0 update - -RH-Author: Eric Auger -RH-MergeRequest: 75: redhat: virt-rhel8.5.0: Update machine type compatibility for QEMU 6.2.0 update -RH-Commit: [21/21] f027d13654944e3d34e3356affe7af952eec2bed -RH-Bugzilla: 2022607 -RH-Acked-by: Gavin Shan -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Andrew Jones -RH-Acked-by: Cornelia Huck -RH-Acked-by: Laurent Vivier - -To keep compatibility with 8.5-AV machine type we need to -turn few new options on by default: -smp_props.prefer_sockets, no_cpu_topology, no_tcg_its - -TESTED: migrate from rhel-av-8.5.0 to rhel-8.6.0 and vice-versa -with upstream fix: 33a0c404fb hw/intc/arm_gicv3_its: Revert version -increments in vmstate_its - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/arm/virt.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 7d51824263..6ba9a2c2e1 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3230,7 +3230,12 @@ type_init(rhel_machine_init); - - static void rhel850_virt_options(MachineClass *mc) - { -+ VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); -+ - compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); - compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); -+ mc->smp_props.prefer_sockets = true; -+ vmc->no_cpu_topology = true; -+ vmc->no_tcg_its = true; - } - DEFINE_RHEL_MACHINE_AS_LATEST(8, 5, 0) --- -2.27.0 - diff --git a/0024-redhat-Add-s390x-machine-type-compatibility-handling.patch b/0024-redhat-Add-s390x-machine-type-compatibility-handling.patch deleted file mode 100644 index 9762048..0000000 --- a/0024-redhat-Add-s390x-machine-type-compatibility-handling.patch +++ /dev/null @@ -1,58 +0,0 @@ -From e6ff4de4f7036f88ee63adad6de5ee5dd74f1d99 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Fri, 26 Nov 2021 09:37:11 +0100 -Subject: redhat: Add s390x machine type compatibility handling for the rebase - to v6.2 - -RH-Author: Thomas Huth -RH-MergeRequest: 80: Add s390x machine type compatibility handling for the rebase to v6.2 -RH-Commit: [26/26] c45cf594604f6dd23954696b9c84d2025e328d11 -RH-Bugzilla: 2022602 -RH-Acked-by: David Hildenbrand -RH-Acked-by: Laurent Vivier -RH-Acked-by: Cornelia Huck - -Add compatibility handling for the rhel8.5.0 machine type (and -recursively older, of course). - -Based on the following upstream commits: - - 463e50da8b - s390x/cpumodel: Bump up QEMU model to a stripped-down IBM z14 GA2 - 30e398f796 - s390x/cpumodel: Add more feature to gen16 default model - 4a0af2930a - machine: Prefer cores over sockets in smp parsing since 6.2 - 2b52619994 - machine: Move smp_prefer_sockets to struct SMPCompatProps - -Signed-off-by: Thomas Huth ---- - hw/s390x/s390-virtio-ccw.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 4af14cb9ca..c654045964 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1105,11 +1105,21 @@ DEFINE_CCW_MACHINE(2_4, "2.4", false); - - static void ccw_machine_rhel850_instance_options(MachineState *machine) - { -+ static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_0 }; -+ -+ s390_set_qemu_cpu_model(0x2964, 13, 2, qemu_cpu_feat); -+ -+ s390_cpudef_featoff_greater(16, 1, S390_FEAT_NNPA); -+ s390_cpudef_featoff_greater(16, 1, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2); -+ s390_cpudef_featoff_greater(16, 1, S390_FEAT_BEAR_ENH); -+ s390_cpudef_featoff_greater(16, 1, S390_FEAT_RDP); -+ s390_cpudef_featoff_greater(16, 1, S390_FEAT_PAI); - } - - static void ccw_machine_rhel850_class_options(MachineClass *mc) - { - compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); -+ mc->smp_props.prefer_sockets = true; - } - DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); - --- -2.27.0 - diff --git a/0025-compat-Update-hw_compat_rhel_8_5-with-6.2.0-RC2-chan.patch b/0025-compat-Update-hw_compat_rhel_8_5-with-6.2.0-RC2-chan.patch deleted file mode 100644 index 1fdd794..0000000 --- a/0025-compat-Update-hw_compat_rhel_8_5-with-6.2.0-RC2-chan.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 168f0d56e3a37a7d5fcc59483e2b1181824a23d2 Mon Sep 17 00:00:00 2001 -From: Miroslav Rezanina -Date: Wed, 24 Nov 2021 23:51:52 -0500 -Subject: compat: Update hw_compat_rhel_8_5 with 6.2.0 RC2 changes - -In RC2 nvme-ns 'shared' default was changed (commit 916b0f0b52). - -Adding compat record for RHEL 8.5.0 so we keep it off for downstream -machinetypes. - -Signed-off-by: Miroslav Rezanina ---- - hw/core/machine.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 448a8dd127..669d3d8b91 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -55,6 +55,8 @@ GlobalProperty hw_compat_rhel_8_5[] = { - { "vhost-vsock-device", "seqpacket", "off" }, - /* hw_compat_rhel_8_5 from hw_compat_6_1 */ - { "vhost-user-vsock-device", "seqpacket", "off" }, -+ /* hw_compat_rhel_8_5 from hw_compat_6_1 */ -+ { "nvme-ns", "shared", "off" }, - }; - const size_t hw_compat_rhel_8_5_len = G_N_ELEMENTS(hw_compat_rhel_8_5); - --- -2.27.0 - diff --git a/kvm-Enable-SGX-RH-Only.patch b/kvm-Enable-SGX-RH-Only.patch deleted file mode 100644 index 63f335b..0000000 --- a/kvm-Enable-SGX-RH-Only.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f4f7c62a4658a570d3ad694b64463665fa4b80a7 Mon Sep 17 00:00:00 2001 -From: Paul Lai -Date: Fri, 21 Jan 2022 13:14:42 -0500 -Subject: [PATCH 04/12] Enable SGX -- RH Only - -RH-Author: Paul Lai -RH-MergeRequest: 65: Enable SGX and add SGX Numa support -RH-Commit: [4/5] 2cd4ee4a429f5e7b1c32e83a10bf488503603795 -RH-Bugzilla: 2033708 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: Bandan Das -RH-Acked-by: Cornelia Huck ---- - configs/devices/x86_64-softmmu/x86_64-rh-devices.mak | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -index dc03fbb671..327b1bee62 100644 ---- a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -+++ b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -@@ -101,3 +101,4 @@ CONFIG_TPM=y - CONFIG_TPM_CRB=y - CONFIG_TPM_TIS_ISA=y - CONFIG_TPM_EMULATOR=y -+CONFIG_SGX=y --- -2.27.0 - diff --git a/kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch b/kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch deleted file mode 100644 index 834092c..0000000 --- a/kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 9ec1caad56435e14cd80ad23bc8bef8c301bdce4 Mon Sep 17 00:00:00 2001 -From: Stefano Garzarella -Date: Thu, 24 Mar 2022 16:04:57 +0100 -Subject: [PATCH] RHEL: disable "seqpacket" for "vhost-vsock-device" in - rhel8.6.0 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Stefano Garzarella -RH-MergeRequest: 79: RHEL: disable "seqpacket" for "vhost-vsock-device" in rhel8.6.0 -RH-Commit: [1/1] 1810d35c05538733f82f680aec27d09db8ccbf33 (sgarzarella/qemu-kvm-c-9-s) -RH-Bugzilla: 2065589 -RH-Acked-by: Jason Wang -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Eugenio Pérez -RH-Acked-by: Dr. David Alan Gilbert - -vhost-vsock device in RHEL 8 kernels doesn't support seqpacket. -To avoid problems when migrating a VM from RHEL 9 host, we need to -disable it in rhel8-* machine types. - -Signed-off-by: Stefano Garzarella ---- - hw/core/machine.c | 10 ++++++++++ - hw/i386/pc_piix.c | 2 ++ - hw/i386/pc_q35.c | 2 ++ - hw/s390x/s390-virtio-ccw.c | 1 + - include/hw/boards.h | 3 +++ - 5 files changed, 18 insertions(+) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 5fae55d6cd..7dcceb904a 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -43,6 +43,16 @@ - const char *rhel_old_machine_deprecation = - "machine types for previous major releases are deprecated"; - -+GlobalProperty hw_compat_rhel_8_6[] = { -+ /* hw_compat_rhel_8_6 bz 2065589 */ -+ /* -+ * vhost-vsock device in RHEL 8 kernels doesn't support seqpacket, so -+ * we need do disable it downstream on the latest hw_compat_rhel_8. -+ */ -+ { "vhost-vsock-device", "seqpacket", "off" }, -+}; -+const size_t hw_compat_rhel_8_6_len = G_N_ELEMENTS(hw_compat_rhel_8_6); -+ - /* - * Mostly the same as hw_compat_6_0 and hw_compat_6_1 - */ -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index cf68d7498c..08579366b6 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -998,6 +998,8 @@ static void pc_machine_rhel760_options(MachineClass *m) - pcmc->kvmclock_create_always = false; - /* From pc_i440fx_5_1_machine_options() */ - pcmc->pci_root_uid = 1; -+ compat_props_add(m->compat_props, hw_compat_rhel_8_6, -+ hw_compat_rhel_8_6_len); - compat_props_add(m->compat_props, hw_compat_rhel_8_5, - hw_compat_rhel_8_5_len); - compat_props_add(m->compat_props, pc_rhel_8_5_compat, -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index c8e06da084..23dacdd923 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -680,6 +680,8 @@ static void pc_q35_machine_rhel860_options(MachineClass *m) - - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.6.0"; -+ compat_props_add(m->compat_props, hw_compat_rhel_8_6, -+ hw_compat_rhel_8_6_len); - } - - DEFINE_PC_MACHINE(q35_rhel860, "pc-q35-rhel8.6.0", pc_q35_init_rhel860, -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index cc78a315e3..13bfa4253e 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1121,6 +1121,7 @@ static void ccw_machine_rhel860_instance_options(MachineState *machine) - static void ccw_machine_rhel860_class_options(MachineClass *mc) - { - ccw_machine_rhel900_class_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_8_6, hw_compat_rhel_8_6_len); - - /* All RHEL machines for prior major releases are deprecated */ - mc->deprecation_reason = rhel_old_machine_deprecation; -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 21d8d5528e..b9c12c4bf2 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -443,6 +443,9 @@ extern const size_t hw_compat_2_2_len; - extern GlobalProperty hw_compat_2_1[]; - extern const size_t hw_compat_2_1_len; - -+extern GlobalProperty hw_compat_rhel_8_6[]; -+extern const size_t hw_compat_rhel_8_6_len; -+ - extern GlobalProperty hw_compat_rhel_8_5[]; - extern const size_t hw_compat_rhel_8_5_len; - --- -2.31.1 - diff --git a/kvm-RHEL-mark-old-machine-types-as-deprecated.patch b/kvm-RHEL-mark-old-machine-types-as-deprecated.patch deleted file mode 100644 index 0b203cf..0000000 --- a/kvm-RHEL-mark-old-machine-types-as-deprecated.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 5b1b0ebbc938127e7cd0ea1056d8f21b6d51ff0d Mon Sep 17 00:00:00 2001 -From: Cornelia Huck -Date: Thu, 3 Mar 2022 10:57:37 +0100 -Subject: [PATCH 1/5] RHEL: mark old machine types as deprecated - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 78: Synchronize with RHEL 9.0.0 build qemu-kvm-6.2.0-11.el9_0.1 -RH-Commit: [1/5] 88a9377cac9d4e9796f63c5726db7dc093c6460d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 2062828 2062819 2062817 2062813 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Cornelia Huck - -We want to make it obvious that we consider machine types for older -RHEL major releases to be deprecated; we only carry them for -compatibility purposes. - -Let's mark all rhel-7.x and rhel-8.x machine type as deprecated via -QEMU's existing deprecation mechanism; those machine types will -continue to work as expected, but commands like 'virsh capabilities', -'virsh dominfo', or the libvirt log will tag the machine as -deprecated. - -Signed-off-by: Cornelia Huck - -Forward-port of RHEL 9.0.0 MR 119 (RHEL: mark old machine types as deprecated) ---- - hw/core/machine.c | 6 ++++++ - hw/i386/pc_piix.c | 4 ++++ - hw/i386/pc_q35.c | 4 ++++ - hw/s390x/s390-virtio-ccw.c | 3 +++ - include/hw/boards.h | 2 ++ - 5 files changed, 19 insertions(+) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 669d3d8b91..5fae55d6cd 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -37,6 +37,12 @@ - #include "hw/virtio/virtio.h" - #include "hw/virtio/virtio-pci.h" - -+/* -+ * RHEL only: machine types for previous major releases are deprecated -+ */ -+const char *rhel_old_machine_deprecation = -+ "machine types for previous major releases are deprecated"; -+ - /* - * Mostly the same as hw_compat_6_0 and hw_compat_6_1 - */ -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index fccb7f5fc9..cf68d7498c 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -989,6 +989,10 @@ static void pc_machine_rhel760_options(MachineClass *m) - m->desc = "RHEL 7.6.0 PC (i440FX + PIIX, 1996)"; - m->async_pf_vmexit_disable = true; - m->smbus_no_migration_support = true; -+ -+ /* All RHEL machines for prior major releases are deprecated */ -+ m->deprecation_reason = rhel_old_machine_deprecation; -+ - pcmc->pvh_enabled = false; - pcmc->default_cpu_version = CPU_VERSION_LEGACY; - pcmc->kvmclock_create_always = false; -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index bf9ad32f0e..c8e06da084 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -674,6 +674,10 @@ static void pc_q35_machine_rhel860_options(MachineClass *m) - pc_q35_machine_rhel900_options(m); - m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)"; - m->alias = NULL; -+ -+ /* All RHEL machines for prior major releases are deprecated */ -+ m->deprecation_reason = rhel_old_machine_deprecation; -+ - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.6.0"; - } -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 9da6e9b1d4..cc78a315e3 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1121,6 +1121,9 @@ static void ccw_machine_rhel860_instance_options(MachineState *machine) - static void ccw_machine_rhel860_class_options(MachineClass *mc) - { - ccw_machine_rhel900_class_options(mc); -+ -+ /* All RHEL machines for prior major releases are deprecated */ -+ mc->deprecation_reason = rhel_old_machine_deprecation; - } - DEFINE_CCW_MACHINE(rhel860, "rhel8.6.0", false); - -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 3c3d2ad450..21d8d5528e 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -464,4 +464,6 @@ extern const size_t hw_compat_rhel_8_0_len; - extern GlobalProperty hw_compat_rhel_7_6[]; - extern const size_t hw_compat_rhel_7_6_len; - -+extern const char *rhel_old_machine_deprecation; -+ - #endif --- -2.31.1 - diff --git a/kvm-Revert-ui-clipboard-Don-t-use-g_autoptr-just-to-free.patch b/kvm-Revert-ui-clipboard-Don-t-use-g_autoptr-just-to-free.patch deleted file mode 100644 index d9d5145..0000000 --- a/kvm-Revert-ui-clipboard-Don-t-use-g_autoptr-just-to-free.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 213d2c6d3138f3570bca36edaacfd1ee86b18967 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Fri, 4 Feb 2022 06:45:51 +0100 -Subject: [PATCH 1/6] Revert "ui/clipboard: Don't use g_autoptr just to free a - variable" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 75: fix vnc cut+paste crash -RH-Commit: [1/4] 0937d15054ad6e902bc22d1872231504f442ddcc (kraxel/centos-qemu-kvm) -RH-Bugzilla: 2042820 -RH-Acked-by: Marc-André Lureau -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Miroslav Rezanina - -This reverts commit 8df1ea81ee6c674522967d056daa8d3748fa3883. ---- - ui/clipboard.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/ui/clipboard.c b/ui/clipboard.c -index d53576b0f6..d7b008d62a 100644 ---- a/ui/clipboard.c -+++ b/ui/clipboard.c -@@ -44,14 +44,13 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer, - - void qemu_clipboard_update(QemuClipboardInfo *info) - { -- QemuClipboardInfo *old = NULL; -+ g_autoptr(QemuClipboardInfo) old = NULL; - assert(info->selection < QEMU_CLIPBOARD_SELECTION__COUNT); - - notifier_list_notify(&clipboard_notifiers, info); - - old = cbinfo[info->selection]; - cbinfo[info->selection] = qemu_clipboard_info_ref(info); -- g_free(old); - } - - QemuClipboardInfo *qemu_clipboard_info(QemuClipboardSelection selection) --- -2.27.0 - diff --git a/kvm-block-Lock-AioContext-for-drain_end-in-blockdev-reop.patch b/kvm-block-Lock-AioContext-for-drain_end-in-blockdev-reop.patch deleted file mode 100644 index 6fc7f38..0000000 --- a/kvm-block-Lock-AioContext-for-drain_end-in-blockdev-reop.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 7b973b9cb7b890eaf9a31c99f5c272b513322ac1 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Thu, 3 Feb 2022 15:05:33 +0100 -Subject: [PATCH 1/8] block: Lock AioContext for drain_end in blockdev-reopen - -RH-Author: Kevin Wolf -RH-MergeRequest: 73: block: Lock AioContext for drain_end in blockdev-reopen -RH-Commit: [1/2] db25e999152b0e4f09decade1ac76b9f56cd9706 (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 2046659 -RH-Acked-by: Sergio Lopez -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Hanna Reitz - -bdrv_subtree_drained_end() requires the caller to hold the AioContext -lock for the drained node. Not doing this for nodes outside of the main -AioContext leads to crashes when AIO_WAIT_WHILE() needs to wait and -tries to temporarily release the lock. - -Fixes: 3908b7a8994fa5ef7a89aa58cd5a02fc58141592 -Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2046659 -Reported-by: Qing Wang -Signed-off-by: Kevin Wolf -Message-Id: <20220203140534.36522-2-kwolf@redhat.com> -Reviewed-by: Hanna Reitz -Signed-off-by: Kevin Wolf -(cherry picked from commit aba8205be0707b9d108e32254e186ba88107a869) -Signed-off-by: Kevin Wolf ---- - blockdev.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/blockdev.c b/blockdev.c -index b35072644e..565f6a81fd 100644 ---- a/blockdev.c -+++ b/blockdev.c -@@ -3562,6 +3562,7 @@ void qmp_blockdev_reopen(BlockdevOptionsList *reopen_list, Error **errp) - { - BlockReopenQueue *queue = NULL; - GSList *drained = NULL; -+ GSList *p; - - /* Add each one of the BDS that we want to reopen to the queue */ - for (; reopen_list != NULL; reopen_list = reopen_list->next) { -@@ -3611,7 +3612,15 @@ void qmp_blockdev_reopen(BlockdevOptionsList *reopen_list, Error **errp) - - fail: - bdrv_reopen_queue_free(queue); -- g_slist_free_full(drained, (GDestroyNotify) bdrv_subtree_drained_end); -+ for (p = drained; p; p = p->next) { -+ BlockDriverState *bs = p->data; -+ AioContext *ctx = bdrv_get_aio_context(bs); -+ -+ aio_context_acquire(ctx); -+ bdrv_subtree_drained_end(bs); -+ aio_context_release(ctx); -+ } -+ g_slist_free(drained); - } - - void qmp_blockdev_del(const char *node_name, Error **errp) --- -2.27.0 - diff --git a/kvm-block-backend-prevent-dangling-BDS-pointers-across-a.patch b/kvm-block-backend-prevent-dangling-BDS-pointers-across-a.patch deleted file mode 100644 index 8dbf30f..0000000 --- a/kvm-block-backend-prevent-dangling-BDS-pointers-across-a.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 87f3b10dc600ac12272ee6cdc67571910ea722f6 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Tue, 11 Jan 2022 15:36:12 +0000 -Subject: [PATCH 10/12] block-backend: prevent dangling BDS pointers across - aio_poll() - -RH-Author: Hanna Reitz -RH-MergeRequest: 71: block-backend: prevent dangling BDS pointers across aio_poll() -RH-Commit: [1/2] 1b4cab39bf8c933ab910293a29bfceaa9e821068 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2040123 -RH-Acked-by: Kevin Wolf -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Emanuele Giuseppe Esposito - -The BlockBackend root child can change when aio_poll() is invoked. This -happens when a temporary filter node is removed upon blockjob -completion, for example. - -Functions in block/block-backend.c must be aware of this when using a -blk_bs() pointer across aio_poll() because the BlockDriverState refcnt -may reach 0, resulting in a stale pointer. - -One example is scsi_device_purge_requests(), which calls blk_drain() to -wait for in-flight requests to cancel. If the backup blockjob is active, -then the BlockBackend root child is a temporary filter BDS owned by the -blockjob. The blockjob can complete during bdrv_drained_begin() and the -last reference to the BDS is released when the temporary filter node is -removed. This results in a use-after-free when blk_drain() calls -bdrv_drained_end(bs) on the dangling pointer. - -Explicitly hold a reference to bs across block APIs that invoke -aio_poll(). - -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2021778 -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2036178 -Signed-off-by: Stefan Hajnoczi -Message-Id: <20220111153613.25453-2-stefanha@redhat.com> -Signed-off-by: Kevin Wolf -(cherry picked from commit 1e3552dbd28359d35967b7c28dc86cde1bc29205) -Signed-off-by: Hanna Reitz ---- - block/block-backend.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -diff --git a/block/block-backend.c b/block/block-backend.c -index 12ef80ea17..23e727199b 100644 ---- a/block/block-backend.c -+++ b/block/block-backend.c -@@ -822,16 +822,22 @@ BlockBackend *blk_by_public(BlockBackendPublic *public) - void blk_remove_bs(BlockBackend *blk) - { - ThrottleGroupMember *tgm = &blk->public.throttle_group_member; -- BlockDriverState *bs; - BdrvChild *root; - - notifier_list_notify(&blk->remove_bs_notifiers, blk); - if (tgm->throttle_state) { -- bs = blk_bs(blk); -+ BlockDriverState *bs = blk_bs(blk); -+ -+ /* -+ * Take a ref in case blk_bs() changes across bdrv_drained_begin(), for -+ * example, if a temporary filter node is removed by a blockjob. -+ */ -+ bdrv_ref(bs); - bdrv_drained_begin(bs); - throttle_group_detach_aio_context(tgm); - throttle_group_attach_aio_context(tgm, qemu_get_aio_context()); - bdrv_drained_end(bs); -+ bdrv_unref(bs); - } - - blk_update_root_state(blk); -@@ -1705,6 +1711,7 @@ void blk_drain(BlockBackend *blk) - BlockDriverState *bs = blk_bs(blk); - - if (bs) { -+ bdrv_ref(bs); - bdrv_drained_begin(bs); - } - -@@ -1714,6 +1721,7 @@ void blk_drain(BlockBackend *blk) - - if (bs) { - bdrv_drained_end(bs); -+ bdrv_unref(bs); - } - } - -@@ -2044,10 +2052,13 @@ static int blk_do_set_aio_context(BlockBackend *blk, AioContext *new_context, - int ret; - - if (bs) { -+ bdrv_ref(bs); -+ - if (update_root_node) { - ret = bdrv_child_try_set_aio_context(bs, new_context, blk->root, - errp); - if (ret < 0) { -+ bdrv_unref(bs); - return ret; - } - } -@@ -2057,6 +2068,8 @@ static int blk_do_set_aio_context(BlockBackend *blk, AioContext *new_context, - throttle_group_attach_aio_context(tgm, new_context); - bdrv_drained_end(bs); - } -+ -+ bdrv_unref(bs); - } - - blk->ctx = new_context; -@@ -2326,11 +2339,13 @@ void blk_io_limits_disable(BlockBackend *blk) - ThrottleGroupMember *tgm = &blk->public.throttle_group_member; - assert(tgm->throttle_state); - if (bs) { -+ bdrv_ref(bs); - bdrv_drained_begin(bs); - } - throttle_group_unregister_tgm(tgm); - if (bs) { - bdrv_drained_end(bs); -+ bdrv_unref(bs); - } - } - --- -2.27.0 - diff --git a/kvm-block-io-Update-BSC-only-if-want_zero-is-true.patch b/kvm-block-io-Update-BSC-only-if-want_zero-is-true.patch deleted file mode 100644 index 5fff268..0000000 --- a/kvm-block-io-Update-BSC-only-if-want_zero-is-true.patch +++ /dev/null @@ -1,56 +0,0 @@ -From a6b472de71f6ebbe44025e1348c90e6f1f2b2326 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Tue, 18 Jan 2022 17:59:59 +0100 -Subject: [PATCH 06/12] block/io: Update BSC only if want_zero is true - -RH-Author: Hanna Reitz -RH-MergeRequest: 69: block/io: Update BSC only if want_zero is true -RH-Commit: [1/2] ad19ff86c3420cafe5a9e785ee210e482fbc8cd7 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2041461 -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Kevin Wolf - -We update the block-status cache whenever we get new information from a -bdrv_co_block_status() call to the block driver. However, if we have -passed want_zero=false to that call, it may flag areas containing zeroes -as data, and so we would update the block-status cache with wrong -information. - -Therefore, we should not update the cache with want_zero=false. - -Reported-by: Nir Soffer -Fixes: 0bc329fbb00 ("block: block-status cache for data regions") -Reviewed-by: Nir Soffer -Cc: qemu-stable@nongnu.org -Signed-off-by: Hanna Reitz -Message-Id: <20220118170000.49423-2-hreitz@redhat.com> -Reviewed-by: Eric Blake -Signed-off-by: Eric Blake -(cherry picked from commit 113b727ce788335cf76f65355d670c9bc130fd75) -Signed-off-by: Hanna Reitz ---- - block/io.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/block/io.c b/block/io.c -index bb0a254def..4e4cb556c5 100644 ---- a/block/io.c -+++ b/block/io.c -@@ -2497,8 +2497,12 @@ static int coroutine_fn bdrv_co_block_status(BlockDriverState *bs, - * non-protocol nodes, and then it is never used. However, filling - * the cache requires an RCU update, so double check here to avoid - * such an update if possible. -+ * -+ * Check want_zero, because we only want to update the cache when we -+ * have accurate information about what is zero and what is data. - */ -- if (ret == (BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID) && -+ if (want_zero && -+ ret == (BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID) && - QLIST_EMPTY(&bs->children)) - { - /* --- -2.27.0 - diff --git a/kvm-block-nbd-Assert-there-are-no-timers-when-closed.patch b/kvm-block-nbd-Assert-there-are-no-timers-when-closed.patch deleted file mode 100644 index 24c5b8a..0000000 --- a/kvm-block-nbd-Assert-there-are-no-timers-when-closed.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 76b03619435d0b2f0125ee7aa5c94f2b889247de Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:08 +0100 -Subject: [PATCH 4/8] block/nbd: Assert there are no timers when closed - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [2/6] 56903457ca35d9c596aeb6827a48f80e8eabd66a (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -Our two timers must not remain armed beyond nbd_clear_bdrvstate(), or -they will access freed data when they fire. - -This patch is separate from the patches that actually fix the issue -(HEAD^^ and HEAD^) so that you can run the associated regression iotest -(281) on a configuration that reproducibly exposes the bug. - -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 8a39c381e5e407d2fe5500324323f90a8540fa90) - -Conflict: -- block/nbd.c: open_timer was introduced after the 6.2 release (for - nbd's @open-timeout parameter), and has not been backported, so drop - the assertion that it is NULL - -Signed-off-by: Hanna Reitz ---- - block/nbd.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/block/nbd.c b/block/nbd.c -index b8e5a9b4cc..aab20125d8 100644 ---- a/block/nbd.c -+++ b/block/nbd.c -@@ -108,6 +108,9 @@ static void nbd_clear_bdrvstate(BlockDriverState *bs) - - yank_unregister_instance(BLOCKDEV_YANK_INSTANCE(bs->node_name)); - -+ /* Must not leave timers behind that would access freed data */ -+ assert(!s->reconnect_delay_timer); -+ - object_unref(OBJECT(s->tlscreds)); - qapi_free_SocketAddress(s->saddr); - s->saddr = NULL; --- -2.27.0 - diff --git a/kvm-block-nbd-Delete-reconnect-delay-timer-when-done.patch b/kvm-block-nbd-Delete-reconnect-delay-timer-when-done.patch deleted file mode 100644 index 0cdf622..0000000 --- a/kvm-block-nbd-Delete-reconnect-delay-timer-when-done.patch +++ /dev/null @@ -1,54 +0,0 @@ -From eeb4683ad8c40a03a4e91463ec1d1b651974b744 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:06 +0100 -Subject: [PATCH 3/8] block/nbd: Delete reconnect delay timer when done - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [1/6] 34f92910b6ffd256d781109a2b39737fc6ab449c (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -We start the reconnect delay timer to cancel the reconnection attempt -after a while. Once nbd_co_do_establish_connection() has returned, this -attempt is over, and we no longer need the timer. - -Delete it before returning from nbd_reconnect_attempt(), so that it does -not persist beyond the I/O request that was paused for reconnecting; we -do not want it to fire in a drained section, because all sort of things -can happen in such a section (e.g. the AioContext might be changed, and -we do not want the timer to fire in the wrong context; or the BDS might -even be deleted, and so the timer CB would access already-freed data). - -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 3ce1fc16bad9c3f8b7b10b451a224d6d76e5c551) -Signed-off-by: Hanna Reitz ---- - block/nbd.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/block/nbd.c b/block/nbd.c -index 5ef462db1b..b8e5a9b4cc 100644 ---- a/block/nbd.c -+++ b/block/nbd.c -@@ -353,6 +353,13 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) - } - - nbd_co_do_establish_connection(s->bs, NULL); -+ -+ /* -+ * The reconnect attempt is done (maybe successfully, maybe not), so -+ * we no longer need this timer. Delete it so it will not outlive -+ * this I/O request (so draining removes all timers). -+ */ -+ reconnect_delay_timer_del(s); - } - - static coroutine_fn int nbd_receive_replies(BDRVNBDState *s, uint64_t handle) --- -2.27.0 - diff --git a/kvm-block-nbd-Move-s-ioc-on-AioContext-change.patch b/kvm-block-nbd-Move-s-ioc-on-AioContext-change.patch deleted file mode 100644 index 1cb29e9..0000000 --- a/kvm-block-nbd-Move-s-ioc-on-AioContext-change.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 6d9d86cc4e6149d4c0793e8ceb65dab7535a4561 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:11 +0100 -Subject: [PATCH 7/8] block/nbd: Move s->ioc on AioContext change - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [5/6] b3c1eb21ac70d64fdac6094468a72cfbe50a30a9 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -s->ioc must always be attached to the NBD node's AioContext. If that -context changes, s->ioc must be attached to the new context. - -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2033626 -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit e15f3a66c830e3fce99c9d56c493c2f7078a1225) - -Conflict: -- block/nbd.c: open_timer was added after the 6.2 release, so we need - not (and cannot) assert it is NULL here. - -Signed-off-by: Hanna Reitz ---- - block/nbd.c | 41 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 41 insertions(+) - -diff --git a/block/nbd.c b/block/nbd.c -index aab20125d8..a3896c7f5f 100644 ---- a/block/nbd.c -+++ b/block/nbd.c -@@ -2003,6 +2003,38 @@ static void nbd_cancel_in_flight(BlockDriverState *bs) - nbd_co_establish_connection_cancel(s->conn); - } - -+static void nbd_attach_aio_context(BlockDriverState *bs, -+ AioContext *new_context) -+{ -+ BDRVNBDState *s = bs->opaque; -+ -+ /* -+ * The reconnect_delay_timer is scheduled in I/O paths when the -+ * connection is lost, to cancel the reconnection attempt after a -+ * given time. Once this attempt is done (successfully or not), -+ * nbd_reconnect_attempt() ensures the timer is deleted before the -+ * respective I/O request is resumed. -+ * Since the AioContext can only be changed when a node is drained, -+ * the reconnect_delay_timer cannot be active here. -+ */ -+ assert(!s->reconnect_delay_timer); -+ -+ if (s->ioc) { -+ qio_channel_attach_aio_context(s->ioc, new_context); -+ } -+} -+ -+static void nbd_detach_aio_context(BlockDriverState *bs) -+{ -+ BDRVNBDState *s = bs->opaque; -+ -+ assert(!s->reconnect_delay_timer); -+ -+ if (s->ioc) { -+ qio_channel_detach_aio_context(s->ioc); -+ } -+} -+ - static BlockDriver bdrv_nbd = { - .format_name = "nbd", - .protocol_name = "nbd", -@@ -2026,6 +2058,9 @@ static BlockDriver bdrv_nbd = { - .bdrv_dirname = nbd_dirname, - .strong_runtime_opts = nbd_strong_runtime_opts, - .bdrv_cancel_in_flight = nbd_cancel_in_flight, -+ -+ .bdrv_attach_aio_context = nbd_attach_aio_context, -+ .bdrv_detach_aio_context = nbd_detach_aio_context, - }; - - static BlockDriver bdrv_nbd_tcp = { -@@ -2051,6 +2086,9 @@ static BlockDriver bdrv_nbd_tcp = { - .bdrv_dirname = nbd_dirname, - .strong_runtime_opts = nbd_strong_runtime_opts, - .bdrv_cancel_in_flight = nbd_cancel_in_flight, -+ -+ .bdrv_attach_aio_context = nbd_attach_aio_context, -+ .bdrv_detach_aio_context = nbd_detach_aio_context, - }; - - static BlockDriver bdrv_nbd_unix = { -@@ -2076,6 +2114,9 @@ static BlockDriver bdrv_nbd_unix = { - .bdrv_dirname = nbd_dirname, - .strong_runtime_opts = nbd_strong_runtime_opts, - .bdrv_cancel_in_flight = nbd_cancel_in_flight, -+ -+ .bdrv_attach_aio_context = nbd_attach_aio_context, -+ .bdrv_detach_aio_context = nbd_detach_aio_context, - }; - - static void bdrv_nbd_init(void) --- -2.27.0 - diff --git a/kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch b/kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch deleted file mode 100644 index bdebdc3..0000000 --- a/kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 6989be9d0aa08470f8b287c243dc4bf027d5fbcf Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Wed, 8 Dec 2021 15:22:46 +0000 -Subject: [PATCH 1/2] block/nvme: fix infinite loop in nvme_free_req_queue_cb() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Stefan Hajnoczi -RH-MergeRequest: 58: block/nvme: fix infinite loop in nvme_free_req_queue_cb() -RH-Commit: [1/1] 544b3f310d791a20c63b51947de0c6cbb60b0d5b (stefanha/centos-stream-qemu-kvm) -RH-Bugzilla: 2024544 -RH-Acked-by: Kevin Wolf -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Hanna Reitz - -When the request free list is exhausted the coroutine waits on -q->free_req_queue for the next free request. Whenever a request is -completed a BH is scheduled to invoke nvme_free_req_queue_cb() and wake -up waiting coroutines. - -1. nvme_get_free_req() waits for a free request: - - while (q->free_req_head == -1) { - ... - trace_nvme_free_req_queue_wait(q->s, q->index); - qemu_co_queue_wait(&q->free_req_queue, &q->lock); - ... - } - -2. nvme_free_req_queue_cb() wakes up the coroutine: - - while (qemu_co_enter_next(&q->free_req_queue, &q->lock)) { - ^--- infinite loop when free_req_head == -1 - } - -nvme_free_req_queue_cb() and the coroutine form an infinite loop when -q->free_req_head == -1. Fix this by checking q->free_req_head in -nvme_free_req_queue_cb(). If the free request list is exhausted, don't -wake waiting coroutines. Eventually an in-flight request will complete -and the BH will be scheduled again, guaranteeing forward progress. - -Signed-off-by: Stefan Hajnoczi -Reviewed-by: Philippe Mathieu-Daudé -Message-id: 20211208152246.244585-1-stefanha@redhat.com -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit cf4fbc3030c974fff726756a7ceef8386cdf500b) -Signed-off-by: Stefan Hajnoczi ---- - block/nvme.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/block/nvme.c b/block/nvme.c -index e4f336d79c..fa360b9b3c 100644 ---- a/block/nvme.c -+++ b/block/nvme.c -@@ -206,8 +206,9 @@ static void nvme_free_req_queue_cb(void *opaque) - NVMeQueuePair *q = opaque; - - qemu_mutex_lock(&q->lock); -- while (qemu_co_enter_next(&q->free_req_queue, &q->lock)) { -- /* Retry all pending requests */ -+ while (q->free_req_head != -1 && -+ qemu_co_enter_next(&q->free_req_queue, &q->lock)) { -+ /* Retry waiting requests */ - } - qemu_mutex_unlock(&q->lock); - } --- -2.27.0 - diff --git a/kvm-block-rbd-fix-handling-of-holes-in-.bdrv_co_block_st.patch b/kvm-block-rbd-fix-handling-of-holes-in-.bdrv_co_block_st.patch deleted file mode 100644 index 39aa96c..0000000 --- a/kvm-block-rbd-fix-handling-of-holes-in-.bdrv_co_block_st.patch +++ /dev/null @@ -1,59 +0,0 @@ -From d374d5aa4485a0c62d6b48eec64491cae2fd0873 Mon Sep 17 00:00:00 2001 -From: Peter Lieven -Date: Thu, 13 Jan 2022 15:44:25 +0100 -Subject: [PATCH 4/5] block/rbd: fix handling of holes in .bdrv_co_block_status - -RH-Author: Stefano Garzarella -RH-MergeRequest: 68: block/rbd: fix handling of holes in .bdrv_co_block_status -RH-Commit: [1/2] 8ef178b01885e3c292f7844ccff865b1a8d4faf0 (sgarzarella/qemu-kvm-c-9-s) -RH-Bugzilla: 2034791 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Kevin Wolf -RH-Acked-by: Hanna Reitz - -the assumption that we can't hit a hole if we do not diff against a snapshot was wrong. - -We can see a hole in an image if we diff against base if there exists an older snapshot -of the image and we have discarded blocks in the image where the snapshot has data. - -Fix this by simply handling a hole like an unallocated area. There are no callbacks -for unallocated areas so just bail out if we hit a hole. - -Fixes: 0347a8fd4c3faaedf119be04c197804be40a384b -Suggested-by: Ilya Dryomov -Cc: qemu-stable@nongnu.org -Signed-off-by: Peter Lieven -Message-Id: <20220113144426.4036493-2-pl@kamp.de> -Reviewed-by: Ilya Dryomov -Reviewed-by: Stefano Garzarella -Signed-off-by: Kevin Wolf -(cherry picked from commit 9e302f64bb407a9bb097b626da97228c2654cfee) -Signed-off-by: Stefano Garzarella ---- - block/rbd.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/block/rbd.c b/block/rbd.c -index def96292e0..20bb896c4a 100644 ---- a/block/rbd.c -+++ b/block/rbd.c -@@ -1279,11 +1279,11 @@ static int qemu_rbd_diff_iterate_cb(uint64_t offs, size_t len, - RBDDiffIterateReq *req = opaque; - - assert(req->offs + req->bytes <= offs); -- /* -- * we do not diff against a snapshot so we should never receive a callback -- * for a hole. -- */ -- assert(exists); -+ -+ /* treat a hole like an unallocated area and bail out */ -+ if (!exists) { -+ return 0; -+ } - - if (!req->exists && offs > req->offs) { - /* --- -2.27.0 - diff --git a/kvm-block-rbd-workaround-for-ceph-issue-53784.patch b/kvm-block-rbd-workaround-for-ceph-issue-53784.patch deleted file mode 100644 index dd3876e..0000000 --- a/kvm-block-rbd-workaround-for-ceph-issue-53784.patch +++ /dev/null @@ -1,103 +0,0 @@ -From f035b5250529eed8d12e0b93b1b6d6f2c50003f6 Mon Sep 17 00:00:00 2001 -From: Peter Lieven -Date: Thu, 13 Jan 2022 15:44:26 +0100 -Subject: [PATCH 5/5] block/rbd: workaround for ceph issue #53784 - -RH-Author: Stefano Garzarella -RH-MergeRequest: 68: block/rbd: fix handling of holes in .bdrv_co_block_status -RH-Commit: [2/2] 5feaa2e20a77886cc1a84cdf212ade3dcda28289 (sgarzarella/qemu-kvm-c-9-s) -RH-Bugzilla: 2034791 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Kevin Wolf -RH-Acked-by: Hanna Reitz - -librbd had a bug until early 2022 that affected all versions of ceph that -supported fast-diff. This bug results in reporting of incorrect offsets -if the offset parameter to rbd_diff_iterate2 is not object aligned. - -This patch works around this bug for pre Quincy versions of librbd. - -Fixes: 0347a8fd4c3faaedf119be04c197804be40a384b -Cc: qemu-stable@nongnu.org -Signed-off-by: Peter Lieven -Message-Id: <20220113144426.4036493-3-pl@kamp.de> -Reviewed-by: Ilya Dryomov -Reviewed-by: Stefano Garzarella -Tested-by: Stefano Garzarella -Signed-off-by: Kevin Wolf -(cherry picked from commit fc176116cdea816ceb8dd969080b2b95f58edbc0) -Signed-off-by: Stefano Garzarella ---- - block/rbd.c | 42 ++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 40 insertions(+), 2 deletions(-) - -diff --git a/block/rbd.c b/block/rbd.c -index 20bb896c4a..8f183eba2a 100644 ---- a/block/rbd.c -+++ b/block/rbd.c -@@ -1320,6 +1320,7 @@ static int coroutine_fn qemu_rbd_co_block_status(BlockDriverState *bs, - int status, r; - RBDDiffIterateReq req = { .offs = offset }; - uint64_t features, flags; -+ uint64_t head = 0; - - assert(offset + bytes <= s->image_size); - -@@ -1347,7 +1348,43 @@ static int coroutine_fn qemu_rbd_co_block_status(BlockDriverState *bs, - return status; - } - -- r = rbd_diff_iterate2(s->image, NULL, offset, bytes, true, true, -+#if LIBRBD_VERSION_CODE < LIBRBD_VERSION(1, 17, 0) -+ /* -+ * librbd had a bug until early 2022 that affected all versions of ceph that -+ * supported fast-diff. This bug results in reporting of incorrect offsets -+ * if the offset parameter to rbd_diff_iterate2 is not object aligned. -+ * Work around this bug by rounding down the offset to object boundaries. -+ * This is OK because we call rbd_diff_iterate2 with whole_object = true. -+ * However, this workaround only works for non cloned images with default -+ * striping. -+ * -+ * See: https://tracker.ceph.com/issues/53784 -+ */ -+ -+ /* check if RBD image has non-default striping enabled */ -+ if (features & RBD_FEATURE_STRIPINGV2) { -+ return status; -+ } -+ -+#pragma GCC diagnostic push -+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -+ /* -+ * check if RBD image is a clone (= has a parent). -+ * -+ * rbd_get_parent_info is deprecated from Nautilus onwards, but the -+ * replacement rbd_get_parent is not present in Luminous and Mimic. -+ */ -+ if (rbd_get_parent_info(s->image, NULL, 0, NULL, 0, NULL, 0) != -ENOENT) { -+ return status; -+ } -+#pragma GCC diagnostic pop -+ -+ head = req.offs & (s->object_size - 1); -+ req.offs -= head; -+ bytes += head; -+#endif -+ -+ r = rbd_diff_iterate2(s->image, NULL, req.offs, bytes, true, true, - qemu_rbd_diff_iterate_cb, &req); - if (r < 0 && r != QEMU_RBD_EXIT_DIFF_ITERATE2) { - return status; -@@ -1366,7 +1403,8 @@ static int coroutine_fn qemu_rbd_co_block_status(BlockDriverState *bs, - status = BDRV_BLOCK_ZERO | BDRV_BLOCK_OFFSET_VALID; - } - -- *pnum = req.bytes; -+ assert(req.bytes > head); -+ *pnum = req.bytes - head; - return status; - } - --- -2.27.0 - diff --git a/kvm-doc-Add-the-SGX-numa-description.patch b/kvm-doc-Add-the-SGX-numa-description.patch deleted file mode 100644 index 8eac5fa..0000000 --- a/kvm-doc-Add-the-SGX-numa-description.patch +++ /dev/null @@ -1,77 +0,0 @@ -From eb88a12ab1ecfe77bcc0d0067c96fce27a3bde01 Mon Sep 17 00:00:00 2001 -From: Yang Zhong -Date: Mon, 1 Nov 2021 12:20:08 -0400 -Subject: [PATCH 03/12] doc: Add the SGX numa description - -RH-Author: Paul Lai -RH-MergeRequest: 65: Enable SGX and add SGX Numa support -RH-Commit: [3/5] c27b3f6976cbe92cc3c0e1dab0191cdd25de596a -RH-Bugzilla: 2033708 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: Bandan Das -RH-Acked-by: Cornelia Huck - -Add the SGX numa reference command and how to check if -SGX numa is support or not with multiple EPC sections. - -Signed-off-by: Yang Zhong -Message-Id: <20211101162009.62161-5-yang.zhong@intel.com> -Signed-off-by: Paolo Bonzini -(cherry picked from commit d1889b36098c79e2e6ac90faf3d0dc5ec0057677) -Signed-off-by: Paul Lai ---- - docs/system/i386/sgx.rst | 31 +++++++++++++++++++++++++++---- - 1 file changed, 27 insertions(+), 4 deletions(-) - -diff --git a/docs/system/i386/sgx.rst b/docs/system/i386/sgx.rst -index f8fade5ac2..0f0a73f758 100644 ---- a/docs/system/i386/sgx.rst -+++ b/docs/system/i386/sgx.rst -@@ -141,8 +141,7 @@ To launch a SGX guest: - |qemu_system_x86| \\ - -cpu host,+sgx-provisionkey \\ - -object memory-backend-epc,id=mem1,size=64M,prealloc=on \\ -- -object memory-backend-epc,id=mem2,size=28M \\ -- -M sgx-epc.0.memdev=mem1,sgx-epc.1.memdev=mem2 -+ -M sgx-epc.0.memdev=mem1,sgx-epc.0.node=0 - - Utilizing SGX in the guest requires a kernel/OS with SGX support. - The support can be determined in guest by:: -@@ -152,8 +151,32 @@ The support can be determined in guest by:: - and SGX epc info by:: - - $ dmesg | grep sgx -- [ 1.242142] sgx: EPC section 0x180000000-0x181bfffff -- [ 1.242319] sgx: EPC section 0x181c00000-0x1837fffff -+ [ 0.182807] sgx: EPC section 0x140000000-0x143ffffff -+ [ 0.183695] sgx: [Firmware Bug]: Unable to map EPC section to online node. Fallback to the NUMA node 0. -+ -+To launch a SGX numa guest: -+ -+.. parsed-literal:: -+ -+ |qemu_system_x86| \\ -+ -cpu host,+sgx-provisionkey \\ -+ -object memory-backend-ram,size=2G,host-nodes=0,policy=bind,id=node0 \\ -+ -object memory-backend-epc,id=mem0,size=64M,prealloc=on,host-nodes=0,policy=bind \\ -+ -numa node,nodeid=0,cpus=0-1,memdev=node0 \\ -+ -object memory-backend-ram,size=2G,host-nodes=1,policy=bind,id=node1 \\ -+ -object memory-backend-epc,id=mem1,size=28M,prealloc=on,host-nodes=1,policy=bind \\ -+ -numa node,nodeid=1,cpus=2-3,memdev=node1 \\ -+ -M sgx-epc.0.memdev=mem0,sgx-epc.0.node=0,sgx-epc.1.memdev=mem1,sgx-epc.1.node=1 -+ -+and SGX epc numa info by:: -+ -+ $ dmesg | grep sgx -+ [ 0.369937] sgx: EPC section 0x180000000-0x183ffffff -+ [ 0.370259] sgx: EPC section 0x184000000-0x185bfffff -+ -+ $ dmesg | grep SRAT -+ [ 0.009981] ACPI: SRAT: Node 0 PXM 0 [mem 0x180000000-0x183ffffff] -+ [ 0.009982] ACPI: SRAT: Node 1 PXM 1 [mem 0x184000000-0x185bfffff] - - References - ---------- --- -2.27.0 - diff --git a/kvm-hw-arm-smmuv3-Fix-device-reset.patch b/kvm-hw-arm-smmuv3-Fix-device-reset.patch deleted file mode 100644 index 3b8f307..0000000 --- a/kvm-hw-arm-smmuv3-Fix-device-reset.patch +++ /dev/null @@ -1,61 +0,0 @@ -From c08c3fbb2bb8494738fd34ec8fc9dc434ce82f4b Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Wed, 2 Feb 2022 12:16:02 +0100 -Subject: [PATCH 12/12] hw/arm/smmuv3: Fix device reset - -RH-Author: Eric Auger -RH-MergeRequest: 72: hw/arm/smmuv3: Fix device reset -RH-Commit: [1/1] 2cfee2f7a03692681224fed96bb4f28406bf460a (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2042481 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Peter Xu -RH-Acked-by: Andrew Jones - -branch: c9s -Brew: 42958737 -Upstream: yes - -We currently miss a bunch of register resets in the device reset -function. This sometimes prevents the guest from rebooting after -a system_reset (with virtio-blk-pci). For instance, we may get -the following errors: - -invalid STE -smmuv3-iommu-memory-region-0-0 translation failed for iova=0x13a9d2000(SMMU_EVT_C_BAD_STE) -Invalid read at addr 0x13A9D2000, size 2, region '(null)', reason: rejected -invalid STE -smmuv3-iommu-memory-region-0-0 translation failed for iova=0x13a9d2000(SMMU_EVT_C_BAD_STE) -Invalid write at addr 0x13A9D2000, size 2, region '(null)', reason: rejected -invalid STE - -Signed-off-by: Eric Auger -Message-id: 20220202111602.627429-1-eric.auger@redhat.com -Fixes: 10a83cb988 ("hw/arm/smmuv3: Skeleton") -Reviewed-by: Peter Maydell -Signed-off-by: Peter Maydell -(cherry picked from commit 43530095e18fd16dcd51a4b385ad2a22c36f5698) -Signed-off-by: Eric Auger ---- - hw/arm/smmuv3.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c -index 01b60bee49..1b5640bb98 100644 ---- a/hw/arm/smmuv3.c -+++ b/hw/arm/smmuv3.c -@@ -276,6 +276,12 @@ static void smmuv3_init_regs(SMMUv3State *s) - s->features = 0; - s->sid_split = 0; - s->aidr = 0x1; -+ s->cr[0] = 0; -+ s->cr0ack = 0; -+ s->irq_ctrl = 0; -+ s->gerror = 0; -+ s->gerrorn = 0; -+ s->statusr = 0; - } - - static int smmu_get_ste(SMMUv3State *s, dma_addr_t addr, STE *buf, --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Add-9.0-machine-type-and-remove-8.5-one.patch b/kvm-hw-arm-virt-Add-9.0-machine-type-and-remove-8.5-one.patch deleted file mode 100644 index 390a91c..0000000 --- a/kvm-hw-arm-virt-Add-9.0-machine-type-and-remove-8.5-one.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 6b0e129f0758ccd076d1ecbf85c8f1e863788981 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Mon, 20 Dec 2021 10:11:47 +0100 -Subject: [PATCH 5/6] hw/arm/virt: Add 9.0 machine type and remove 8.5 one - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [5/6] f573a2fb44882a010e2c6bf5f561f29d54e6e9b5 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -Add 9.0 machine type and remove 8.5 one. - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 10 ++-------- - 1 file changed, 2 insertions(+), 8 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index d433139479..d537706a86 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3236,14 +3236,8 @@ static void rhel_machine_init(void) - } - type_init(rhel_machine_init); - --static void rhel850_virt_options(MachineClass *mc) -+static void rhel900_virt_options(MachineClass *mc) - { -- VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); -- - compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); -- compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); -- mc->smp_props.prefer_sockets = true; -- vmc->no_cpu_topology = true; -- vmc->no_tcg_its = true; - } --DEFINE_RHEL_MACHINE_AS_LATEST(8, 5, 0) -+DEFINE_RHEL_MACHINE_AS_LATEST(9, 0, 0) --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch b/kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch deleted file mode 100644 index 0e4acf4..0000000 --- a/kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 4098f7b5aea8871a655bab43d5114d067662e6c5 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Wed, 5 Jan 2022 16:17:10 +0100 -Subject: [PATCH 6/6] hw/arm/virt: Check no_tcg_its and minor style changes - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [6/6] 4480d569463fd3f637404539d3bd06b59cafbc88 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -Truly allow TCG ITS instantiation according to the no_tcg_its -class flag. Otherwise it is always set to false. - -We also take benefit of this patch to do some minor non -functional style changes to be closer to the upstream code. - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index d537706a86..0e691cbe81 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3163,6 +3163,7 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "in ACPI table header." - "The string may be up to 6 bytes in size"); - -+ - object_class_property_add_str(oc, "x-oem-table-id", - virt_get_oem_table_id, - virt_set_oem_table_id); -@@ -3170,6 +3171,7 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Override the default value of field OEM Table ID " - "in ACPI table header." - "The string may be up to 8 bytes in size"); -+ - } - - static void rhel_virt_instance_init(Object *obj) -@@ -3194,26 +3196,32 @@ static void rhel_virt_instance_init(Object *obj) - } else { - /* Default allows ITS instantiation */ - vms->its = true; -+ -+ if (vmc->no_tcg_its) { -+ vms->tcg_its = false; -+ } else { -+ vms->tcg_its = true; -+ } - } - - /* Default disallows iommu instantiation */ - vms->iommu = VIRT_IOMMU_NONE; - -+ /* The default root bus is attached to iommu by default */ -+ vms->default_bus_bypass_iommu = false; -+ - /* Default disallows RAS instantiation and is non-configurable for RHEL */ - vms->ras = false; - - /* MTE is disabled by default and non-configurable for RHEL */ - vms->mte = false; - -- /* The default root bus is attached to iommu by default */ -- vms->default_bus_bypass_iommu = false; -- - vms->irqmap = a15irqmap; - - virt_flash_create(vms); -+ - vms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); - vms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); -- - } - - static const TypeInfo rhel_machine_info = { --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Expose-the-RAS-option.patch b/kvm-hw-arm-virt-Expose-the-RAS-option.patch deleted file mode 100644 index e0365c9..0000000 --- a/kvm-hw-arm-virt-Expose-the-RAS-option.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 914d9f9eea5d0a944aa93682b03d3189ad37ec9b Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Mon, 20 Dec 2021 15:34:22 +0100 -Subject: [PATCH 4/6] hw/arm/virt: Expose the 'RAS' option - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [4/6] c8704564d31b23a0f08a6ced946c9a81e2e72c11 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -In RHEL9.0 we want to expose the 'RAS' option. - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index c99ca93e75..d433139479 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -2348,7 +2348,6 @@ static void virt_set_acpi(Object *obj, Visitor *v, const char *name, - visit_type_OnOffAuto(v, name, &vms->acpi, errp); - } - --#if 0 /* Disabled for Red Hat Enterprise Linux */ - static bool virt_get_ras(Object *obj, Error **errp) - { - VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -2363,6 +2362,7 @@ static void virt_set_ras(Object *obj, bool value, Error **errp) - vms->ras = value; - } - -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - static bool virt_get_mte(Object *obj, Error **errp) - { - VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -3143,6 +3143,12 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Set on/off to enable/disable " - "bypass_iommu for default root bus"); - -+ object_class_property_add_bool(oc, "ras", virt_get_ras, -+ virt_set_ras); -+ object_class_property_set_description(oc, "ras", -+ "Set on/off to enable/disable reporting host memory errors " -+ "to a KVM guest using ACPI and guest external abort exceptions"); -+ - object_class_property_add_bool(oc, "its", virt_get_its, - virt_set_its); - object_class_property_set_description(oc, "its", --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Register-iommu-as-a-class-property.patch b/kvm-hw-arm-virt-Register-iommu-as-a-class-property.patch deleted file mode 100644 index 6c21c9a..0000000 --- a/kvm-hw-arm-virt-Register-iommu-as-a-class-property.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 545076d67ef27203e08538123d8bc3798caf9505 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Mon, 20 Dec 2021 15:50:44 +0100 -Subject: [PATCH 1/6] hw/arm/virt: Register "iommu" as a class property - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [1/6] 2b6a22ebddd2da7505961ff4ffe90424f7489300 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -Register the "iommu" option as a class property. This mirrors what -was done in upstream commit b91def7b ("arm/virt: Register -most properties as class properties"). - -While we are at it we also move the "x-oem-id" and "x-oem-table-id" -registrations at the very end of the rhel_machine_class_init() -function. This makes our life easier when comparing with upstream. - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 23 ++++++++++++----------- - 1 file changed, 12 insertions(+), 11 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 6ba9a2c2e1..7e227b1fa4 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3131,6 +3131,18 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Set GIC version. " - "Valid values are 2, 3, host and max"); - -+ object_class_property_add_str(oc, "iommu", virt_get_iommu, virt_set_iommu); -+ object_class_property_set_description(oc, "iommu", -+ "Set the IOMMU type. " -+ "Valid values are none and smmuv3"); -+ -+ object_class_property_add_bool(oc, "default_bus_bypass_iommu", -+ virt_get_default_bus_bypass_iommu, -+ virt_set_default_bus_bypass_iommu); -+ object_class_property_set_description(oc, "default_bus_bypass_iommu", -+ "Set on/off to enable/disable " -+ "bypass_iommu for default root bus"); -+ - object_class_property_add_str(oc, "x-oem-id", - virt_get_oem_id, - virt_set_oem_id); -@@ -3146,13 +3158,6 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Override the default value of field OEM Table ID " - "in ACPI table header." - "The string may be up to 8 bytes in size"); -- object_class_property_add_bool(oc, "default_bus_bypass_iommu", -- virt_get_default_bus_bypass_iommu, -- virt_set_default_bus_bypass_iommu); -- object_class_property_set_description(oc, "default_bus_bypass_iommu", -- "Set on/off to enable/disable " -- "bypass_iommu for default root bus"); -- - } - - static void rhel_virt_instance_init(Object *obj) -@@ -3186,10 +3191,6 @@ static void rhel_virt_instance_init(Object *obj) - - /* Default disallows iommu instantiation */ - vms->iommu = VIRT_IOMMU_NONE; -- object_property_add_str(obj, "iommu", virt_get_iommu, virt_set_iommu); -- object_property_set_description(obj, "iommu", -- "Set the IOMMU type. " -- "Valid values are none and smmuv3"); - - /* Default disallows RAS instantiation and is non-configurable for RHEL */ - vms->ras = false; --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Register-its-as-a-class-property.patch b/kvm-hw-arm-virt-Register-its-as-a-class-property.patch deleted file mode 100644 index 95f58a4..0000000 --- a/kvm-hw-arm-virt-Register-its-as-a-class-property.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 789933e2598f9a525c2a638feca974ca1730a859 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Mon, 20 Dec 2021 16:04:59 +0100 -Subject: [PATCH 2/6] hw/arm/virt: Register "its" as a class property - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [2/6] dbd3e994553f00cd19842824f6bd763863a4e484 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -Register "its" as a class property. This mirrors what was done -in commit 27edeeaafe43 ("virt: Register "its" as class property"). - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 7e227b1fa4..984151b7dd 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3143,6 +3143,12 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Set on/off to enable/disable " - "bypass_iommu for default root bus"); - -+ object_class_property_add_bool(oc, "its", virt_get_its, -+ virt_set_its); -+ object_class_property_set_description(oc, "its", -+ "Set on/off to enable/disable " -+ "ITS instantiation"); -+ - object_class_property_add_str(oc, "x-oem-id", - virt_get_oem_id, - virt_set_oem_id); -@@ -3182,11 +3188,6 @@ static void rhel_virt_instance_init(Object *obj) - } else { - /* Default allows ITS instantiation */ - vms->its = true; -- object_property_add_bool(obj, "its", virt_get_its, -- virt_set_its); -- object_property_set_description(obj, "its", -- "Set on/off to enable/disable " -- "ITS instantiation"); - } - - /* Default disallows iommu instantiation */ --- -2.27.0 - diff --git a/kvm-hw-arm-virt-Rename-default_bus_bypass_iommu.patch b/kvm-hw-arm-virt-Rename-default_bus_bypass_iommu.patch deleted file mode 100644 index eab69d2..0000000 --- a/kvm-hw-arm-virt-Rename-default_bus_bypass_iommu.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 94987c271c3bdc37216c5baa4c5766b9b7f053a1 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Mon, 20 Dec 2021 15:58:38 +0100 -Subject: [PATCH 3/6] hw/arm/virt: Rename default_bus_bypass_iommu - -RH-Author: Eric Auger -RH-MergeRequest: 57: hw/arm/virt: Add 9.0 machine type and remove 8.5 one -RH-Commit: [3/6] 6b66844ae4629d8c879f7c6abbc5e5017a162e16 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 2031044 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina - -branch: c9s -Brew: 42213566 -Upstream: no - -Rename "default_bus_bypass_iommu" into "default-bus-bypass-iommu". -This mirrors what was done in upstream commit: -9dad363a223 ("hw/arm/virt: Rename default_bus_bypass_iommu") - -Signed-off-by: Eric Auger ---- - hw/arm/virt.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 984151b7dd..c99ca93e75 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3136,10 +3136,10 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - "Set the IOMMU type. " - "Valid values are none and smmuv3"); - -- object_class_property_add_bool(oc, "default_bus_bypass_iommu", -+ object_class_property_add_bool(oc, "default-bus-bypass-iommu", - virt_get_default_bus_bypass_iommu, - virt_set_default_bus_bypass_iommu); -- object_class_property_set_description(oc, "default_bus_bypass_iommu", -+ object_class_property_set_description(oc, "default-bus-bypass-iommu", - "Set on/off to enable/disable " - "bypass_iommu for default root bus"); - --- -2.27.0 - diff --git a/kvm-hw-virtio-vdpa-Fix-leak-of-host-notifier-memory-regi.patch b/kvm-hw-virtio-vdpa-Fix-leak-of-host-notifier-memory-regi.patch deleted file mode 100644 index 767991d..0000000 --- a/kvm-hw-virtio-vdpa-Fix-leak-of-host-notifier-memory-regi.patch +++ /dev/null @@ -1,60 +0,0 @@ -From f62b9eb18b0cc7ceb5a842aa0db43dae9a568647 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Fri, 11 Feb 2022 18:02:59 +0100 -Subject: [PATCH 2/5] hw/virtio: vdpa: Fix leak of host-notifier memory-region - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 78: Synchronize with RHEL 9.0.0 build qemu-kvm-6.2.0-11.el9_0.1 -RH-Commit: [2/5] 38cb408826a6925fc7c482a03e4364c6f918396e (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 2062828 2062819 2062817 2062813 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Cornelia Huck - -BZ: https://bugzilla.redhat.com/2059786 -BRANCH: rhel-9.0.0 -BREW: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=43688388 -UPTREAM: Merged - -If call virtio_queue_set_host_notifier_mr fails, should free -host-notifier memory-region. - -This problem can trigger a coredump with some vDPA drivers (mlx5, -but not with the vdpasim), if we unplug the virtio-net card from -the guest after a stop/start. - -The same fix has been done for vhost-user: - 1f89d3b91e3e ("hw/virtio: Fix leak of host-notifier memory-region") - -Fixes: d0416d487bd5 ("vhost-vdpa: map virtqueue notification area if possible") -Cc: jasowang@redhat.com -Resolves: https://bugzilla.redhat.com/2027208 -Signed-off-by: Laurent Vivier -Message-Id: <20220211170259.1388734-1-lvivier@redhat.com> -Cc: qemu-stable@nongnu.org -Acked-by: Jason Wang -Reviewed-by: Stefano Garzarella -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 98f7607ecda00dea3cbb2ed7b4427c96846efb83) -Signed-off-by: Laurent Vivier - -Forward-port of RHEL 9.0.0 MR 123 (hw/virtio: vdpa: Fix leak of host-notifier memory-region) ---- - hw/virtio/vhost-vdpa.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c -index bcaf00e09f..78da48a333 100644 ---- a/hw/virtio/vhost-vdpa.c -+++ b/hw/virtio/vhost-vdpa.c -@@ -415,6 +415,7 @@ static int vhost_vdpa_host_notifier_init(struct vhost_dev *dev, int queue_index) - g_free(name); - - if (virtio_queue_set_host_notifier_mr(vdev, queue_index, &n->mr, true)) { -+ object_unparent(OBJECT(&n->mr)); - munmap(addr, page_size); - goto err; - } --- -2.31.1 - diff --git a/kvm-iotests-281-Let-NBD-connection-yield-in-iothread.patch b/kvm-iotests-281-Let-NBD-connection-yield-in-iothread.patch deleted file mode 100644 index 20bc3a5..0000000 --- a/kvm-iotests-281-Let-NBD-connection-yield-in-iothread.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 06583ce33fab2976157461ac4503d6f8eeb59e75 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:12 +0100 -Subject: [PATCH 8/8] iotests/281: Let NBD connection yield in iothread - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [6/6] 632b9ef5177a80d1c0c00121e1acc37272076d3e (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -Put an NBD block device into an I/O thread, and then read data from it, -hoping that the NBD connection will yield during that read. When it -does, the coroutine must be reentered in the block device's I/O thread, -which will only happen if the NBD block driver attaches the connection's -QIOChannel to the new AioContext. It did not do that after 4ddb5d2fde -("block/nbd: drop connection_co") and prior to "block/nbd: Move s->ioc -on AioContext change", which would cause an assertion failure. - -To improve our chances of yielding, the NBD server is throttled to -reading 64 kB/s, and the NBD client reads 128 kB, so it should yield at -some point. - -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 8cfbe929e8c26050f0a4580a1606a370a947d4ce) -Signed-off-by: Hanna Reitz ---- - tests/qemu-iotests/281 | 28 +++++++++++++++++++++++++--- - tests/qemu-iotests/281.out | 4 ++-- - 2 files changed, 27 insertions(+), 5 deletions(-) - -diff --git a/tests/qemu-iotests/281 b/tests/qemu-iotests/281 -index 13c588be75..b2ead7f388 100755 ---- a/tests/qemu-iotests/281 -+++ b/tests/qemu-iotests/281 -@@ -253,8 +253,9 @@ class TestYieldingAndTimers(iotests.QMPTestCase): - self.create_nbd_export() - - # Simple VM with an NBD block device connected to the NBD export -- # provided by the QSD -+ # provided by the QSD, and an (initially unused) iothread - self.vm = iotests.VM() -+ self.vm.add_object('iothread,id=iothr') - self.vm.add_blockdev('nbd,node-name=nbd,server.type=unix,' + - f'server.path={self.sock},export=exp,' + - 'reconnect-delay=1') -@@ -293,19 +294,40 @@ class TestYieldingAndTimers(iotests.QMPTestCase): - # thus not see the error, and so the test will pass.) - time.sleep(2) - -+ def test_yield_in_iothread(self): -+ # Move the NBD node to the I/O thread; the NBD block driver should -+ # attach the connection's QIOChannel to that thread's AioContext, too -+ result = self.vm.qmp('x-blockdev-set-iothread', -+ node_name='nbd', iothread='iothr') -+ self.assert_qmp(result, 'return', {}) -+ -+ # Do some I/O that will be throttled by the QSD, so that the network -+ # connection hopefully will yield here. When it is resumed, it must -+ # then be resumed in the I/O thread's AioContext. -+ result = self.vm.qmp('human-monitor-command', -+ command_line='qemu-io nbd "read 0 128K"') -+ self.assert_qmp(result, 'return', '') -+ - def create_nbd_export(self): - assert self.qsd is None - -- # Simple NBD export of a null-co BDS -+ # Export a throttled null-co BDS: Reads are throttled (max 64 kB/s), -+ # writes are not. - self.qsd = QemuStorageDaemon( -+ '--object', -+ 'throttle-group,id=thrgr,x-bps-read=65536,x-bps-read-max=65536', -+ - '--blockdev', - 'null-co,node-name=null,read-zeroes=true', - -+ '--blockdev', -+ 'throttle,node-name=thr,file=null,throttle-group=thrgr', -+ - '--nbd-server', - f'addr.type=unix,addr.path={self.sock}', - - '--export', -- 'nbd,id=exp,node-name=null,name=exp,writable=true' -+ 'nbd,id=exp,node-name=thr,name=exp,writable=true' - ) - - def stop_nbd_export(self): -diff --git a/tests/qemu-iotests/281.out b/tests/qemu-iotests/281.out -index 914e3737bd..3f8a935a08 100644 ---- a/tests/qemu-iotests/281.out -+++ b/tests/qemu-iotests/281.out -@@ -1,5 +1,5 @@ --..... -+...... - ---------------------------------------------------------------------- --Ran 5 tests -+Ran 6 tests - - OK --- -2.27.0 - diff --git a/kvm-iotests-281-Test-lingering-timers.patch b/kvm-iotests-281-Test-lingering-timers.patch deleted file mode 100644 index 7175a31..0000000 --- a/kvm-iotests-281-Test-lingering-timers.patch +++ /dev/null @@ -1,174 +0,0 @@ -From 3d2d7a46713d362d2ff5137841e689593da976a3 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:10 +0100 -Subject: [PATCH 6/8] iotests/281: Test lingering timers - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [4/6] d228ba3fcdfaab2d54dd5b023688a1c055cce2c2 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -Prior to "block/nbd: Delete reconnect delay timer when done" and -"block/nbd: Delete open timer when done", both of those timers would -remain scheduled even after successfully (re-)connecting to the server, -and they would not even be deleted when the BDS is deleted. - -This test constructs exactly this situation: -(1) Configure an @open-timeout, so the open timer is armed, and -(2) Configure a @reconnect-delay and trigger a reconnect situation - (which succeeds immediately), so the reconnect delay timer is armed. -Then we immediately delete the BDS, and sleep for longer than the -@open-timeout and @reconnect-delay. Prior to said patches, this caused -one (or both) of the timer CBs to access already-freed data. - -Accessing freed data may or may not crash, so this test can produce -false successes, but I do not know how to show the problem in a better -or more reliable way. If you run this test on "block/nbd: Assert there -are no timers when closed" and without the fix patches mentioned above, -you should reliably see an assertion failure. -(But all other tests that use the reconnect delay timer (264 and 277) -will fail in that configuration, too; as will nbd-reconnect-on-open, -which uses the open timer.) - -Remove this test from the quick group because of the two second sleep -this patch introduces. - -(I decided to put this test case into 281, because the main bug this -series addresses is in the interaction of the NBD block driver and I/O -threads, which is precisely the scope of 281. The test case for that -other bug will also be put into the test class added here. - -Also, excuse the test class's name, I couldn't come up with anything -better. The "yield" part will make sense two patches from now.) - -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit eaf1e85d4ddefdbd197f393fa9c5acc7ba8133b0) - -Conflict: -- @open-timeout was introduced after the 6.2 release, and has not been - backported. Consequently, there is no open_timer, and we can (and - must) drop the respective parts of the test here. - -Signed-off-by: Hanna Reitz ---- - tests/qemu-iotests/281 | 73 ++++++++++++++++++++++++++++++++++++-- - tests/qemu-iotests/281.out | 4 +-- - 2 files changed, 73 insertions(+), 4 deletions(-) - -diff --git a/tests/qemu-iotests/281 b/tests/qemu-iotests/281 -index 956698083f..13c588be75 100755 ---- a/tests/qemu-iotests/281 -+++ b/tests/qemu-iotests/281 -@@ -1,5 +1,5 @@ - #!/usr/bin/env python3 --# group: rw quick -+# group: rw - # - # Test cases for blockdev + IOThread interactions - # -@@ -20,8 +20,9 @@ - # - - import os -+import time - import iotests --from iotests import qemu_img -+from iotests import qemu_img, QemuStorageDaemon - - image_len = 64 * 1024 * 1024 - -@@ -243,6 +244,74 @@ class TestBlockdevBackupAbort(iotests.QMPTestCase): - # Hangs on failure, we expect this error. - self.assert_qmp(result, 'error/class', 'GenericError') - -+# Test for RHBZ#2033626 -+class TestYieldingAndTimers(iotests.QMPTestCase): -+ sock = os.path.join(iotests.sock_dir, 'nbd.sock') -+ qsd = None -+ -+ def setUp(self): -+ self.create_nbd_export() -+ -+ # Simple VM with an NBD block device connected to the NBD export -+ # provided by the QSD -+ self.vm = iotests.VM() -+ self.vm.add_blockdev('nbd,node-name=nbd,server.type=unix,' + -+ f'server.path={self.sock},export=exp,' + -+ 'reconnect-delay=1') -+ -+ self.vm.launch() -+ -+ def tearDown(self): -+ self.stop_nbd_export() -+ self.vm.shutdown() -+ -+ def test_timers_with_blockdev_del(self): -+ # Stop and restart the NBD server, and do some I/O on the client to -+ # trigger a reconnect and start the reconnect delay timer -+ self.stop_nbd_export() -+ self.create_nbd_export() -+ -+ result = self.vm.qmp('human-monitor-command', -+ command_line='qemu-io nbd "write 0 512"') -+ self.assert_qmp(result, 'return', '') -+ -+ # Reconnect is done, so the reconnect delay timer should be gone. -+ # (But there used to be a bug where it remained active, for which this -+ # is a regression test.) -+ -+ # Delete the BDS to see whether the timer is gone. If it is not, -+ # it will remain active, fire later, and then access freed data. -+ # (Or, with "block/nbd: Assert there are no timers when closed" -+ # applied, the assertion added in that patch will fail.) -+ result = self.vm.qmp('blockdev-del', node_name='nbd') -+ self.assert_qmp(result, 'return', {}) -+ -+ # Give the timer some time to fire (it has a timeout of 1 s). -+ # (Sleeping in an iotest may ring some alarm bells, but note that if -+ # the timing is off here, the test will just always pass. If we kill -+ # the VM too early, then we just kill the timer before it can fire, -+ # thus not see the error, and so the test will pass.) -+ time.sleep(2) -+ -+ def create_nbd_export(self): -+ assert self.qsd is None -+ -+ # Simple NBD export of a null-co BDS -+ self.qsd = QemuStorageDaemon( -+ '--blockdev', -+ 'null-co,node-name=null,read-zeroes=true', -+ -+ '--nbd-server', -+ f'addr.type=unix,addr.path={self.sock}', -+ -+ '--export', -+ 'nbd,id=exp,node-name=null,name=exp,writable=true' -+ ) -+ -+ def stop_nbd_export(self): -+ self.qsd.stop() -+ self.qsd = None -+ - if __name__ == '__main__': - iotests.main(supported_fmts=['qcow2'], - supported_protocols=['file']) -diff --git a/tests/qemu-iotests/281.out b/tests/qemu-iotests/281.out -index 89968f35d7..914e3737bd 100644 ---- a/tests/qemu-iotests/281.out -+++ b/tests/qemu-iotests/281.out -@@ -1,5 +1,5 @@ --.... -+..... - ---------------------------------------------------------------------- --Ran 4 tests -+Ran 5 tests - - OK --- -2.27.0 - diff --git a/kvm-iotests-Test-blockdev-reopen-with-iothreads-and-thro.patch b/kvm-iotests-Test-blockdev-reopen-with-iothreads-and-thro.patch deleted file mode 100644 index 8616f1c..0000000 --- a/kvm-iotests-Test-blockdev-reopen-with-iothreads-and-thro.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 37593348e7d95580fb2b0009dcb026c07367f1f8 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Thu, 3 Feb 2022 15:05:34 +0100 -Subject: [PATCH 2/8] iotests: Test blockdev-reopen with iothreads and - throttling - -RH-Author: Kevin Wolf -RH-MergeRequest: 73: block: Lock AioContext for drain_end in blockdev-reopen -RH-Commit: [2/2] d19d5fa9efa4813ece75708436891041754ab910 (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 2046659 -RH-Acked-by: Sergio Lopez -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Hanna Reitz - -The 'throttle' block driver implements .bdrv_co_drain_end, so -blockdev-reopen will have to wait for it to complete in the polling -loop at the end of qmp_blockdev_reopen(). This makes AIO_WAIT_WHILE() -release the AioContext lock, which causes a crash if the lock hasn't -correctly been taken. - -Signed-off-by: Kevin Wolf -Message-Id: <20220203140534.36522-3-kwolf@redhat.com> -Reviewed-by: Hanna Reitz -Signed-off-by: Kevin Wolf -(cherry picked from commit ee810602376125ca0e0afd6b7c715e13740978ea) -Signed-off-by: Kevin Wolf ---- - tests/qemu-iotests/245 | 36 +++++++++++++++++++++++++++++++++--- - tests/qemu-iotests/245.out | 4 ++-- - 2 files changed, 35 insertions(+), 5 deletions(-) - -diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245 -index 24ac43f70e..8cbed7821b 100755 ---- a/tests/qemu-iotests/245 -+++ b/tests/qemu-iotests/245 -@@ -1138,12 +1138,13 @@ class TestBlockdevReopen(iotests.QMPTestCase): - self.assertEqual(self.get_node('hd1'), None) - self.assert_qmp(self.get_node('hd2'), 'ro', True) - -- def run_test_iothreads(self, iothread_a, iothread_b, errmsg = None): -- opts = hd_opts(0) -+ def run_test_iothreads(self, iothread_a, iothread_b, errmsg = None, -+ opts_a = None, opts_b = None): -+ opts = opts_a or hd_opts(0) - result = self.vm.qmp('blockdev-add', conv_keys = False, **opts) - self.assert_qmp(result, 'return', {}) - -- opts2 = hd_opts(2) -+ opts2 = opts_b or hd_opts(2) - result = self.vm.qmp('blockdev-add', conv_keys = False, **opts2) - self.assert_qmp(result, 'return', {}) - -@@ -1194,6 +1195,35 @@ class TestBlockdevReopen(iotests.QMPTestCase): - def test_iothreads_switch_overlay(self): - self.run_test_iothreads('', 'iothread0') - -+ def test_iothreads_with_throttling(self): -+ # Create a throttle-group object -+ opts = { 'qom-type': 'throttle-group', 'id': 'group0', -+ 'limits': { 'iops-total': 1000 } } -+ result = self.vm.qmp('object-add', conv_keys = False, **opts) -+ self.assert_qmp(result, 'return', {}) -+ -+ # Options with a throttle filter between format and protocol -+ opts = [ -+ { -+ 'driver': iotests.imgfmt, -+ 'node-name': f'hd{idx}', -+ 'file' : { -+ 'node-name': f'hd{idx}-throttle', -+ 'driver': 'throttle', -+ 'throttle-group': 'group0', -+ 'file': { -+ 'driver': 'file', -+ 'node-name': f'hd{idx}-file', -+ 'filename': hd_path[idx], -+ }, -+ }, -+ } -+ for idx in (0, 2) -+ ] -+ -+ self.run_test_iothreads('iothread0', 'iothread0', None, -+ opts[0], opts[1]) -+ - if __name__ == '__main__': - iotests.activate_logging() - iotests.main(supported_fmts=["qcow2"], -diff --git a/tests/qemu-iotests/245.out b/tests/qemu-iotests/245.out -index 4eced19294..a4e04a3266 100644 ---- a/tests/qemu-iotests/245.out -+++ b/tests/qemu-iotests/245.out -@@ -17,8 +17,8 @@ read 1/1 bytes at offset 262152 - read 1/1 bytes at offset 262160 - 1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - --............... -+................ - ---------------------------------------------------------------------- --Ran 25 tests -+Ran 26 tests - - OK --- -2.27.0 - diff --git a/kvm-iotests-Test-qemu-img-convert-of-zeroed-data-cluster.patch b/kvm-iotests-Test-qemu-img-convert-of-zeroed-data-cluster.patch deleted file mode 100644 index 0ab3bcc..0000000 --- a/kvm-iotests-Test-qemu-img-convert-of-zeroed-data-cluster.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 51f691acd8042351d005873996d7bf4c7b045508 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Fri, 17 Dec 2021 17:46:53 +0100 -Subject: [PATCH 08/12] iotests: Test qemu-img convert of zeroed data cluster - -RH-Author: Kevin Wolf -RH-MergeRequest: 70: qemu-img convert: Fix sparseness of output image -RH-Commit: [1/2] 0770582c553ac6b0f18c035f9a0238599d4763cc (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1882917 -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Hanna Reitz - -This demonstrates what happens when the block status changes in -sub-min_sparse granularity, but all of the parts are zeroed out. The -alignment logic in is_allocated_sectors() prevents that the target image -remains fully sparse as expected, but turns it into a data cluster of -explicit zeros. - -Signed-off-by: Kevin Wolf -Signed-off-by: Vladimir Sementsov-Ogievskiy -Message-Id: <20211217164654.1184218-2-vsementsov@virtuozzo.com> -Tested-by: Peter Lieven -Signed-off-by: Kevin Wolf -(cherry picked from commit 51cd8bddd63540514d44808f7920811439baa253) -Signed-off-by: Kevin Wolf ---- - tests/qemu-iotests/122 | 1 + - tests/qemu-iotests/122.out | 10 ++++++++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/tests/qemu-iotests/122 b/tests/qemu-iotests/122 -index efb260d822..be0f6b79e5 100755 ---- a/tests/qemu-iotests/122 -+++ b/tests/qemu-iotests/122 -@@ -251,6 +251,7 @@ $QEMU_IO -c "write -P 0 0 64k" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_test - $QEMU_IO -c "write 0 1k" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir - $QEMU_IO -c "write 8k 1k" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir - $QEMU_IO -c "write 17k 1k" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir -+$QEMU_IO -c "write -P 0 65k 1k" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir - - for min_sparse in 4k 8k; do - echo -diff --git a/tests/qemu-iotests/122.out b/tests/qemu-iotests/122.out -index 8fbdac2b39..69b8e8b803 100644 ---- a/tests/qemu-iotests/122.out -+++ b/tests/qemu-iotests/122.out -@@ -192,6 +192,8 @@ wrote 1024/1024 bytes at offset 8192 - 1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - wrote 1024/1024 bytes at offset 17408 - 1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -+wrote 1024/1024 bytes at offset 66560 -+1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - - convert -S 4k - [{ "start": 0, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, -@@ -199,7 +201,9 @@ convert -S 4k - { "start": 8192, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, - { "start": 12288, "length": 4096, "depth": 0, "present": false, "zero": true, "data": false}, - { "start": 16384, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 20480, "length": 67088384, "depth": 0, "present": false, "zero": true, "data": false}] -+{ "start": 20480, "length": 46080, "depth": 0, "present": false, "zero": true, "data": false}, -+{ "start": 66560, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, -+{ "start": 67584, "length": 67041280, "depth": 0, "present": false, "zero": true, "data": false}] - - convert -c -S 4k - [{ "start": 0, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true}, -@@ -211,7 +215,9 @@ convert -c -S 4k - - convert -S 8k - [{ "start": 0, "length": 24576, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 24576, "length": 67084288, "depth": 0, "present": false, "zero": true, "data": false}] -+{ "start": 24576, "length": 41984, "depth": 0, "present": false, "zero": true, "data": false}, -+{ "start": 66560, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, -+{ "start": 67584, "length": 67041280, "depth": 0, "present": false, "zero": true, "data": false}] - - convert -c -S 8k - [{ "start": 0, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true}, --- -2.27.0 - diff --git a/kvm-iotests-block-status-cache-New-test.patch b/kvm-iotests-block-status-cache-New-test.patch deleted file mode 100644 index cd9a198..0000000 --- a/kvm-iotests-block-status-cache-New-test.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 89fe89491f89a7526ba864a9d94d3de930261d69 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Tue, 18 Jan 2022 18:00:00 +0100 -Subject: [PATCH 07/12] iotests/block-status-cache: New test - -RH-Author: Hanna Reitz -RH-MergeRequest: 69: block/io: Update BSC only if want_zero is true -RH-Commit: [2/2] 3c5a55aca1ac7a71c175a124d63bcf7a4430a022 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2041461 -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Kevin Wolf - -Add a new test to verify that want_zero=false block-status calls do not -pollute the block-status cache for want_zero=true calls. - -We check want_zero=true calls and their results using `qemu-img map` -(over NBD), and want_zero=false calls also using `qemu-img map` over -NBD, but using the qemu:allocation-depth context. - -(This test case cannot be integrated into nbd-qemu-allocation, because -that is a qcow2 test, and this is a raw test.) - -Signed-off-by: Hanna Reitz -Message-Id: <20220118170000.49423-3-hreitz@redhat.com> -Reviewed-by: Nir Soffer -Reviewed-by: Eric Blake -Tested-by: Eric Blake -Signed-off-by: Eric Blake -(cherry picked from commit 6384dd534d742123d26c008d9794b20bc41359d5) -Signed-off-by: Hanna Reitz ---- - tests/qemu-iotests/tests/block-status-cache | 139 ++++++++++++++++++ - .../qemu-iotests/tests/block-status-cache.out | 5 + - 2 files changed, 144 insertions(+) - create mode 100755 tests/qemu-iotests/tests/block-status-cache - create mode 100644 tests/qemu-iotests/tests/block-status-cache.out - -diff --git a/tests/qemu-iotests/tests/block-status-cache b/tests/qemu-iotests/tests/block-status-cache -new file mode 100755 -index 0000000000..6fa10bb8f8 ---- /dev/null -+++ b/tests/qemu-iotests/tests/block-status-cache -@@ -0,0 +1,139 @@ -+#!/usr/bin/env python3 -+# group: rw quick -+# -+# Test cases for the block-status cache. -+# -+# Copyright (C) 2022 Red Hat, Inc. -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+# -+ -+import os -+import signal -+import iotests -+from iotests import qemu_img_create, qemu_img_pipe, qemu_nbd -+ -+ -+image_size = 1 * 1024 * 1024 -+test_img = os.path.join(iotests.test_dir, 'test.img') -+ -+nbd_pidfile = os.path.join(iotests.test_dir, 'nbd.pid') -+nbd_sock = os.path.join(iotests.sock_dir, 'nbd.sock') -+ -+ -+class TestBscWithNbd(iotests.QMPTestCase): -+ def setUp(self) -> None: -+ """Just create an empty image with a read-only NBD server on it""" -+ assert qemu_img_create('-f', iotests.imgfmt, test_img, -+ str(image_size)) == 0 -+ -+ # Pass --allocation-depth to enable the qemu:allocation-depth context, -+ # which we are going to query to provoke a block-status inquiry with -+ # want_zero=false. -+ assert qemu_nbd(f'--socket={nbd_sock}', -+ f'--format={iotests.imgfmt}', -+ '--persistent', -+ '--allocation-depth', -+ '--read-only', -+ f'--pid-file={nbd_pidfile}', -+ test_img) \ -+ == 0 -+ -+ def tearDown(self) -> None: -+ with open(nbd_pidfile, encoding='utf-8') as f: -+ pid = int(f.read()) -+ os.kill(pid, signal.SIGTERM) -+ os.remove(nbd_pidfile) -+ os.remove(test_img) -+ -+ def test_with_zero_bug(self) -> None: -+ """ -+ Verify that the block-status cache is not corrupted by a -+ want_zero=false call. -+ We can provoke a want_zero=false call with `qemu-img map` over NBD with -+ x-dirty-bitmap=qemu:allocation-depth, so we first run a normal `map` -+ (which results in want_zero=true), then using said -+ qemu:allocation-depth context, and finally another normal `map` to -+ verify that the cache has not been corrupted. -+ """ -+ -+ nbd_img_opts = f'driver=nbd,server.type=unix,server.path={nbd_sock}' -+ nbd_img_opts_alloc_depth = nbd_img_opts + \ -+ ',x-dirty-bitmap=qemu:allocation-depth' -+ -+ # Normal map, results in want_zero=true. -+ # This will probably detect an allocated data sector first (qemu likes -+ # to allocate the first sector to facilitate alignment probing), and -+ # then the rest to be zero. The BSC will thus contain (if anything) -+ # one range covering the first sector. -+ map_pre = qemu_img_pipe('map', '--output=json', '--image-opts', -+ nbd_img_opts) -+ -+ # qemu:allocation-depth maps for want_zero=false. -+ # want_zero=false should (with the file driver, which the server is -+ # using) report everything as data. While this is sufficient for -+ # want_zero=false, this is nothing that should end up in the -+ # block-status cache. -+ # Due to a bug, this information did end up in the cache, though, and -+ # this would lead to wrong information being returned on subsequent -+ # want_zero=true calls. -+ # -+ # We need to run this map twice: On the first call, we probably still -+ # have the first sector in the cache, and so this will be served from -+ # the cache; and only the subsequent range will be queried from the -+ # block driver. This subsequent range will then be entered into the -+ # cache. -+ # If we did a want_zero=true call at this point, we would thus get -+ # correct information: The first sector is not covered by the cache, so -+ # we would get fresh block-status information from the driver, which -+ # would return a data range, and this would then go into the cache, -+ # evicting the wrong range from the want_zero=false call before. -+ # -+ # Therefore, we need a second want_zero=false map to reproduce: -+ # Since the first sector is not in the cache, the query for its status -+ # will go to the driver, which will return a result that reports the -+ # whole image to be a single data area. This result will then go into -+ # the cache, and so the cache will then report the whole image to -+ # contain data. -+ # -+ # Note that once the cache reports the whole image to contain data, any -+ # subsequent map operation will be served from the cache, and so we can -+ # never loop too many times here. -+ for _ in range(2): -+ # (Ignore the result, this is just to contaminate the cache) -+ qemu_img_pipe('map', '--output=json', '--image-opts', -+ nbd_img_opts_alloc_depth) -+ -+ # Now let's see whether the cache reports everything as data, or -+ # whether we get correct information (i.e. the same as we got on our -+ # first attempt). -+ map_post = qemu_img_pipe('map', '--output=json', '--image-opts', -+ nbd_img_opts) -+ -+ if map_pre != map_post: -+ print('ERROR: Map information differs before and after querying ' + -+ 'qemu:allocation-depth') -+ print('Before:') -+ print(map_pre) -+ print('After:') -+ print(map_post) -+ -+ self.fail("Map information differs") -+ -+ -+if __name__ == '__main__': -+ # The block-status cache only works on the protocol layer, so to test it, -+ # we can only use the raw format -+ iotests.main(supported_fmts=['raw'], -+ supported_protocols=['file']) -diff --git a/tests/qemu-iotests/tests/block-status-cache.out b/tests/qemu-iotests/tests/block-status-cache.out -new file mode 100644 -index 0000000000..ae1213e6f8 ---- /dev/null -+++ b/tests/qemu-iotests/tests/block-status-cache.out -@@ -0,0 +1,5 @@ -+. -+---------------------------------------------------------------------- -+Ran 1 tests -+ -+OK --- -2.27.0 - diff --git a/kvm-iotests-stream-error-on-reset-New-test.patch b/kvm-iotests-stream-error-on-reset-New-test.patch deleted file mode 100644 index cf69e38..0000000 --- a/kvm-iotests-stream-error-on-reset-New-test.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 300f912d4a5afe4ecca9c68a71429fbc9966ec34 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Tue, 11 Jan 2022 15:36:13 +0000 -Subject: [PATCH 11/12] iotests/stream-error-on-reset: New test - -RH-Author: Hanna Reitz -RH-MergeRequest: 71: block-backend: prevent dangling BDS pointers across aio_poll() -RH-Commit: [2/2] 3167f31b91eb433f338564201f4ef336e39f7f7d (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2040123 -RH-Acked-by: Kevin Wolf -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Emanuele Giuseppe Esposito - -Test the following scenario: -- Simple stream block in two-layer backing chain (base and top) -- The job is drained via blk_drain(), then an error occurs while the job - settles the ongoing request -- And so the job completes while in blk_drain() - -This was reported as a segfault, but is fixed by "block-backend: prevent -dangling BDS pointers across aio_poll()". - -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2036178 -Signed-off-by: Hanna Reitz -Signed-off-by: Stefan Hajnoczi -Message-Id: <20220111153613.25453-3-stefanha@redhat.com> -Signed-off-by: Kevin Wolf -(cherry picked from commit 2ca1d5d6b91f8a52a5c651f660b2f58c94bf97ba) -Signed-off-by: Hanna Reitz ---- - .../qemu-iotests/tests/stream-error-on-reset | 140 ++++++++++++++++++ - .../tests/stream-error-on-reset.out | 5 + - 2 files changed, 145 insertions(+) - create mode 100755 tests/qemu-iotests/tests/stream-error-on-reset - create mode 100644 tests/qemu-iotests/tests/stream-error-on-reset.out - -diff --git a/tests/qemu-iotests/tests/stream-error-on-reset b/tests/qemu-iotests/tests/stream-error-on-reset -new file mode 100755 -index 0000000000..7eaedb24d7 ---- /dev/null -+++ b/tests/qemu-iotests/tests/stream-error-on-reset -@@ -0,0 +1,140 @@ -+#!/usr/bin/env python3 -+# group: rw quick -+# -+# Test what happens when a stream job completes in a blk_drain(). -+# -+# Copyright (C) 2022 Red Hat, Inc. -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+# -+ -+import os -+import iotests -+from iotests import imgfmt, qemu_img_create, qemu_io_silent, QMPTestCase -+ -+ -+image_size = 1 * 1024 * 1024 -+data_size = 64 * 1024 -+base = os.path.join(iotests.test_dir, 'base.img') -+top = os.path.join(iotests.test_dir, 'top.img') -+ -+ -+# We want to test completing a stream job in a blk_drain(). -+# -+# The blk_drain() we are going to use is a virtio-scsi device resetting, -+# which we can trigger by resetting the system. -+# -+# In order to have the block job complete on drain, we (1) throttle its -+# base image so we can start the drain after it has begun, but before it -+# completes, and (2) make it encounter an I/O error on the ensuing write. -+# (If it completes regularly, the completion happens after the drain for -+# some reason.) -+ -+class TestStreamErrorOnReset(QMPTestCase): -+ def setUp(self) -> None: -+ """ -+ Create two images: -+ - base image {base} with {data_size} bytes allocated -+ - top image {top} without any data allocated -+ -+ And the following VM configuration: -+ - base image throttled to {data_size} -+ - top image with a blkdebug configuration so the first write access -+ to it will result in an error -+ - top image is attached to a virtio-scsi device -+ """ -+ assert qemu_img_create('-f', imgfmt, base, str(image_size)) == 0 -+ assert qemu_io_silent('-c', f'write 0 {data_size}', base) == 0 -+ assert qemu_img_create('-f', imgfmt, top, str(image_size)) == 0 -+ -+ self.vm = iotests.VM() -+ self.vm.add_args('-accel', 'tcg') # Make throttling work properly -+ self.vm.add_object(self.vm.qmp_to_opts({ -+ 'qom-type': 'throttle-group', -+ 'id': 'thrgr', -+ 'x-bps-total': str(data_size) -+ })) -+ self.vm.add_blockdev(self.vm.qmp_to_opts({ -+ 'driver': imgfmt, -+ 'node-name': 'base', -+ 'file': { -+ 'driver': 'throttle', -+ 'throttle-group': 'thrgr', -+ 'file': { -+ 'driver': 'file', -+ 'filename': base -+ } -+ } -+ })) -+ self.vm.add_blockdev(self.vm.qmp_to_opts({ -+ 'driver': imgfmt, -+ 'node-name': 'top', -+ 'file': { -+ 'driver': 'blkdebug', -+ 'node-name': 'top-blkdebug', -+ 'inject-error': [{ -+ 'event': 'pwritev', -+ 'immediately': 'true', -+ 'once': 'true' -+ }], -+ 'image': { -+ 'driver': 'file', -+ 'filename': top -+ } -+ }, -+ 'backing': 'base' -+ })) -+ self.vm.add_device(self.vm.qmp_to_opts({ -+ 'driver': 'virtio-scsi', -+ 'id': 'vscsi' -+ })) -+ self.vm.add_device(self.vm.qmp_to_opts({ -+ 'driver': 'scsi-hd', -+ 'bus': 'vscsi.0', -+ 'drive': 'top' -+ })) -+ self.vm.launch() -+ -+ def tearDown(self) -> None: -+ self.vm.shutdown() -+ os.remove(top) -+ os.remove(base) -+ -+ def test_stream_error_on_reset(self) -> None: -+ # Launch a stream job, which will take at least a second to -+ # complete, because the base image is throttled (so we can -+ # get in between it having started and it having completed) -+ res = self.vm.qmp('block-stream', job_id='stream', device='top') -+ self.assert_qmp(res, 'return', {}) -+ -+ while True: -+ ev = self.vm.event_wait('JOB_STATUS_CHANGE') -+ if ev['data']['status'] == 'running': -+ # Once the stream job is running, reset the system, which -+ # forces the virtio-scsi device to be reset, thus draining -+ # the stream job, and making it complete. Completing -+ # inside of that drain should not result in a segfault. -+ res = self.vm.qmp('system_reset') -+ self.assert_qmp(res, 'return', {}) -+ elif ev['data']['status'] == 'null': -+ # The test is done once the job is gone -+ break -+ -+ -+if __name__ == '__main__': -+ # Passes with any format with backing file support, but qed and -+ # qcow1 do not seem to exercise the used-to-be problematic code -+ # path, so there is no point in having them in this list -+ iotests.main(supported_fmts=['qcow2', 'vmdk'], -+ supported_protocols=['file']) -diff --git a/tests/qemu-iotests/tests/stream-error-on-reset.out b/tests/qemu-iotests/tests/stream-error-on-reset.out -new file mode 100644 -index 0000000000..ae1213e6f8 ---- /dev/null -+++ b/tests/qemu-iotests/tests/stream-error-on-reset.out -@@ -0,0 +1,5 @@ -+. -+---------------------------------------------------------------------- -+Ran 1 tests -+ -+OK --- -2.27.0 - diff --git a/kvm-iotests.py-Add-QemuStorageDaemon-class.patch b/kvm-iotests.py-Add-QemuStorageDaemon-class.patch deleted file mode 100644 index b215d23..0000000 --- a/kvm-iotests.py-Add-QemuStorageDaemon-class.patch +++ /dev/null @@ -1,92 +0,0 @@ -From c21502a220d107261c9a8627158f357489d86543 Mon Sep 17 00:00:00 2001 -From: Hanna Reitz -Date: Fri, 4 Feb 2022 12:10:09 +0100 -Subject: [PATCH 5/8] iotests.py: Add QemuStorageDaemon class - -RH-Author: Hanna Reitz -RH-MergeRequest: 74: block/nbd: Handle AioContext changes -RH-Commit: [3/6] 5da1cda4d025c1bd7029ed8071b4ccf25459a878 (hreitz/qemu-kvm-c-9-s) -RH-Bugzilla: 2033626 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi - -This is a rather simple class that allows creating a QSD instance -running in the background and stopping it when no longer needed. - -The __del__ handler is a safety net for when something goes so wrong in -a test that e.g. the tearDown() method is not called (e.g. setUp() -launches the QSD, but then launching a VM fails). We do not want the -QSD to continue running after the test has failed, so __del__() will -take care to kill it. - -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Hanna Reitz -Signed-off-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 091dc7b2b5553a529bff9a7bf9ad3bc85bc5bdcd) -Signed-off-by: Hanna Reitz ---- - tests/qemu-iotests/iotests.py | 40 +++++++++++++++++++++++++++++++++++ - 1 file changed, 40 insertions(+) - -diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py -index 83bfedb902..a51b5ce8cd 100644 ---- a/tests/qemu-iotests/iotests.py -+++ b/tests/qemu-iotests/iotests.py -@@ -72,6 +72,8 @@ - qemu_prog = os.environ.get('QEMU_PROG', 'qemu') - qemu_opts = os.environ.get('QEMU_OPTIONS', '').strip().split(' ') - -+qsd_prog = os.environ.get('QSD_PROG', 'qemu-storage-daemon') -+ - gdb_qemu_env = os.environ.get('GDB_OPTIONS') - qemu_gdb = [] - if gdb_qemu_env: -@@ -312,6 +314,44 @@ def cmd(self, cmd): - return self._read_output() - - -+class QemuStorageDaemon: -+ def __init__(self, *args: str, instance_id: str = 'a'): -+ assert '--pidfile' not in args -+ self.pidfile = os.path.join(test_dir, f'qsd-{instance_id}-pid') -+ all_args = [qsd_prog] + list(args) + ['--pidfile', self.pidfile] -+ -+ # Cannot use with here, we want the subprocess to stay around -+ # pylint: disable=consider-using-with -+ self._p = subprocess.Popen(all_args) -+ while not os.path.exists(self.pidfile): -+ if self._p.poll() is not None: -+ cmd = ' '.join(all_args) -+ raise RuntimeError( -+ 'qemu-storage-daemon terminated with exit code ' + -+ f'{self._p.returncode}: {cmd}') -+ -+ time.sleep(0.01) -+ -+ with open(self.pidfile, encoding='utf-8') as f: -+ self._pid = int(f.read().strip()) -+ -+ assert self._pid == self._p.pid -+ -+ def stop(self, kill_signal=15): -+ self._p.send_signal(kill_signal) -+ self._p.wait() -+ self._p = None -+ -+ try: -+ os.remove(self.pidfile) -+ except OSError: -+ pass -+ -+ def __del__(self): -+ if self._p is not None: -+ self.stop(kill_signal=9) -+ -+ - def qemu_nbd(*args): - '''Run qemu-nbd in daemon mode and return the parent's exit code''' - return subprocess.call(qemu_nbd_args + ['--fork'] + list(args)) --- -2.27.0 - diff --git a/kvm-memory-Fix-incorrect-calls-of-log_global_start-stop.patch b/kvm-memory-Fix-incorrect-calls-of-log_global_start-stop.patch deleted file mode 100644 index 5ff2734..0000000 --- a/kvm-memory-Fix-incorrect-calls-of-log_global_start-stop.patch +++ /dev/null @@ -1,97 +0,0 @@ -From b169059c8fbf15c3ffeec0f68b938cb9febd8db7 Mon Sep 17 00:00:00 2001 -From: Peter Xu -Date: Tue, 30 Nov 2021 16:00:28 +0800 -Subject: [PATCH 5/6] memory: Fix incorrect calls of log_global_start/stop -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Peter Xu -RH-MergeRequest: 77: memory: Fix qemu crash on continuous migrations of stopped VM -RH-Commit: [1/2] 6271ee689266b24d29d4c87f60e5b096ef5f5d63 (peterx/qemu-kvm) -RH-Bugzilla: 2044818 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: David Hildenbrand -RH-Acked-by: quintela1 - -We should only call the log_global_start/stop when the global dirty track -bitmask changes from zero<->non-zero. - -No real issue reported for this yet probably because no immediate user to -enable both dirty rate measurement and migration at the same time. However -it'll be good to be prepared for it. - -Fixes: 63b41db4bc ("memory: make global_dirty_tracking a bitmask") -Cc: qemu-stable@nongnu.org -Cc: Hyman Huang -Cc: Paolo Bonzini -Cc: Dr. David Alan Gilbert -Cc: Juan Quintela -Cc: David Hildenbrand -Signed-off-by: Peter Xu -Reviewed-by: David Hildenbrand -Message-Id: <20211130080028.6474-1-peterx@redhat.com> -Signed-off-by: Philippe Mathieu-Daudé -(cherry picked from commit 7b0538ed3a22ce30817f818449d10701fb0821f9) -Signed-off-by: Peter Xu ---- - softmmu/memory.c | 27 ++++++++++++++------------- - 1 file changed, 14 insertions(+), 13 deletions(-) - -diff --git a/softmmu/memory.c b/softmmu/memory.c -index 7340e19ff5..81d4bf1454 100644 ---- a/softmmu/memory.c -+++ b/softmmu/memory.c -@@ -2773,6 +2773,8 @@ static VMChangeStateEntry *vmstate_change; - - void memory_global_dirty_log_start(unsigned int flags) - { -+ unsigned int old_flags = global_dirty_tracking; -+ - if (vmstate_change) { - qemu_del_vm_change_state_handler(vmstate_change); - vmstate_change = NULL; -@@ -2781,15 +2783,14 @@ void memory_global_dirty_log_start(unsigned int flags) - assert(flags && !(flags & (~GLOBAL_DIRTY_MASK))); - assert(!(global_dirty_tracking & flags)); - global_dirty_tracking |= flags; -- - trace_global_dirty_changed(global_dirty_tracking); - -- MEMORY_LISTENER_CALL_GLOBAL(log_global_start, Forward); -- -- /* Refresh DIRTY_MEMORY_MIGRATION bit. */ -- memory_region_transaction_begin(); -- memory_region_update_pending = true; -- memory_region_transaction_commit(); -+ if (!old_flags) { -+ MEMORY_LISTENER_CALL_GLOBAL(log_global_start, Forward); -+ memory_region_transaction_begin(); -+ memory_region_update_pending = true; -+ memory_region_transaction_commit(); -+ } - } - - static void memory_global_dirty_log_do_stop(unsigned int flags) -@@ -2800,12 +2801,12 @@ static void memory_global_dirty_log_do_stop(unsigned int flags) - - trace_global_dirty_changed(global_dirty_tracking); - -- /* Refresh DIRTY_MEMORY_MIGRATION bit. */ -- memory_region_transaction_begin(); -- memory_region_update_pending = true; -- memory_region_transaction_commit(); -- -- MEMORY_LISTENER_CALL_GLOBAL(log_global_stop, Reverse); -+ if (!global_dirty_tracking) { -+ memory_region_transaction_begin(); -+ memory_region_update_pending = true; -+ memory_region_transaction_commit(); -+ MEMORY_LISTENER_CALL_GLOBAL(log_global_stop, Reverse); -+ } - } - - static void memory_vm_change_state_handler(void *opaque, bool running, --- -2.27.0 - diff --git a/kvm-memory-Fix-qemu-crash-on-starting-dirty-log-twice-wi.patch b/kvm-memory-Fix-qemu-crash-on-starting-dirty-log-twice-wi.patch deleted file mode 100644 index 5ea0007..0000000 --- a/kvm-memory-Fix-qemu-crash-on-starting-dirty-log-twice-wi.patch +++ /dev/null @@ -1,156 +0,0 @@ -From b3ed8e344c733bc8c2223c1b9e424a9fbcea56d4 Mon Sep 17 00:00:00 2001 -From: Peter Xu -Date: Mon, 7 Feb 2022 20:30:19 +0800 -Subject: [PATCH 6/6] memory: Fix qemu crash on starting dirty log twice with - stopped VM - -RH-Author: Peter Xu -RH-MergeRequest: 77: memory: Fix qemu crash on continuous migrations of stopped VM -RH-Commit: [2/2] 98ed2ef6226ec80a1896ebb554015aded0dc0c18 (peterx/qemu-kvm) -RH-Bugzilla: 2044818 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: David Hildenbrand -RH-Acked-by: quintela1 - -QEMU can now easily crash with two continuous migration carried out: - -(qemu) migrate -d exec:cat>out -(qemu) migrate_cancel -(qemu) migrate -d exec:cat>out -[crash] ../softmmu/memory.c:2782: memory_global_dirty_log_start: Assertion -`!(global_dirty_tracking & flags)' failed. - -It's because memory API provides a way to postpone dirty log stop if the VM is -stopped, and that'll be re-done until the next VM start. It was added in 2017 -with commit 1931076077 ("migration: optimize the downtime", 2017-08-01). - -However the recent work on allowing dirty tracking to be bitmask broke it, -which is commit 63b41db4bc ("memory: make global_dirty_tracking a bitmask", -2021-11-01). - -The fix proposed in this patch contains two things: - - (1) Instead of passing over the flags to postpone stop dirty track, we add a - global variable (along with current vmstate_change variable) to record - what flags to stop dirty tracking. - - (2) When start dirty tracking, instead if remove the vmstate hook directly, - we also execute the postponed stop process so that we make sure all the - starts and stops will be paired. - -This procedure is overlooked in the bitmask-ify work in 2021. - -Cc: Hyman Huang -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2044818 -Fixes: 63b41db4bc ("memory: make global_dirty_tracking a bitmask") -Signed-off-by: Peter Xu -Message-Id: <20220207123019.27223-1-peterx@redhat.com> -Signed-off-by: Paolo Bonzini -(cherry picked from commit a5c90c61a118027b86155cffdf4fe4e2e9de1020) -Signed-off-by: Peter Xu ---- - softmmu/memory.c | 61 +++++++++++++++++++++++++++++++++++------------- - 1 file changed, 45 insertions(+), 16 deletions(-) - -diff --git a/softmmu/memory.c b/softmmu/memory.c -index 81d4bf1454..0311e362ee 100644 ---- a/softmmu/memory.c -+++ b/softmmu/memory.c -@@ -2769,19 +2769,32 @@ void memory_global_after_dirty_log_sync(void) - MEMORY_LISTENER_CALL_GLOBAL(log_global_after_sync, Forward); - } - -+/* -+ * Dirty track stop flags that are postponed due to VM being stopped. Should -+ * only be used within vmstate_change hook. -+ */ -+static unsigned int postponed_stop_flags; - static VMChangeStateEntry *vmstate_change; -+static void memory_global_dirty_log_stop_postponed_run(void); - - void memory_global_dirty_log_start(unsigned int flags) - { -- unsigned int old_flags = global_dirty_tracking; -+ unsigned int old_flags; -+ -+ assert(flags && !(flags & (~GLOBAL_DIRTY_MASK))); - - if (vmstate_change) { -- qemu_del_vm_change_state_handler(vmstate_change); -- vmstate_change = NULL; -+ /* If there is postponed stop(), operate on it first */ -+ postponed_stop_flags &= ~flags; -+ memory_global_dirty_log_stop_postponed_run(); - } - -- assert(flags && !(flags & (~GLOBAL_DIRTY_MASK))); -- assert(!(global_dirty_tracking & flags)); -+ flags &= ~global_dirty_tracking; -+ if (!flags) { -+ return; -+ } -+ -+ old_flags = global_dirty_tracking; - global_dirty_tracking |= flags; - trace_global_dirty_changed(global_dirty_tracking); - -@@ -2809,29 +2822,45 @@ static void memory_global_dirty_log_do_stop(unsigned int flags) - } - } - -+/* -+ * Execute the postponed dirty log stop operations if there is, then reset -+ * everything (including the flags and the vmstate change hook). -+ */ -+static void memory_global_dirty_log_stop_postponed_run(void) -+{ -+ /* This must be called with the vmstate handler registered */ -+ assert(vmstate_change); -+ -+ /* Note: postponed_stop_flags can be cleared in log start routine */ -+ if (postponed_stop_flags) { -+ memory_global_dirty_log_do_stop(postponed_stop_flags); -+ postponed_stop_flags = 0; -+ } -+ -+ qemu_del_vm_change_state_handler(vmstate_change); -+ vmstate_change = NULL; -+} -+ - static void memory_vm_change_state_handler(void *opaque, bool running, - RunState state) - { -- unsigned int flags = (unsigned int)(uintptr_t)opaque; - if (running) { -- memory_global_dirty_log_do_stop(flags); -- -- if (vmstate_change) { -- qemu_del_vm_change_state_handler(vmstate_change); -- vmstate_change = NULL; -- } -+ memory_global_dirty_log_stop_postponed_run(); - } - } - - void memory_global_dirty_log_stop(unsigned int flags) - { - if (!runstate_is_running()) { -+ /* Postpone the dirty log stop, e.g., to when VM starts again */ - if (vmstate_change) { -- return; -+ /* Batch with previous postponed flags */ -+ postponed_stop_flags |= flags; -+ } else { -+ postponed_stop_flags = flags; -+ vmstate_change = qemu_add_vm_change_state_handler( -+ memory_vm_change_state_handler, NULL); - } -- vmstate_change = qemu_add_vm_change_state_handler( -- memory_vm_change_state_handler, -- (void *)(uintptr_t)flags); - return; - } - --- -2.27.0 - diff --git a/kvm-numa-Enable-numa-for-SGX-EPC-sections.patch b/kvm-numa-Enable-numa-for-SGX-EPC-sections.patch deleted file mode 100644 index e26bfcf..0000000 --- a/kvm-numa-Enable-numa-for-SGX-EPC-sections.patch +++ /dev/null @@ -1,287 +0,0 @@ -From 6274a2a09a8931188889467b104bf2e2fc39cb54 Mon Sep 17 00:00:00 2001 -From: Yang Zhong -Date: Mon, 1 Nov 2021 12:20:05 -0400 -Subject: [PATCH 01/12] numa: Enable numa for SGX EPC sections - -RH-Author: Paul Lai -RH-MergeRequest: 65: Enable SGX and add SGX Numa support -RH-Commit: [1/5] ff69d138c3f5903096388ec7ccf8dc5e6c6c6ffb -RH-Bugzilla: 2033708 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: Bandan Das -RH-Acked-by: Cornelia Huck - -The basic SGX did not enable numa for SGX EPC sections, which -result in all EPC sections located in numa node 0. This patch -enable SGX numa function in the guest and the EPC section can -work with RAM as one numa node. - -The Guest kernel related log: -[ 0.009981] ACPI: SRAT: Node 0 PXM 0 [mem 0x180000000-0x183ffffff] -[ 0.009982] ACPI: SRAT: Node 1 PXM 1 [mem 0x184000000-0x185bfffff] -The SRAT table can normally show SGX EPC sections menory info in different -numa nodes. - -The SGX EPC numa related command: - ...... - -m 4G,maxmem=20G \ - -smp sockets=2,cores=2 \ - -cpu host,+sgx-provisionkey \ - -object memory-backend-ram,size=2G,host-nodes=0,policy=bind,id=node0 \ - -object memory-backend-epc,id=mem0,size=64M,prealloc=on,host-nodes=0,policy=bind \ - -numa node,nodeid=0,cpus=0-1,memdev=node0 \ - -object memory-backend-ram,size=2G,host-nodes=1,policy=bind,id=node1 \ - -object memory-backend-epc,id=mem1,size=28M,prealloc=on,host-nodes=1,policy=bind \ - -numa node,nodeid=1,cpus=2-3,memdev=node1 \ - -M sgx-epc.0.memdev=mem0,sgx-epc.0.node=0,sgx-epc.1.memdev=mem1,sgx-epc.1.node=1 \ - ...... - -Signed-off-by: Yang Zhong -Message-Id: <20211101162009.62161-2-yang.zhong@intel.com> -Signed-off-by: Paolo Bonzini -(cherry picked from commit 1105812382e1126d86dddc16b3700f8c79dc93d1) -Signed-off-by: Paul Lai ---- - hw/core/numa.c | 5 ++--- - hw/i386/acpi-build.c | 2 ++ - hw/i386/sgx-epc.c | 3 +++ - hw/i386/sgx-stub.c | 4 ++++ - hw/i386/sgx.c | 44 +++++++++++++++++++++++++++++++++++++++ - include/hw/i386/sgx-epc.h | 3 +++ - monitor/hmp-cmds.c | 1 + - qapi/machine.json | 10 ++++++++- - qemu-options.hx | 4 ++-- - 9 files changed, 70 insertions(+), 6 deletions(-) - -diff --git a/hw/core/numa.c b/hw/core/numa.c -index e6050b2273..1aa05dcf42 100644 ---- a/hw/core/numa.c -+++ b/hw/core/numa.c -@@ -784,9 +784,8 @@ static void numa_stat_memory_devices(NumaNodeMem node_mem[]) - break; - case MEMORY_DEVICE_INFO_KIND_SGX_EPC: - se = value->u.sgx_epc.data; -- /* TODO: once we support numa, assign to right node */ -- node_mem[0].node_mem += se->size; -- node_mem[0].node_plugged_mem += se->size; -+ node_mem[se->node].node_mem += se->size; -+ node_mem[se->node].node_plugged_mem = 0; - break; - default: - g_assert_not_reached(); -diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c -index a99c6e4fe3..8383b83ee3 100644 ---- a/hw/i386/acpi-build.c -+++ b/hw/i386/acpi-build.c -@@ -2068,6 +2068,8 @@ build_srat(GArray *table_data, BIOSLinker *linker, MachineState *machine) - nvdimm_build_srat(table_data); - } - -+ sgx_epc_build_srat(table_data); -+ - /* - * TODO: this part is not in ACPI spec and current linux kernel boots fine - * without these entries. But I recall there were issues the last time I -diff --git a/hw/i386/sgx-epc.c b/hw/i386/sgx-epc.c -index e508827e78..96b2940d75 100644 ---- a/hw/i386/sgx-epc.c -+++ b/hw/i386/sgx-epc.c -@@ -21,6 +21,7 @@ - - static Property sgx_epc_properties[] = { - DEFINE_PROP_UINT64(SGX_EPC_ADDR_PROP, SGXEPCDevice, addr, 0), -+ DEFINE_PROP_UINT32(SGX_EPC_NUMA_NODE_PROP, SGXEPCDevice, node, 0), - DEFINE_PROP_LINK(SGX_EPC_MEMDEV_PROP, SGXEPCDevice, hostmem, - TYPE_MEMORY_BACKEND_EPC, HostMemoryBackendEpc *), - DEFINE_PROP_END_OF_LIST(), -@@ -139,6 +140,8 @@ static void sgx_epc_md_fill_device_info(const MemoryDeviceState *md, - se->memaddr = epc->addr; - se->size = object_property_get_uint(OBJECT(epc), SGX_EPC_SIZE_PROP, - NULL); -+ se->node = object_property_get_uint(OBJECT(epc), SGX_EPC_NUMA_NODE_PROP, -+ NULL); - se->memdev = object_get_canonical_path(OBJECT(epc->hostmem)); - - info->u.sgx_epc.data = se; -diff --git a/hw/i386/sgx-stub.c b/hw/i386/sgx-stub.c -index c9b379e665..26833eb233 100644 ---- a/hw/i386/sgx-stub.c -+++ b/hw/i386/sgx-stub.c -@@ -6,6 +6,10 @@ - #include "qapi/error.h" - #include "qapi/qapi-commands-misc-target.h" - -+void sgx_epc_build_srat(GArray *table_data) -+{ -+} -+ - SGXInfo *qmp_query_sgx(Error **errp) - { - error_setg(errp, "SGX support is not compiled in"); -diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c -index 8fef3dd8fa..d04299904a 100644 ---- a/hw/i386/sgx.c -+++ b/hw/i386/sgx.c -@@ -23,6 +23,7 @@ - #include "sysemu/hw_accel.h" - #include "sysemu/reset.h" - #include -+#include "hw/acpi/aml-build.h" - - #define SGX_MAX_EPC_SECTIONS 8 - #define SGX_CPUID_EPC_INVALID 0x0 -@@ -36,6 +37,46 @@ - - #define RETRY_NUM 2 - -+static int sgx_epc_device_list(Object *obj, void *opaque) -+{ -+ GSList **list = opaque; -+ -+ if (object_dynamic_cast(obj, TYPE_SGX_EPC)) { -+ *list = g_slist_append(*list, DEVICE(obj)); -+ } -+ -+ object_child_foreach(obj, sgx_epc_device_list, opaque); -+ return 0; -+} -+ -+static GSList *sgx_epc_get_device_list(void) -+{ -+ GSList *list = NULL; -+ -+ object_child_foreach(qdev_get_machine(), sgx_epc_device_list, &list); -+ return list; -+} -+ -+void sgx_epc_build_srat(GArray *table_data) -+{ -+ GSList *device_list = sgx_epc_get_device_list(); -+ -+ for (; device_list; device_list = device_list->next) { -+ DeviceState *dev = device_list->data; -+ Object *obj = OBJECT(dev); -+ uint64_t addr, size; -+ int node; -+ -+ node = object_property_get_uint(obj, SGX_EPC_NUMA_NODE_PROP, -+ &error_abort); -+ addr = object_property_get_uint(obj, SGX_EPC_ADDR_PROP, &error_abort); -+ size = object_property_get_uint(obj, SGX_EPC_SIZE_PROP, &error_abort); -+ -+ build_srat_memory(table_data, addr, size, node, MEM_AFFINITY_ENABLED); -+ } -+ g_slist_free(device_list); -+} -+ - static uint64_t sgx_calc_section_metric(uint64_t low, uint64_t high) - { - return (low & MAKE_64BIT_MASK(12, 20)) + -@@ -226,6 +267,9 @@ void pc_machine_init_sgx_epc(PCMachineState *pcms) - /* set the memdev link with memory backend */ - object_property_parse(obj, SGX_EPC_MEMDEV_PROP, list->value->memdev, - &error_fatal); -+ /* set the numa node property for sgx epc object */ -+ object_property_set_uint(obj, SGX_EPC_NUMA_NODE_PROP, list->value->node, -+ &error_fatal); - object_property_set_bool(obj, "realized", true, &error_fatal); - object_unref(obj); - } -diff --git a/include/hw/i386/sgx-epc.h b/include/hw/i386/sgx-epc.h -index a6a65be854..581fac389a 100644 ---- a/include/hw/i386/sgx-epc.h -+++ b/include/hw/i386/sgx-epc.h -@@ -25,6 +25,7 @@ - #define SGX_EPC_ADDR_PROP "addr" - #define SGX_EPC_SIZE_PROP "size" - #define SGX_EPC_MEMDEV_PROP "memdev" -+#define SGX_EPC_NUMA_NODE_PROP "node" - - /** - * SGXEPCDevice: -@@ -38,6 +39,7 @@ typedef struct SGXEPCDevice { - - /* public */ - uint64_t addr; -+ uint32_t node; - HostMemoryBackendEpc *hostmem; - } SGXEPCDevice; - -@@ -56,6 +58,7 @@ typedef struct SGXEPCState { - } SGXEPCState; - - bool sgx_epc_get_section(int section_nr, uint64_t *addr, uint64_t *size); -+void sgx_epc_build_srat(GArray *table_data); - - static inline uint64_t sgx_epc_above_4g_end(SGXEPCState *sgx_epc) - { -diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c -index 9c91bf93e9..2669156b28 100644 ---- a/monitor/hmp-cmds.c -+++ b/monitor/hmp-cmds.c -@@ -1810,6 +1810,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict) - se->id ? se->id : ""); - monitor_printf(mon, " memaddr: 0x%" PRIx64 "\n", se->memaddr); - monitor_printf(mon, " size: %" PRIu64 "\n", se->size); -+ monitor_printf(mon, " node: %" PRId64 "\n", se->node); - monitor_printf(mon, " memdev: %s\n", se->memdev); - break; - default: -diff --git a/qapi/machine.json b/qapi/machine.json -index 067e3f5378..16e771affc 100644 ---- a/qapi/machine.json -+++ b/qapi/machine.json -@@ -1207,12 +1207,15 @@ - # - # @memdev: memory backend linked with device - # -+# @node: the numa node -+# - # Since: 6.2 - ## - { 'struct': 'SgxEPCDeviceInfo', - 'data': { '*id': 'str', - 'memaddr': 'size', - 'size': 'size', -+ 'node': 'int', - 'memdev': 'str' - } - } -@@ -1285,10 +1288,15 @@ - # - # @memdev: memory backend linked with device - # -+# @node: the numa node -+# - # Since: 6.2 - ## - { 'struct': 'SgxEPC', -- 'data': { 'memdev': 'str' } } -+ 'data': { 'memdev': 'str', -+ 'node': 'int' -+ } -+} - - ## - # @SgxEPCProperties: -diff --git a/qemu-options.hx b/qemu-options.hx -index 94c4a8dbaf..4b7798088b 100644 ---- a/qemu-options.hx -+++ b/qemu-options.hx -@@ -127,11 +127,11 @@ SRST - ERST - - DEF("M", HAS_ARG, QEMU_OPTION_M, -- " sgx-epc.0.memdev=memid\n", -+ " sgx-epc.0.memdev=memid,sgx-epc.0.node=numaid\n", - QEMU_ARCH_ALL) - - SRST --``sgx-epc.0.memdev=@var{memid}`` -+``sgx-epc.0.memdev=@var{memid},sgx-epc.0.node=@var{numaid}`` - Define an SGX EPC section. - ERST - --- -2.27.0 - diff --git a/kvm-numa-Support-SGX-numa-in-the-monitor-and-Libvirt-int.patch b/kvm-numa-Support-SGX-numa-in-the-monitor-and-Libvirt-int.patch deleted file mode 100644 index de4c4b1..0000000 --- a/kvm-numa-Support-SGX-numa-in-the-monitor-and-Libvirt-int.patch +++ /dev/null @@ -1,210 +0,0 @@ -From 0f75501ba348dc9fb3ce0198ceafc8093149457d Mon Sep 17 00:00:00 2001 -From: Yang Zhong -Date: Mon, 1 Nov 2021 12:20:07 -0400 -Subject: [PATCH 02/12] numa: Support SGX numa in the monitor and Libvirt - interfaces - -RH-Author: Paul Lai -RH-MergeRequest: 65: Enable SGX and add SGX Numa support -RH-Commit: [2/5] 8c19cfb1a139fd4dbac771e695a133f16a68437f -RH-Bugzilla: 2033708 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: Bandan Das -RH-Acked-by: Cornelia Huck - -Add the SGXEPCSection list into SGXInfo to show the multiple -SGX EPC sections detailed info, not the total size like before. -This patch can enable numa support for 'info sgx' command and -QMP interfaces. The new interfaces show each EPC section info -in one numa node. Libvirt can use QMP interface to get the -detailed host SGX EPC capabilities to decide how to allocate -host EPC sections to guest. - -(qemu) info sgx - SGX support: enabled - SGX1 support: enabled - SGX2 support: enabled - FLC support: enabled - NUMA node #0: size=67108864 - NUMA node #1: size=29360128 - -The QMP interface show: -(QEMU) query-sgx -{"return": {"sgx": true, "sgx2": true, "sgx1": true, "sections": \ -[{"node": 0, "size": 67108864}, {"node": 1, "size": 29360128}], "flc": true}} - -(QEMU) query-sgx-capabilities -{"return": {"sgx": true, "sgx2": true, "sgx1": true, "sections": \ -[{"node": 0, "size": 17070817280}, {"node": 1, "size": 17079205888}], "flc": true}} - -Signed-off-by: Yang Zhong -Message-Id: <20211101162009.62161-4-yang.zhong@intel.com> -Signed-off-by: Paolo Bonzini -(cherry picked from commit 4755927ae12547c2e7cb22c5fa1b39038c6c11b1) -Signed-off-by: Paul Lai ---- - hw/i386/sgx.c | 51 +++++++++++++++++++++++++++++++++++-------- - qapi/misc-target.json | 19 ++++++++++++++-- - 2 files changed, 59 insertions(+), 11 deletions(-) - -diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c -index d04299904a..5de5dd0893 100644 ---- a/hw/i386/sgx.c -+++ b/hw/i386/sgx.c -@@ -83,11 +83,13 @@ static uint64_t sgx_calc_section_metric(uint64_t low, uint64_t high) - ((high & MAKE_64BIT_MASK(0, 20)) << 32); - } - --static uint64_t sgx_calc_host_epc_section_size(void) -+static SGXEPCSectionList *sgx_calc_host_epc_sections(void) - { -+ SGXEPCSectionList *head = NULL, **tail = &head; -+ SGXEPCSection *section; - uint32_t i, type; - uint32_t eax, ebx, ecx, edx; -- uint64_t size = 0; -+ uint32_t j = 0; - - for (i = 0; i < SGX_MAX_EPC_SECTIONS; i++) { - host_cpuid(0x12, i + 2, &eax, &ebx, &ecx, &edx); -@@ -101,10 +103,13 @@ static uint64_t sgx_calc_host_epc_section_size(void) - break; - } - -- size += sgx_calc_section_metric(ecx, edx); -+ section = g_new0(SGXEPCSection, 1); -+ section->node = j++; -+ section->size = sgx_calc_section_metric(ecx, edx); -+ QAPI_LIST_APPEND(tail, section); - } - -- return size; -+ return head; - } - - static void sgx_epc_reset(void *opaque) -@@ -168,13 +173,35 @@ SGXInfo *qmp_query_sgx_capabilities(Error **errp) - info->sgx1 = eax & (1U << 0) ? true : false; - info->sgx2 = eax & (1U << 1) ? true : false; - -- info->section_size = sgx_calc_host_epc_section_size(); -+ info->sections = sgx_calc_host_epc_sections(); - - close(fd); - - return info; - } - -+static SGXEPCSectionList *sgx_get_epc_sections_list(void) -+{ -+ GSList *device_list = sgx_epc_get_device_list(); -+ SGXEPCSectionList *head = NULL, **tail = &head; -+ SGXEPCSection *section; -+ -+ for (; device_list; device_list = device_list->next) { -+ DeviceState *dev = device_list->data; -+ Object *obj = OBJECT(dev); -+ -+ section = g_new0(SGXEPCSection, 1); -+ section->node = object_property_get_uint(obj, SGX_EPC_NUMA_NODE_PROP, -+ &error_abort); -+ section->size = object_property_get_uint(obj, SGX_EPC_SIZE_PROP, -+ &error_abort); -+ QAPI_LIST_APPEND(tail, section); -+ } -+ g_slist_free(device_list); -+ -+ return head; -+} -+ - SGXInfo *qmp_query_sgx(Error **errp) - { - SGXInfo *info = NULL; -@@ -193,14 +220,13 @@ SGXInfo *qmp_query_sgx(Error **errp) - return NULL; - } - -- SGXEPCState *sgx_epc = &pcms->sgx_epc; - info = g_new0(SGXInfo, 1); - - info->sgx = true; - info->sgx1 = true; - info->sgx2 = true; - info->flc = true; -- info->section_size = sgx_epc->size; -+ info->sections = sgx_get_epc_sections_list(); - - return info; - } -@@ -208,6 +234,7 @@ SGXInfo *qmp_query_sgx(Error **errp) - void hmp_info_sgx(Monitor *mon, const QDict *qdict) - { - Error *err = NULL; -+ SGXEPCSectionList *section_list, *section; - g_autoptr(SGXInfo) info = qmp_query_sgx(&err); - - if (err) { -@@ -222,8 +249,14 @@ void hmp_info_sgx(Monitor *mon, const QDict *qdict) - info->sgx2 ? "enabled" : "disabled"); - monitor_printf(mon, "FLC support: %s\n", - info->flc ? "enabled" : "disabled"); -- monitor_printf(mon, "size: %" PRIu64 "\n", -- info->section_size); -+ -+ section_list = info->sections; -+ for (section = section_list; section; section = section->next) { -+ monitor_printf(mon, "NUMA node #%" PRId64 ": ", -+ section->value->node); -+ monitor_printf(mon, "size=%" PRIu64 "\n", -+ section->value->size); -+ } - } - - bool sgx_epc_get_section(int section_nr, uint64_t *addr, uint64_t *size) -diff --git a/qapi/misc-target.json b/qapi/misc-target.json -index 5aa2b95b7d..1022aa0184 100644 ---- a/qapi/misc-target.json -+++ b/qapi/misc-target.json -@@ -337,6 +337,21 @@ - 'if': 'TARGET_ARM' } - - -+## -+# @SGXEPCSection: -+# -+# Information about intel SGX EPC section info -+# -+# @node: the numa node -+# -+# @size: the size of epc section -+# -+# Since: 6.2 -+## -+{ 'struct': 'SGXEPCSection', -+ 'data': { 'node': 'int', -+ 'size': 'uint64'}} -+ - ## - # @SGXInfo: - # -@@ -350,7 +365,7 @@ - # - # @flc: true if FLC is supported - # --# @section-size: The EPC section size for guest -+# @sections: The EPC sections info for guest - # - # Since: 6.2 - ## -@@ -359,7 +374,7 @@ - 'sgx1': 'bool', - 'sgx2': 'bool', - 'flc': 'bool', -- 'section-size': 'uint64'}, -+ 'sections': ['SGXEPCSection']}, - 'if': 'TARGET_I386' } - - ## --- -2.27.0 - diff --git a/kvm-qapi-Cleanup-SGX-related-comments-and-restore-sectio.patch b/kvm-qapi-Cleanup-SGX-related-comments-and-restore-sectio.patch deleted file mode 100644 index 9e58f6c..0000000 --- a/kvm-qapi-Cleanup-SGX-related-comments-and-restore-sectio.patch +++ /dev/null @@ -1,213 +0,0 @@ -From a6a327ae392c02b8e8c75b5d702d929ff8fe408d Mon Sep 17 00:00:00 2001 -From: Yang Zhong -Date: Thu, 20 Jan 2022 17:31:04 -0500 -Subject: [PATCH 05/12] qapi: Cleanup SGX related comments and restore - @section-size -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Paul Lai -RH-MergeRequest: 65: Enable SGX and add SGX Numa support -RH-Commit: [5/5] 0d3b9f37cd3cce202050ba3bd51eef4410ef3d38 -RH-Bugzilla: 2033708 -RH-Acked-by: Paolo Bonzini -RH-Acked-by: Bandan Das -RH-Acked-by: Cornelia Huck - -The SGX NUMA patches were merged into Qemu 7.0 release, we need -clarify detailed version history information and also change -some related comments, which make SGX related comments clearer. - -The QMP command schema promises backwards compatibility as standard. -We temporarily restore "@section-size", which can avoid incompatible -API breakage. The "@section-size" will be deprecated in 7.2 version. - -Suggested-by: Daniel P. Berrangé -Signed-off-by: Yang Zhong -Reviewed-by: Daniel P. Berrangé -Reviewed-by: Philippe Mathieu-Daudé -Message-Id: <20220120223104.437161-1-yang.zhong@intel.com> -Signed-off-by: Paolo Bonzini -Signed-off-by: Paul Lai ---- - docs/about/deprecated.rst | 13 +++++++++++++ - hw/i386/sgx.c | 11 +++++++++-- - qapi/machine.json | 4 ++-- - qapi/misc-target.json | 22 +++++++++++++++++----- - 4 files changed, 41 insertions(+), 9 deletions(-) - -diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst -index ff7488cb63..33925edf45 100644 ---- a/docs/about/deprecated.rst -+++ b/docs/about/deprecated.rst -@@ -270,6 +270,19 @@ accepted incorrect commands will return an error. Users should make sure that - all arguments passed to ``device_add`` are consistent with the documented - property types. - -+``query-sgx`` return value member ``section-size`` (since 7.0) -+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -+ -+Member ``section-size`` in return value elements with meta-type ``uint64`` is -+deprecated. Use ``sections`` instead. -+ -+ -+``query-sgx-capabilities`` return value member ``section-size`` (since 7.0) -+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -+ -+Member ``section-size`` in return value elements with meta-type ``uint64`` is -+deprecated. Use ``sections`` instead. -+ - System accelerators - ------------------- - -diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c -index 5de5dd0893..a2b318dd93 100644 ---- a/hw/i386/sgx.c -+++ b/hw/i386/sgx.c -@@ -83,7 +83,7 @@ static uint64_t sgx_calc_section_metric(uint64_t low, uint64_t high) - ((high & MAKE_64BIT_MASK(0, 20)) << 32); - } - --static SGXEPCSectionList *sgx_calc_host_epc_sections(void) -+static SGXEPCSectionList *sgx_calc_host_epc_sections(uint64_t *size) - { - SGXEPCSectionList *head = NULL, **tail = &head; - SGXEPCSection *section; -@@ -106,6 +106,7 @@ static SGXEPCSectionList *sgx_calc_host_epc_sections(void) - section = g_new0(SGXEPCSection, 1); - section->node = j++; - section->size = sgx_calc_section_metric(ecx, edx); -+ *size += section->size; - QAPI_LIST_APPEND(tail, section); - } - -@@ -156,6 +157,7 @@ SGXInfo *qmp_query_sgx_capabilities(Error **errp) - { - SGXInfo *info = NULL; - uint32_t eax, ebx, ecx, edx; -+ uint64_t size = 0; - - int fd = qemu_open_old("/dev/sgx_vepc", O_RDWR); - if (fd < 0) { -@@ -173,7 +175,8 @@ SGXInfo *qmp_query_sgx_capabilities(Error **errp) - info->sgx1 = eax & (1U << 0) ? true : false; - info->sgx2 = eax & (1U << 1) ? true : false; - -- info->sections = sgx_calc_host_epc_sections(); -+ info->sections = sgx_calc_host_epc_sections(&size); -+ info->section_size = size; - - close(fd); - -@@ -220,12 +223,14 @@ SGXInfo *qmp_query_sgx(Error **errp) - return NULL; - } - -+ SGXEPCState *sgx_epc = &pcms->sgx_epc; - info = g_new0(SGXInfo, 1); - - info->sgx = true; - info->sgx1 = true; - info->sgx2 = true; - info->flc = true; -+ info->section_size = sgx_epc->size; - info->sections = sgx_get_epc_sections_list(); - - return info; -@@ -249,6 +254,8 @@ void hmp_info_sgx(Monitor *mon, const QDict *qdict) - info->sgx2 ? "enabled" : "disabled"); - monitor_printf(mon, "FLC support: %s\n", - info->flc ? "enabled" : "disabled"); -+ monitor_printf(mon, "size: %" PRIu64 "\n", -+ info->section_size); - - section_list = info->sections; - for (section = section_list; section; section = section->next) { -diff --git a/qapi/machine.json b/qapi/machine.json -index 16e771affc..a9f33d0f27 100644 ---- a/qapi/machine.json -+++ b/qapi/machine.json -@@ -1207,7 +1207,7 @@ - # - # @memdev: memory backend linked with device - # --# @node: the numa node -+# @node: the numa node (Since: 7.0) - # - # Since: 6.2 - ## -@@ -1288,7 +1288,7 @@ - # - # @memdev: memory backend linked with device - # --# @node: the numa node -+# @node: the numa node (Since: 7.0) - # - # Since: 6.2 - ## -diff --git a/qapi/misc-target.json b/qapi/misc-target.json -index 1022aa0184..4bc45d2474 100644 ---- a/qapi/misc-target.json -+++ b/qapi/misc-target.json -@@ -344,9 +344,9 @@ - # - # @node: the numa node - # --# @size: the size of epc section -+# @size: the size of EPC section - # --# Since: 6.2 -+# Since: 7.0 - ## - { 'struct': 'SGXEPCSection', - 'data': { 'node': 'int', -@@ -365,7 +365,13 @@ - # - # @flc: true if FLC is supported - # --# @sections: The EPC sections info for guest -+# @section-size: The EPC section size for guest -+# Redundant with @sections. Just for backward compatibility. -+# -+# @sections: The EPC sections info for guest (Since: 7.0) -+# -+# Features: -+# @deprecated: Member @section-size is deprecated. Use @sections instead. - # - # Since: 6.2 - ## -@@ -374,6 +380,8 @@ - 'sgx1': 'bool', - 'sgx2': 'bool', - 'flc': 'bool', -+ 'section-size': { 'type': 'uint64', -+ 'features': [ 'deprecated' ] }, - 'sections': ['SGXEPCSection']}, - 'if': 'TARGET_I386' } - -@@ -390,7 +398,9 @@ - # - # -> { "execute": "query-sgx" } - # <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, --# "flc": true, "section-size" : 0 } } -+# "flc": true, "section-size" : 96468992, -+# "sections": [{"node": 0, "size": 67108864}, -+# {"node": 1, "size": 29360128}]} } - # - ## - { 'command': 'query-sgx', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } -@@ -408,7 +418,9 @@ - # - # -> { "execute": "query-sgx-capabilities" } - # <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, --# "flc": true, "section-size" : 0 } } -+# "flc": true, "section-size" : 96468992, -+# "section" : [{"node": 0, "size": 67108864}, -+# {"node": 1, "size": 29360128}]} } - # - ## - { 'command': 'query-sgx-capabilities', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } --- -2.27.0 - diff --git a/kvm-qemu-img-make-is_allocated_sectors-more-efficient.patch b/kvm-qemu-img-make-is_allocated_sectors-more-efficient.patch deleted file mode 100644 index 2d67070..0000000 --- a/kvm-qemu-img-make-is_allocated_sectors-more-efficient.patch +++ /dev/null @@ -1,108 +0,0 @@ -From a221f5a8ed02690687e6709c49ae0e1e01c5f466 Mon Sep 17 00:00:00 2001 -From: Vladimir Sementsov-Ogievskiy -Date: Fri, 17 Dec 2021 17:46:54 +0100 -Subject: [PATCH 09/12] qemu-img: make is_allocated_sectors() more efficient - -RH-Author: Kevin Wolf -RH-MergeRequest: 70: qemu-img convert: Fix sparseness of output image -RH-Commit: [2/2] cc05aa4ac506b57ff9b430c007618cdf1485a03f (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1882917 -RH-Acked-by: Eric Blake -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Hanna Reitz - -Consider the case when the whole buffer is zero and end is unaligned. - -If i <= tail, we return 1 and do one unaligned WRITE, RMW happens. - -If i > tail, we do on aligned WRITE_ZERO (or skip if target is zeroed) -and again one unaligned WRITE, RMW happens. - -Let's do better: don't fragment the whole-zero buffer and report it as -ZERO: in case of zeroed target we just do nothing and avoid RMW. If -target is not zeroes, one unaligned WRITE_ZERO should not be much worse -than one unaligned WRITE. - -Signed-off-by: Vladimir Sementsov-Ogievskiy -Message-Id: <20211217164654.1184218-3-vsementsov@virtuozzo.com> -Tested-by: Peter Lieven -Signed-off-by: Kevin Wolf -(cherry picked from commit 96054c76ff2db74165385a69f234c57a6bbc941e) -Signed-off-by: Kevin Wolf ---- - qemu-img.c | 23 +++++++++++++++++++---- - tests/qemu-iotests/122.out | 8 ++------ - 2 files changed, 21 insertions(+), 10 deletions(-) - -diff --git a/qemu-img.c b/qemu-img.c -index f036a1d428..d7ddfcc528 100644 ---- a/qemu-img.c -+++ b/qemu-img.c -@@ -1171,19 +1171,34 @@ static int is_allocated_sectors(const uint8_t *buf, int n, int *pnum, - } - } - -+ if (i == n) { -+ /* -+ * The whole buf is the same. -+ * No reason to split it into chunks, so return now. -+ */ -+ *pnum = i; -+ return !is_zero; -+ } -+ - tail = (sector_num + i) & (alignment - 1); - if (tail) { - if (is_zero && i <= tail) { -- /* treat unallocated areas which only consist -- * of a small tail as allocated. */ -+ /* -+ * For sure next sector after i is data, and it will rewrite this -+ * tail anyway due to RMW. So, let's just write data now. -+ */ - is_zero = false; - } - if (!is_zero) { -- /* align up end offset of allocated areas. */ -+ /* If possible, align up end offset of allocated areas. */ - i += alignment - tail; - i = MIN(i, n); - } else { -- /* align down end offset of zero areas. */ -+ /* -+ * For sure next sector after i is data, and it will rewrite this -+ * tail anyway due to RMW. Better is avoid RMW and write zeroes up -+ * to aligned bound. -+ */ - i -= tail; - } - } -diff --git a/tests/qemu-iotests/122.out b/tests/qemu-iotests/122.out -index 69b8e8b803..e18766e167 100644 ---- a/tests/qemu-iotests/122.out -+++ b/tests/qemu-iotests/122.out -@@ -201,9 +201,7 @@ convert -S 4k - { "start": 8192, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, - { "start": 12288, "length": 4096, "depth": 0, "present": false, "zero": true, "data": false}, - { "start": 16384, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 20480, "length": 46080, "depth": 0, "present": false, "zero": true, "data": false}, --{ "start": 66560, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 67584, "length": 67041280, "depth": 0, "present": false, "zero": true, "data": false}] -+{ "start": 20480, "length": 67088384, "depth": 0, "present": false, "zero": true, "data": false}] - - convert -c -S 4k - [{ "start": 0, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true}, -@@ -215,9 +213,7 @@ convert -c -S 4k - - convert -S 8k - [{ "start": 0, "length": 24576, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 24576, "length": 41984, "depth": 0, "present": false, "zero": true, "data": false}, --{ "start": 66560, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}, --{ "start": 67584, "length": 67041280, "depth": 0, "present": false, "zero": true, "data": false}] -+{ "start": 24576, "length": 67084288, "depth": 0, "present": false, "zero": true, "data": false}] - - convert -c -S 8k - [{ "start": 0, "length": 1024, "depth": 0, "present": true, "zero": false, "data": true}, --- -2.27.0 - diff --git a/kvm-qemu-storage-daemon-Add-vhost-user-blk-help.patch b/kvm-qemu-storage-daemon-Add-vhost-user-blk-help.patch deleted file mode 100644 index bc36f5c..0000000 --- a/kvm-qemu-storage-daemon-Add-vhost-user-blk-help.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 0f4592f79f8c24f84db18a8c39c6056b2a0be524 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= -Date: Fri, 7 Jan 2022 11:54:19 +0100 -Subject: [PATCH 1/5] qemu-storage-daemon: Add vhost-user-blk help -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Kevin Wolf -RH-MergeRequest: 63: qemu-storage-daemon: Add vhost-user-blk help -RH-Commit: [1/2] 6b08fec5d6ceea9f8f3810321099310069e08b53 (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1962088 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Hanna Reitz - -Add missing vhost-user-blk help: - - $ qemu-storage-daemon -h - ... - --export [type=]vhost-user-blk,id=,node-name=, - addr.type=unix,addr.path=[,writable=on|off] - [,logical-block-size=][,num-queues=] - export the specified block node as a - vhosts-user-blk device over UNIX domain socket - --export [type=]vhost-user-blk,id=,node-name=, - fd,addr.str=[,writable=on|off] - [,logical-block-size=][,num-queues=] - export the specified block node as a - vhosts-user-blk device over file descriptor - ... - -Fixes: 90fc91d50b7 ("convert vhost-user-blk server to block export API") -Reported-by: Qing Wang -Reviewed-by: Eric Blake -Signed-off-by: Philippe Mathieu-Daudé -Signed-off-by: Philippe Mathieu-Daudé -Message-Id: <20220107105420.395011-3-f4bug@amsat.org> -Signed-off-by: Kevin Wolf -(cherry picked from commit c8cbc9524269d9583749aaaea8aa244add7e1900) -Signed-off-by: Kevin Wolf ---- - storage-daemon/qemu-storage-daemon.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c -index 52cf17e8ac..9d76d1114d 100644 ---- a/storage-daemon/qemu-storage-daemon.c -+++ b/storage-daemon/qemu-storage-daemon.c -@@ -104,6 +104,19 @@ static void help(void) - " export the specified block node over FUSE\n" - "\n" - #endif /* CONFIG_FUSE */ -+#ifdef CONFIG_VHOST_USER_BLK_SERVER -+" --export [type=]vhost-user-blk,id=,node-name=,\n" -+" addr.type=unix,addr.path=[,writable=on|off]\n" -+" [,logical-block-size=][,num-queues=]\n" -+" export the specified block node as a\n" -+" vhost-user-blk device over UNIX domain socket\n" -+" --export [type=]vhost-user-blk,id=,node-name=,\n" -+" fd,addr.str=[,writable=on|off]\n" -+" [,logical-block-size=][,num-queues=]\n" -+" export the specified block node as a\n" -+" vhost-user-blk device over file descriptor\n" -+"\n" -+#endif /* CONFIG_VHOST_USER_BLK_SERVER */ - " --monitor [chardev=]name[,mode=control][,pretty[=on|off]]\n" - " configure a QMP monitor\n" - "\n" --- -2.27.0 - diff --git a/kvm-qemu-storage-daemon-Fix-typo-in-vhost-user-blk-help.patch b/kvm-qemu-storage-daemon-Fix-typo-in-vhost-user-blk-help.patch deleted file mode 100644 index 798a27e..0000000 --- a/kvm-qemu-storage-daemon-Fix-typo-in-vhost-user-blk-help.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 20edf203c8cb314e27409918399aa7cbdc6fdb02 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Tue, 25 Jan 2022 16:15:14 +0100 -Subject: [PATCH 2/5] qemu-storage-daemon: Fix typo in vhost-user-blk help - -RH-Author: Kevin Wolf -RH-MergeRequest: 63: qemu-storage-daemon: Add vhost-user-blk help -RH-Commit: [2/2] b7afb670c398799b6e49b926e296771453a55fba (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1962088 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Hanna Reitz - -The syntax of the fd passing case misses the "addr.type=" key. Add it. - -Signed-off-by: Kevin Wolf -Message-Id: <20220125151514.49035-1-kwolf@redhat.com> -Reviewed-by: Hanna Reitz -Signed-off-by: Kevin Wolf -(cherry picked from commit e66e665f15736f5ee1fbd8087926cb0f1e52f61a) -Signed-off-by: Kevin Wolf ---- - storage-daemon/qemu-storage-daemon.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c -index 9d76d1114d..ec9aa79b55 100644 ---- a/storage-daemon/qemu-storage-daemon.c -+++ b/storage-daemon/qemu-storage-daemon.c -@@ -111,7 +111,7 @@ static void help(void) - " export the specified block node as a\n" - " vhost-user-blk device over UNIX domain socket\n" - " --export [type=]vhost-user-blk,id=,node-name=,\n" --" fd,addr.str=[,writable=on|off]\n" -+" addr.type=fd,addr.str=[,writable=on|off]\n" - " [,logical-block-size=][,num-queues=]\n" - " export the specified block node as a\n" - " vhost-user-blk device over file descriptor\n" --- -2.27.0 - diff --git a/kvm-redhat-Add-rhel8.6.0-and-rhel9.0.0-machine-types-for.patch b/kvm-redhat-Add-rhel8.6.0-and-rhel9.0.0-machine-types-for.patch deleted file mode 100644 index 407aa1e..0000000 --- a/kvm-redhat-Add-rhel8.6.0-and-rhel9.0.0-machine-types-for.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 0e85c10b73c36f386723c842a797d5e2155e758f Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Fri, 10 Dec 2021 10:07:40 +0100 -Subject: [PATCH 1/2] redhat: Add rhel8.6.0 and rhel9.0.0 machine types for - s390x -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Thomas Huth -RH-MergeRequest: 55: redhat: Add rhel8.6.0 and rhel9.0.0 machine types for s390x -RH-Commit: [1/1] ad8fd5c825ae52a8fbb3a28f700a514509c59978 (thuth/qemu-kvm-cs9) -RH-Bugzilla: 2008060 -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Laurent Vivier -RH-Acked-by: David Hildenbrand -RH-Acked-by: Cornelia Huck - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2008060 - -The new machine types have better default values for the upcoming -"generation 16" mainframe. - -Signed-off-by: Thomas Huth ---- - hw/s390x/s390-virtio-ccw.c | 26 +++++++++++++++++++++++++- - 1 file changed, 25 insertions(+), 1 deletion(-) - -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index c654045964..9da6e9b1d4 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1103,10 +1103,33 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) - DEFINE_CCW_MACHINE(2_4, "2.4", false); - #endif - -+static void ccw_machine_rhel900_instance_options(MachineState *machine) -+{ -+} -+ -+static void ccw_machine_rhel900_class_options(MachineClass *mc) -+{ -+} -+DEFINE_CCW_MACHINE(rhel900, "rhel9.0.0", true); -+ -+static void ccw_machine_rhel860_instance_options(MachineState *machine) -+{ -+ /* Note: The -rhel8.6.0 and -rhel9.0.0 machines are technically identical */ -+ ccw_machine_rhel900_instance_options(machine); -+} -+ -+static void ccw_machine_rhel860_class_options(MachineClass *mc) -+{ -+ ccw_machine_rhel900_class_options(mc); -+} -+DEFINE_CCW_MACHINE(rhel860, "rhel8.6.0", false); -+ - static void ccw_machine_rhel850_instance_options(MachineState *machine) - { - static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V6_0 }; - -+ ccw_machine_rhel860_instance_options(machine); -+ - s390_set_qemu_cpu_model(0x2964, 13, 2, qemu_cpu_feat); - - s390_cpudef_featoff_greater(16, 1, S390_FEAT_NNPA); -@@ -1118,10 +1141,11 @@ static void ccw_machine_rhel850_instance_options(MachineState *machine) - - static void ccw_machine_rhel850_class_options(MachineClass *mc) - { -+ ccw_machine_rhel860_class_options(mc); - compat_props_add(mc->compat_props, hw_compat_rhel_8_5, hw_compat_rhel_8_5_len); - mc->smp_props.prefer_sockets = true; - } --DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); -+DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", false); - - static void ccw_machine_rhel840_instance_options(MachineState *machine) - { --- -2.27.0 - diff --git a/kvm-redhat-Enable-virtio-mem-as-tech-preview-on-x86-64.patch b/kvm-redhat-Enable-virtio-mem-as-tech-preview-on-x86-64.patch deleted file mode 100644 index d3b2ba0..0000000 --- a/kvm-redhat-Enable-virtio-mem-as-tech-preview-on-x86-64.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 24b44713de4b2a47c42dfeea813c8911694367a0 Mon Sep 17 00:00:00 2001 -From: David Hildenbrand -Date: Fri, 17 Dec 2021 10:00:53 +0100 -Subject: [PATCH 2/2] redhat: Enable virtio-mem as tech-preview on x86-64 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: David Hildenbrand -RH-MergeRequest: 56: redhat: Enable virtio-mem as tech-preview on x86-64 -RH-Commit: [1/1] 255749cd877b91ce1978b67a088f7c0e181fd85e -RH-Bugzilla: 2014484 -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Thomas Huth -RH-Acked-by: Gavin Shan - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2014484 -Upstream-status: RHEL-only - -Everything necesssary for tech-preview of virtio-mem in RHEL9 is -included in QEMU v6.2. Let's enable it via the config option -CONFIG_VIRTIO_MEM on x86-64. - -Signed-off-by: David Hildenbrand ---- - configs/devices/x86_64-softmmu/x86_64-rh-devices.mak | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -index 1f7a9ab024..dc03fbb671 100644 ---- a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -+++ b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak -@@ -88,6 +88,7 @@ CONFIG_VGA_CIRRUS=y - CONFIG_VGA_PCI=y - CONFIG_VHOST_USER=y - CONFIG_VHOST_USER_BLK=y -+CONFIG_VIRTIO_MEM=y - CONFIG_VIRTIO_PCI=y - CONFIG_VIRTIO_VGA=y - CONFIG_VMMOUSE=y --- -2.27.0 - diff --git a/kvm-rhel-machine-types-x86-set-prefer_sockets.patch b/kvm-rhel-machine-types-x86-set-prefer_sockets.patch deleted file mode 100644 index 83c912d..0000000 --- a/kvm-rhel-machine-types-x86-set-prefer_sockets.patch +++ /dev/null @@ -1,52 +0,0 @@ -From ecadfaec992fda7f485522c9ee6e7c9b05614a22 Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Tue, 7 Dec 2021 18:39:47 +0000 -Subject: [PATCH 2/2] rhel machine types/x86: set prefer_sockets - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 59: rhel machine types/x86: set prefer_sockets -RH-Commit: [1/1] 9bcd9e2c95154e39ef30a8a342ad6c713fa4f1fb (dagrh/c-9-s-qemu-kvm) -RH-Bugzilla: 2028623 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: quintela1 -RH-Acked-by: Cornelia Huck - -When I fixed up the machine types for 8.5 I missed the - prefer_sockets = true - -add them in; it looks like Power, ARM already have them, and I see them -in thuth's s390 patch. - -Signed-off-by: Dr. David Alan Gilbert ---- - hw/i386/pc_piix.c | 1 + - hw/i386/pc_q35.c | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 183b5d5464..fccb7f5fc9 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -973,6 +973,7 @@ static void pc_machine_rhel7_options(MachineClass *m) - compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); - m->alias = "pc"; - m->is_default = 1; -+ m->smp_props.prefer_sockets = true; - } - - static void pc_init_rhel760(MachineState *machine) -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 0e7e885e78..3b748ddd7b 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -662,6 +662,7 @@ static void pc_q35_machine_rhel850_options(MachineClass *m) - hw_compat_rhel_8_5_len); - compat_props_add(m->compat_props, pc_rhel_8_5_compat, - pc_rhel_8_5_compat_len); -+ m->smp_props.prefer_sockets = true; - } - - DEFINE_PC_MACHINE(q35_rhel850, "pc-q35-rhel8.5.0", pc_q35_init_rhel850, --- -2.27.0 - diff --git a/kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch b/kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch deleted file mode 100644 index 4ddfbe9..0000000 --- a/kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 005339f7deaee639c38d30e5bf2235c292ce3937 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= -Date: Wed, 5 Jan 2022 12:38:47 +0000 -Subject: [PATCH 3/3] softmmu: fix device deletion events with -device JSON - syntax -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Kevin Wolf -RH-MergeRequest: 62: Fix hot unplug of devices created with -device JSON syntax -RH-Commit: [1/1] 980e505ba215b5f9324c107481c5bb257ae03f42 (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 2036669 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Laurent Vivier -RH-Acked-by: Jano Tomko - -The -device JSON syntax impl leaks a reference on the created -DeviceState instance. As a result when you hot-unplug the -device, the device_finalize method won't be called and thus -it will fail to emit the required DEVICE_DELETED event. - -A 'json-cli' feature was previously added against the -'device_add' QMP command QAPI schema to indicated to mgmt -apps that -device supported JSON syntax. Given the hotplug -bug that feature flag is not usable for its purpose, so -we add a new 'json-cli-hotplug' feature to indicate the --device supports JSON without breaking hotplug. - -Fixes: 5dacda5167560b3af8eadbce5814f60ba44b467e -Resolves: https://gitlab.com/qemu-project/qemu/-/issues/802 -Signed-off-by: Daniel P. Berrangé -Message-Id: <20220105123847.4047954-2-berrange@redhat.com> -Reviewed-by: Laurent Vivier -Tested-by: Ján Tomko -Reviewed-by: Thomas Huth -Signed-off-by: Kevin Wolf -(cherry picked from commit 64b4529a432507ee84a924be69a03432639e87ba) -Signed-off-by: Kevin Wolf ---- - qapi/qdev.json | 5 ++++- - softmmu/vl.c | 4 +++- - tests/qtest/device-plug-test.c | 19 +++++++++++++++++++ - 3 files changed, 26 insertions(+), 2 deletions(-) - -diff --git a/qapi/qdev.json b/qapi/qdev.json -index 69656b14df..26cd10106b 100644 ---- a/qapi/qdev.json -+++ b/qapi/qdev.json -@@ -44,6 +44,9 @@ - # @json-cli: If present, the "-device" command line option supports JSON - # syntax with a structure identical to the arguments of this - # command. -+# @json-cli-hotplug: If present, the "-device" command line option supports JSON -+# syntax without the reference counting leak that broke -+# hot-unplug - # - # Notes: - # -@@ -74,7 +77,7 @@ - { 'command': 'device_add', - 'data': {'driver': 'str', '*bus': 'str', '*id': 'str'}, - 'gen': false, # so we can get the additional arguments -- 'features': ['json-cli'] } -+ 'features': ['json-cli', 'json-cli-hotplug'] } - - ## - # @device_del: -diff --git a/softmmu/vl.c b/softmmu/vl.c -index d46b8fb4ab..b3829e2edd 100644 ---- a/softmmu/vl.c -+++ b/softmmu/vl.c -@@ -2690,6 +2690,7 @@ static void qemu_create_cli_devices(void) - qemu_opts_foreach(qemu_find_opts("device"), - device_init_func, NULL, &error_fatal); - QTAILQ_FOREACH(opt, &device_opts, next) { -+ DeviceState *dev; - loc_push_restore(&opt->loc); - /* - * TODO Eventually we should call qmp_device_add() here to make sure it -@@ -2698,7 +2699,8 @@ static void qemu_create_cli_devices(void) - * from the start, so call qdev_device_add_from_qdict() directly for - * now. - */ -- qdev_device_add_from_qdict(opt->opts, true, &error_fatal); -+ dev = qdev_device_add_from_qdict(opt->opts, true, &error_fatal); -+ object_unref(OBJECT(dev)); - loc_pop(&opt->loc); - } - rom_reset_order_override(); -diff --git a/tests/qtest/device-plug-test.c b/tests/qtest/device-plug-test.c -index 559d47727a..ad79bd4c14 100644 ---- a/tests/qtest/device-plug-test.c -+++ b/tests/qtest/device-plug-test.c -@@ -77,6 +77,23 @@ static void test_pci_unplug_request(void) - qtest_quit(qtest); - } - -+static void test_pci_unplug_json_request(void) -+{ -+ QTestState *qtest = qtest_initf( -+ "-device '{\"driver\": \"virtio-mouse-pci\", \"id\": \"dev0\"}'"); -+ -+ /* -+ * Request device removal. As the guest is not running, the request won't -+ * be processed. However during system reset, the removal will be -+ * handled, removing the device. -+ */ -+ device_del(qtest, "dev0"); -+ system_reset(qtest); -+ wait_device_deleted_event(qtest, "dev0"); -+ -+ qtest_quit(qtest); -+} -+ - static void test_ccw_unplug(void) - { - QTestState *qtest = qtest_initf("-device virtio-balloon-ccw,id=dev0"); -@@ -145,6 +162,8 @@ int main(int argc, char **argv) - */ - qtest_add_func("/device-plug/pci-unplug-request", - test_pci_unplug_request); -+ qtest_add_func("/device-plug/pci-unplug-json-request", -+ test_pci_unplug_json_request); - - if (!strcmp(arch, "s390x")) { - qtest_add_func("/device-plug/ccw-unplug", --- -2.27.0 - diff --git a/kvm-ui-avoid-compiler-warnings-from-unused-clipboard-inf.patch b/kvm-ui-avoid-compiler-warnings-from-unused-clipboard-inf.patch deleted file mode 100644 index 6b7173e..0000000 --- a/kvm-ui-avoid-compiler-warnings-from-unused-clipboard-inf.patch +++ /dev/null @@ -1,63 +0,0 @@ -From c5ff43026547ea20fbb496c5b6734b7e64362151 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Mon, 14 Feb 2022 12:37:49 +0100 -Subject: [PATCH 2/6] ui: avoid compiler warnings from unused clipboard info - variable -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 75: fix vnc cut+paste crash -RH-Commit: [2/4] 6a7982a0bab86bf843fd65842e730a61b2fa2cb0 (kraxel/centos-qemu-kvm) -RH-Bugzilla: 2042820 -RH-Acked-by: Marc-André Lureau -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Miroslav Rezanina - -With latest clang 13.0.0 we get - -../ui/clipboard.c:47:34: error: variable 'old' set but not used [-Werror,-Wunused-but-set-variable] - g_autoptr(QemuClipboardInfo) old = NULL; - ^ - -The compiler can't tell that we only declared this variable in -order to get the side effect of free'ing it when out of scope. - -This pattern is a little dubious for a use of g_autoptr, so -rewrite the code to avoid it. - -Reviewed-by: Richard Henderson -Reviewed-by: Philippe Mathieu-Daudé -Tested-by: Philippe Mathieu-Daudé -Signed-off-by: Daniel P. Berrangé -[AJB: fix merge conflict] -Signed-off-by: Alex Bennée -Message-Id: <20211215141949.3512719-2-berrange@redhat.com> -Message-Id: <20220105135009.1584676-2-alex.bennee@linaro.org> -(cherry picked from commit 70a54b01693eda3c61814b05d699aba41015ac48) ---- - ui/clipboard.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/ui/clipboard.c b/ui/clipboard.c -index d7b008d62a..7672058e84 100644 ---- a/ui/clipboard.c -+++ b/ui/clipboard.c -@@ -44,12 +44,11 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer, - - void qemu_clipboard_update(QemuClipboardInfo *info) - { -- g_autoptr(QemuClipboardInfo) old = NULL; - assert(info->selection < QEMU_CLIPBOARD_SELECTION__COUNT); - - notifier_list_notify(&clipboard_notifiers, info); - -- old = cbinfo[info->selection]; -+ qemu_clipboard_info_unref(cbinfo[info->selection]); - cbinfo[info->selection] = qemu_clipboard_info_ref(info); - } - --- -2.27.0 - diff --git a/kvm-ui-clipboard-fix-use-after-free-regression.patch b/kvm-ui-clipboard-fix-use-after-free-regression.patch deleted file mode 100644 index e14cb23..0000000 --- a/kvm-ui-clipboard-fix-use-after-free-regression.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 965275cd87f8008f129509c6d6fd0096e8ac2d96 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= -Date: Mon, 14 Feb 2022 15:59:17 +0400 -Subject: [PATCH 3/6] ui/clipboard: fix use-after-free regression -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 75: fix vnc cut+paste crash -RH-Commit: [3/4] d8f68e0eb60d9aaa9a703d969f215816bf35f6f0 (kraxel/centos-qemu-kvm) -RH-Bugzilla: 2042820 -RH-Acked-by: Marc-André Lureau -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Miroslav Rezanina - -The same info may be used to update the clipboard, and may be freed -before being ref'ed again. - -Fixes: 70a54b01693ed ("ui: avoid compiler warnings from unused clipboard info variable") - -Signed-off-by: Marc-André Lureau -Reviewed-by: Daniel P. Berrangé -Message-Id: <20220214115917.1679568-1-marcandre.lureau@redhat.com> -Signed-off-by: Gerd Hoffmann ---- - ui/clipboard.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/ui/clipboard.c b/ui/clipboard.c -index 7672058e84..d7dae13760 100644 ---- a/ui/clipboard.c -+++ b/ui/clipboard.c -@@ -48,8 +48,10 @@ void qemu_clipboard_update(QemuClipboardInfo *info) - - notifier_list_notify(&clipboard_notifiers, info); - -- qemu_clipboard_info_unref(cbinfo[info->selection]); -- cbinfo[info->selection] = qemu_clipboard_info_ref(info); -+ if (cbinfo[info->selection] != info) { -+ qemu_clipboard_info_unref(cbinfo[info->selection]); -+ cbinfo[info->selection] = qemu_clipboard_info_ref(info); -+ } - } - - QemuClipboardInfo *qemu_clipboard_info(QemuClipboardSelection selection) --- -2.27.0 - diff --git a/kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch b/kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch deleted file mode 100644 index 6d3802c..0000000 --- a/kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 14582cfec72e52894f16ed5c3fb14adb2d6d8e25 Mon Sep 17 00:00:00 2001 -From: Rao Lei -Date: Wed, 5 Jan 2022 10:08:08 +0800 -Subject: [PATCH 4/6] ui/vnc.c: Fixed a deadlock bug. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 75: fix vnc cut+paste crash -RH-Commit: [4/4] 5321e447de974d91e9a6c0cf01f4352166ffb7ce (kraxel/centos-qemu-kvm) -RH-Bugzilla: 2042820 -RH-Acked-by: Marc-André Lureau -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Miroslav Rezanina - -The GDB statck is as follows: -(gdb) bt -0 __lll_lock_wait (futex=futex@entry=0x56211df20360, private=0) at lowlevellock.c:52 -1 0x00007f263caf20a3 in __GI___pthread_mutex_lock (mutex=0x56211df20360) at ../nptl/pthread_mutex_lock.c:80 -2 0x000056211a757364 in qemu_mutex_lock_impl (mutex=0x56211df20360, file=0x56211a804857 "../ui/vnc-jobs.h", line=60) - at ../util/qemu-thread-posix.c:80 -3 0x000056211a0ef8c7 in vnc_lock_output (vs=0x56211df14200) at ../ui/vnc-jobs.h:60 -4 0x000056211a0efcb7 in vnc_clipboard_send (vs=0x56211df14200, count=1, dwords=0x7ffdf1701338) at ../ui/vnc-clipboard.c:138 -5 0x000056211a0f0129 in vnc_clipboard_notify (notifier=0x56211df244c8, data=0x56211dd1bbf0) at ../ui/vnc-clipboard.c:209 -6 0x000056211a75dde8 in notifier_list_notify (list=0x56211afa17d0 , data=0x56211dd1bbf0) at ../util/notify.c:39 -7 0x000056211a0bf0e6 in qemu_clipboard_update (info=0x56211dd1bbf0) at ../ui/clipboard.c:50 -8 0x000056211a0bf05d in qemu_clipboard_peer_release (peer=0x56211df244c0, selection=QEMU_CLIPBOARD_SELECTION_CLIPBOARD) - at ../ui/clipboard.c:41 -9 0x000056211a0bef9b in qemu_clipboard_peer_unregister (peer=0x56211df244c0) at ../ui/clipboard.c:19 -10 0x000056211a0d45f3 in vnc_disconnect_finish (vs=0x56211df14200) at ../ui/vnc.c:1358 -11 0x000056211a0d4c9d in vnc_client_read (vs=0x56211df14200) at ../ui/vnc.c:1611 -12 0x000056211a0d4df8 in vnc_client_io (ioc=0x56211ce70690, condition=G_IO_IN, opaque=0x56211df14200) at ../ui/vnc.c:1649 -13 0x000056211a5b976c in qio_channel_fd_source_dispatch - (source=0x56211ce50a00, callback=0x56211a0d4d71 , user_data=0x56211df14200) at ../io/channel-watch.c:84 -14 0x00007f263ccede8e in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 -15 0x000056211a77d4a1 in glib_pollfds_poll () at ../util/main-loop.c:232 -16 0x000056211a77d51f in os_host_main_loop_wait (timeout=958545) at ../util/main-loop.c:255 -17 0x000056211a77d630 in main_loop_wait (nonblocking=0) at ../util/main-loop.c:531 -18 0x000056211a45bc8e in qemu_main_loop () at ../softmmu/runstate.c:726 -19 0x000056211a0b45fa in main (argc=69, argv=0x7ffdf1701778, envp=0x7ffdf17019a8) at ../softmmu/main.c:50 - -From the call trace, we can see it is a deadlock bug. -vnc_disconnect_finish will acquire the output_mutex. -But, the output_mutex will be acquired again in vnc_clipboard_send. -Repeated locking will cause deadlock. So, I move -qemu_clipboard_peer_unregister() behind vnc_unlock_output(); - -Fixes: 0bf41cab93e ("ui/vnc: clipboard support") -Signed-off-by: Lei Rao -Reviewed-by: Marc-André Lureau -Message-Id: <20220105020808.597325-1-lei.rao@intel.com> -Signed-off-by: Gerd Hoffmann -(cherry picked from commit 1dbbe6f172810026c51dc84ed927a3cc23017949) ---- - ui/vnc.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ui/vnc.c b/ui/vnc.c -index af02522e84..b253e85c65 100644 ---- a/ui/vnc.c -+++ b/ui/vnc.c -@@ -1354,12 +1354,12 @@ void vnc_disconnect_finish(VncState *vs) - /* last client gone */ - vnc_update_server_surface(vs->vd); - } -+ vnc_unlock_output(vs); -+ - if (vs->cbpeer.update.notify) { - qemu_clipboard_peer_unregister(&vs->cbpeer); - } - -- vnc_unlock_output(vs); -- - qemu_mutex_destroy(&vs->output_mutex); - if (vs->bh != NULL) { - qemu_bh_delete(vs->bh); --- -2.27.0 - diff --git a/kvm-virtiofsd-Drop-membership-of-all-supplementary-group.patch b/kvm-virtiofsd-Drop-membership-of-all-supplementary-group.patch deleted file mode 100644 index 539b8fe..0000000 --- a/kvm-virtiofsd-Drop-membership-of-all-supplementary-group.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 846192d22a1ddfa87682bb0b67febef5c30c9743 Mon Sep 17 00:00:00 2001 -From: Vivek Goyal -Date: Tue, 25 Jan 2022 13:51:14 -0500 -Subject: [PATCH 3/5] virtiofsd: Drop membership of all supplementary groups - (CVE-2022-0358) - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 66: c9s: virtiofsd security fix - drop secondary groups -RH-Commit: [1/1] cdf3b0405ea3369933e76761890f16b040641036 (redhat/centos-stream/src/qemu-kvm) -RH-Bugzilla: 2046201 -RH-Acked-by: Hanna Reitz -RH-Acked-by: Sergio Lopez -RH-Acked-by: Vivek Goyal - -At the start, drop membership of all supplementary groups. This is -not required. - -If we have membership of "root" supplementary group and when we switch -uid/gid using setresuid/setsgid, we still retain membership of existing -supplemntary groups. And that can allow some operations which are not -normally allowed. - -For example, if root in guest creates a dir as follows. - -$ mkdir -m 03777 test_dir - -This sets SGID on dir as well as allows unprivileged users to write into -this dir. - -And now as unprivileged user open file as follows. - -$ su test -$ fd = open("test_dir/priviledge_id", O_RDWR|O_CREAT|O_EXCL, 02755); - -This will create SGID set executable in test_dir/. - -And that's a problem because now an unpriviliged user can execute it, -get egid=0 and get access to resources owned by "root" group. This is -privilege escalation. - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2044863 -Fixes: CVE-2022-0358 -Reported-by: JIETAO XIAO -Suggested-by: Miklos Szeredi -Reviewed-by: Stefan Hajnoczi -Reviewed-by: Dr. David Alan Gilbert -Signed-off-by: Vivek Goyal -Message-Id: -Signed-off-by: Dr. David Alan Gilbert - dgilbert: Fixed missing {}'s style nit -(cherry picked from commit 449e8171f96a6a944d1f3b7d3627ae059eae21ca) ---- - tools/virtiofsd/passthrough_ll.c | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c -index 64b5b4fbb1..b3d0674f6d 100644 ---- a/tools/virtiofsd/passthrough_ll.c -+++ b/tools/virtiofsd/passthrough_ll.c -@@ -54,6 +54,7 @@ - #include - #include - #include -+#include - - #include "qemu/cutils.h" - #include "passthrough_helpers.h" -@@ -1161,6 +1162,30 @@ static void lo_lookup(fuse_req_t req, fuse_ino_t parent, const char *name) - #define OURSYS_setresuid SYS_setresuid - #endif - -+static void drop_supplementary_groups(void) -+{ -+ int ret; -+ -+ ret = getgroups(0, NULL); -+ if (ret == -1) { -+ fuse_log(FUSE_LOG_ERR, "getgroups() failed with error=%d:%s\n", -+ errno, strerror(errno)); -+ exit(1); -+ } -+ -+ if (!ret) { -+ return; -+ } -+ -+ /* Drop all supplementary groups. We should not need it */ -+ ret = setgroups(0, NULL); -+ if (ret == -1) { -+ fuse_log(FUSE_LOG_ERR, "setgroups() failed with error=%d:%s\n", -+ errno, strerror(errno)); -+ exit(1); -+ } -+} -+ - /* - * Change to uid/gid of caller so that file is created with - * ownership of caller. -@@ -3926,6 +3951,8 @@ int main(int argc, char *argv[]) - - qemu_init_exec_dir(argv[0]); - -+ drop_supplementary_groups(); -+ - pthread_mutex_init(&lo.mutex, NULL); - lo.inodes = g_hash_table_new(lo_key_hash, lo_key_equal); - lo.root.fd = -1; --- -2.27.0 - diff --git a/kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch b/kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch deleted file mode 100644 index eb3273c..0000000 --- a/kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 1b8eeb1323fa21c7b26d0396fae5ae4a8cdb1ace Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Tue, 11 Jan 2022 18:29:31 +0000 -Subject: [PATCH 1/3] x86: Add q35 RHEL 8.6.0 machine type - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 61: x86: Add rhel 8.6.0 & 9.0.0 machine types -RH-Commit: [1/2] 189335cf0e4ad117e3e401f23aa07cddbbac50df (dagrh/c-9-s-qemu-kvm) -RH-Bugzilla: 1945666 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Cornelia Huck - -Add the new 8.6.0 machine type; note that while the -AV -notation has gone in the product naming, just keep the smbios -definitions the same for consistency. - -Signed-off-by: Dr. David Alan Gilbert ---- - hw/i386/pc_q35.c | 21 ++++++++++++++++++++- - 1 file changed, 20 insertions(+), 1 deletion(-) - -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 3b748ddd7b..0c25305f15 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -646,6 +646,24 @@ static void pc_q35_machine_rhel_options(MachineClass *m) - compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); - } - -+static void pc_q35_init_rhel860(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel860_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel_options(m); -+ m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)"; -+ pcmc->smbios_stream_product = "RHEL-AV"; -+ pcmc->smbios_stream_version = "8.6.0"; -+} -+ -+DEFINE_PC_MACHINE(q35_rhel860, "pc-q35-rhel8.6.0", pc_q35_init_rhel860, -+ pc_q35_machine_rhel860_options); -+ -+ - static void pc_q35_init_rhel850(MachineState *machine) - { - pc_q35_init(machine); -@@ -654,8 +672,9 @@ static void pc_q35_init_rhel850(MachineState *machine) - static void pc_q35_machine_rhel850_options(MachineClass *m) - { - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel_options(m); -+ pc_q35_machine_rhel860_options(m); - m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; -+ m->alias = NULL; - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.5.0"; - compat_props_add(m->compat_props, hw_compat_rhel_8_5, --- -2.27.0 - diff --git a/kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch b/kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch deleted file mode 100644 index 4367495..0000000 --- a/kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 3d5024fb9c904a649d07f0def3a90b3d36611215 Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Wed, 12 Jan 2022 13:21:57 +0000 -Subject: [PATCH 2/3] x86: Add q35 RHEL 9.0.0 machine type - -RH-Author: Dr. David Alan Gilbert -RH-MergeRequest: 61: x86: Add rhel 8.6.0 & 9.0.0 machine types -RH-Commit: [2/2] 743378502459b978efd632271f97ddb824422203 (dagrh/c-9-s-qemu-kvm) -RH-Bugzilla: 1945666 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Cornelia Huck - -Add a rhel-9.0.0 q35 machine type; it's currently identical to 8.6.0; -but having a separate machine type will make life easier in the future -when the 8.x types go away. - -Note: The smbios stream product name has now changed to 'RHEL' - -bz: https://bugzilla.redhat.com/show_bug.cgi?id=1945666 -Signed-off-by: Dr. David Alan Gilbert ---- - hw/i386/pc_q35.c | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 0c25305f15..bf9ad32f0e 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -646,6 +646,23 @@ static void pc_q35_machine_rhel_options(MachineClass *m) - compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); - } - -+static void pc_q35_init_rhel900(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel900_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel_options(m); -+ m->desc = "RHEL-9.0.0 PC (Q35 + ICH9, 2009)"; -+ pcmc->smbios_stream_product = "RHEL"; -+ pcmc->smbios_stream_version = "9.0.0"; -+} -+ -+DEFINE_PC_MACHINE(q35_rhel900, "pc-q35-rhel9.0.0", pc_q35_init_rhel900, -+ pc_q35_machine_rhel900_options); -+ - static void pc_q35_init_rhel860(MachineState *machine) - { - pc_q35_init(machine); -@@ -654,8 +671,9 @@ static void pc_q35_init_rhel860(MachineState *machine) - static void pc_q35_machine_rhel860_options(MachineClass *m) - { - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel_options(m); -+ pc_q35_machine_rhel900_options(m); - m->desc = "RHEL-8.6.0 PC (Q35 + ICH9, 2009)"; -+ m->alias = NULL; - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.6.0"; - } -@@ -674,7 +692,6 @@ static void pc_q35_machine_rhel850_options(MachineClass *m) - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); - pc_q35_machine_rhel860_options(m); - m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; -- m->alias = NULL; - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.5.0"; - compat_props_add(m->compat_props, hw_compat_rhel_8_5, --- -2.27.0 - diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 58fc073..b75c653 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -101,7 +101,7 @@ %global target_list %{kvm_target}-softmmu %global block_drivers_rw_list qcow2,raw,file,host_device,nbd,iscsi,rbd,blkdebug,luks,null-co,nvme,copy-on-read,throttle,compress -%global block_drivers_ro_list vdi,vmdk,vhdx,vpc,https,ssh +%global block_drivers_ro_list vdi,vmdk,vhdx,vpc,https %define qemudocdir %{_docdir}/%{name} %global firmwaredirs "%{_datadir}/qemu-firmware:%{_datadir}/ipxe/qemu:%{_datadir}/seavgabios:%{_datadir}/seabios" @@ -150,8 +150,8 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm -Version: 6.2.0 -Release: 13%{?rcrel}%{?dist}%{?cc_suffix} +Version: 7.0.0 +Release: 1%{?rcrel}%{?dist}%{?cc_suffix} # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped # Epoch 15 used for RHEL 8 # Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5) @@ -176,122 +176,24 @@ Source31: kvm-x86.conf Source36: README.tests -Patch0001: 0001-ui-clipboard-Don-t-use-g_autoptr-just-to-free-a-vari.patch -Patch0005: 0005-Initial-redhat-build.patch -Patch0006: 0006-Enable-disable-devices-for-RHEL.patch -Patch0007: 0007-Machine-type-related-general-changes.patch -Patch0008: 0008-Add-aarch64-machine-types.patch -Patch0009: 0009-Add-ppc64-machine-types.patch -Patch0010: 0010-Add-s390x-machine-types.patch -Patch0011: 0011-Add-x86_64-machine-types.patch -Patch0012: 0012-Enable-make-check.patch -Patch0013: 0013-vfio-cap-number-of-devices-that-can-be-assigned.patch -Patch0014: 0014-Add-support-statement-to-help-output.patch -Patch0015: 0015-globally-limit-the-maximum-number-of-CPUs.patch -Patch0016: 0016-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch -Patch0017: 0017-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch -Patch0018: 0018-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch -Patch0019: 0019-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch -Patch0020: 0020-Fix-virtio-net-pci-vectors-compat.patch -Patch0021: 0021-x86-rhel-machine-types-Add-pc_rhel_8_5_compat.patch -Patch0022: 0022-x86-rhel-machine-types-Wire-compat-into-q35-and-i440.patch -Patch0023: 0023-redhat-virt-rhel8.5.0-Update-machine-type-compatibil.patch -Patch0024: 0024-redhat-Add-s390x-machine-type-compatibility-handling.patch -Patch0025: 0025-compat-Update-hw_compat_rhel_8_5-with-6.2.0-RC2-chan.patch -# For bz#2008060 - Fix CPU Model for new IBM Z Hardware - qemu part -Patch26: kvm-redhat-Add-rhel8.6.0-and-rhel9.0.0-machine-types-for.patch -# For bz#2014484 - [RHEL9] Enable virtio-mem as tech-preview on x86-64 - QEMU -Patch27: kvm-redhat-Enable-virtio-mem-as-tech-preview-on-x86-64.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch28: kvm-hw-arm-virt-Register-iommu-as-a-class-property.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch29: kvm-hw-arm-virt-Register-its-as-a-class-property.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch30: kvm-hw-arm-virt-Rename-default_bus_bypass_iommu.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch31: kvm-hw-arm-virt-Expose-the-RAS-option.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch32: kvm-hw-arm-virt-Add-9.0-machine-type-and-remove-8.5-one.patch -# For bz#2031044 - Add rhel-9.0.0 machine types for RHEL 9.0 [aarch64] -Patch33: kvm-hw-arm-virt-Check-no_tcg_its-and-minor-style-changes.patch -# For bz#2024544 - Fio workers hangs when running fio with 32 jobs iodepth 32 and QEMU's userspace NVMe driver -Patch34: kvm-block-nvme-fix-infinite-loop-in-nvme_free_req_queue_.patch -# For bz#2028623 - [9.0] machine types: 6.2: Fix prefer_sockets -Patch35: kvm-rhel-machine-types-x86-set-prefer_sockets.patch -# For bz#1945666 - 9.0: x86 machine types -Patch36: kvm-x86-Add-q35-RHEL-8.6.0-machine-type.patch -# For bz#1945666 - 9.0: x86 machine types -Patch37: kvm-x86-Add-q35-RHEL-9.0.0-machine-type.patch -# For bz#2036669 - DEVICE_DELETED event is not delivered for device frontend if -device is configured via JSON -Patch38: kvm-softmmu-fix-device-deletion-events-with-device-JSON-.patch -# For bz#1962088 - [QSD] wrong help message for the fuse -Patch39: kvm-qemu-storage-daemon-Add-vhost-user-blk-help.patch -# For bz#1962088 - [QSD] wrong help message for the fuse -Patch40: kvm-qemu-storage-daemon-Fix-typo-in-vhost-user-blk-help.patch -# For bz#2046201 - CVE-2022-0358 qemu-kvm: QEMU: virtiofsd: potential privilege escalation via CVE-2018-13405 [rhel-9.0] -Patch41: kvm-virtiofsd-Drop-membership-of-all-supplementary-group.patch -# For bz#2034791 - Booting from Local Snapshot Core Dumped Whose Backing File Is Based on RBD -Patch42: kvm-block-rbd-fix-handling-of-holes-in-.bdrv_co_block_st.patch -# For bz#2034791 - Booting from Local Snapshot Core Dumped Whose Backing File Is Based on RBD -Patch43: kvm-block-rbd-workaround-for-ceph-issue-53784.patch -# For bz#2033708 - [Intel 9.0 Feat] qemu-kvm: SGX 1.5 (SGX1 + Flexible Launch Control) support -Patch44: kvm-numa-Enable-numa-for-SGX-EPC-sections.patch -# For bz#2033708 - [Intel 9.0 Feat] qemu-kvm: SGX 1.5 (SGX1 + Flexible Launch Control) support -Patch45: kvm-numa-Support-SGX-numa-in-the-monitor-and-Libvirt-int.patch -# For bz#2033708 - [Intel 9.0 Feat] qemu-kvm: SGX 1.5 (SGX1 + Flexible Launch Control) support -Patch46: kvm-doc-Add-the-SGX-numa-description.patch -# For bz#2033708 - [Intel 9.0 Feat] qemu-kvm: SGX 1.5 (SGX1 + Flexible Launch Control) support -Patch47: kvm-Enable-SGX-RH-Only.patch -# For bz#2033708 - [Intel 9.0 Feat] qemu-kvm: SGX 1.5 (SGX1 + Flexible Launch Control) support -Patch48: kvm-qapi-Cleanup-SGX-related-comments-and-restore-sectio.patch -# For bz#2041461 - Inconsistent block status reply in qemu-nbd -Patch49: kvm-block-io-Update-BSC-only-if-want_zero-is-true.patch -# For bz#2041461 - Inconsistent block status reply in qemu-nbd -Patch50: kvm-iotests-block-status-cache-New-test.patch -# For bz#1882917 - the target image size is incorrect when converting a badly fragmented file -Patch51: kvm-iotests-Test-qemu-img-convert-of-zeroed-data-cluster.patch -# For bz#1882917 - the target image size is incorrect when converting a badly fragmented file -Patch52: kvm-qemu-img-make-is_allocated_sectors-more-efficient.patch -# For bz#2040123 - Qemu core dumped when do block-stream to a snapshot node on non-enough space storage -Patch53: kvm-block-backend-prevent-dangling-BDS-pointers-across-a.patch -# For bz#2040123 - Qemu core dumped when do block-stream to a snapshot node on non-enough space storage -Patch54: kvm-iotests-stream-error-on-reset-New-test.patch -# For bz#2042481 - [aarch64] Launch guest with "default-bus-bypass-iommu=off,iommu=smmuv3" and "iommu_platform=on", guest hangs after system_reset -Patch55: kvm-hw-arm-smmuv3-Fix-device-reset.patch -# For bz#2046659 - qemu crash after execute blockdev-reopen with iothread -Patch56: kvm-block-Lock-AioContext-for-drain_end-in-blockdev-reop.patch -# For bz#2046659 - qemu crash after execute blockdev-reopen with iothread -Patch57: kvm-iotests-Test-blockdev-reopen-with-iothreads-and-thro.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch58: kvm-block-nbd-Delete-reconnect-delay-timer-when-done.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch59: kvm-block-nbd-Assert-there-are-no-timers-when-closed.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch60: kvm-iotests.py-Add-QemuStorageDaemon-class.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch61: kvm-iotests-281-Test-lingering-timers.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch62: kvm-block-nbd-Move-s-ioc-on-AioContext-change.patch -# For bz#2033626 - Qemu core dump when start guest with nbd node or do block jobs to nbd node -Patch63: kvm-iotests-281-Let-NBD-connection-yield-in-iothread.patch -# For bz#2042820 - qemu crash when try to copy and paste contents from client to VM -Patch64: kvm-Revert-ui-clipboard-Don-t-use-g_autoptr-just-to-free.patch -# For bz#2042820 - qemu crash when try to copy and paste contents from client to VM -Patch65: kvm-ui-avoid-compiler-warnings-from-unused-clipboard-inf.patch -# For bz#2042820 - qemu crash when try to copy and paste contents from client to VM -Patch66: kvm-ui-clipboard-fix-use-after-free-regression.patch -# For bz#2042820 - qemu crash when try to copy and paste contents from client to VM -Patch67: kvm-ui-vnc.c-Fixed-a-deadlock-bug.patch -# For bz#2044818 - Qemu Core Dumped when migrate -> migrate_cancel -> migrate again during guest is paused -Patch68: kvm-memory-Fix-incorrect-calls-of-log_global_start-stop.patch -# For bz#2044818 - Qemu Core Dumped when migrate -> migrate_cancel -> migrate again during guest is paused -Patch69: kvm-memory-Fix-qemu-crash-on-starting-dirty-log-twice-wi.patch -# For bz#2062813 - Mark all RHEL-8 and earlier machine types as deprecated [rhel-9.1.0] -Patch70: kvm-RHEL-mark-old-machine-types-as-deprecated.patch -# For bz#2062828 - [virtual network][rhel9][vDPA] qemu crash after hot unplug vdpa device [rhel-9.1.0] -Patch71: kvm-hw-virtio-vdpa-Fix-leak-of-host-notifier-memory-regi.patch -# For bz#2065589 - RHEL 9.0 guest with vsock device migration failed from RHEL 9.0 > RHEL 8.6 [rhel-9.1.0] -Patch72: kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch +Patch0004: 0004-Initial-redhat-build.patch +Patch0005: 0005-Enable-disable-devices-for-RHEL.patch +Patch0006: 0006-Machine-type-related-general-changes.patch +Patch0007: 0007-Add-aarch64-machine-types.patch +Patch0008: 0008-Add-ppc64-machine-types.patch +Patch0009: 0009-Add-s390x-machine-types.patch +Patch0010: 0010-Add-x86_64-machine-types.patch +Patch0011: 0011-Enable-make-check.patch +Patch0012: 0012-vfio-cap-number-of-devices-that-can-be-assigned.patch +Patch0013: 0013-Add-support-statement-to-help-output.patch +Patch0014: 0014-globally-limit-the-maximum-number-of-CPUs.patch +Patch0015: 0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch +Patch0016: 0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch +Patch0017: 0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch +Patch0018: 0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch +Patch0019: 0019-WRB-Introduce-RHEL-9.0.0-hw-compat-structure.patch +Patch0020: 0020-redhat-Update-s390x-machine-type-compatibility-for-r.patch +Patch0021: 0021-pc-Move-s3-s4-suspend-disabling-to-compat.patch # Source-git patches @@ -322,7 +224,6 @@ BuildRequires: python3-sphinx_rtd_theme BuildRequires: libseccomp-devel >= %{libseccomp_version} # For network block driver BuildRequires: libcurl-devel -BuildRequires: libssh-devel %if %{have_block_rbd} BuildRequires: librbd-devel %endif @@ -513,16 +414,6 @@ using the rbd protocol. %endif -%package block-ssh -Summary: QEMU SSH block driver -Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} -%description block-ssh -This package provides the additional SSH block driver for QEMU. - -Install this package if you want to access remote disks using -the Secure Shell (SSH) protocol. - - %package audio-pa Summary: QEMU PulseAudio audio driver Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} @@ -646,6 +537,7 @@ mkdir -p %{qemu_kvm_build} --disable-crypto-afalg \\\ --disable-curl \\\ --disable-curses \\\ + --disable-dbus-display \\\ --disable-debug-info \\\ --disable-debug-mutex \\\ --disable-debug-tcg \\\ @@ -676,7 +568,6 @@ mkdir -p %{qemu_kvm_build} --disable-libssh \\\ --disable-libudev \\\ --disable-libusb \\\ - --disable-libxml2 \\\ --disable-linux-aio \\\ --disable-linux-io-uring \\\ --disable-linux-user \\\ @@ -702,6 +593,7 @@ mkdir -p %{qemu_kvm_build} --disable-pvrdma \\\ --disable-qcow1 \\\ --disable-qed \\\ + --disable-qga-vss \\\ --disable-qom-cast-debug \\\ --disable-rbd \\\ --disable-rdma \\\ @@ -751,7 +643,6 @@ mkdir -p %{qemu_kvm_build} --disable-whpx \\\ --disable-xen \\\ --disable-xen-pci-passthrough \\\ - --disable-xfsctl \\\ --disable-xkbcommon \\\ --disable-zstd \\\ --with-git-submodules=ignore \\\ @@ -775,7 +666,7 @@ run_configure() { --with-pkgversion="%{name}-%{version}-%{release}" \ --with-suffix="%{name}" \ --firmwarepath=%{firmwaredirs} \ - --meson="%{__meson}" \ + --meson="internal" \ --enable-trace-backend=dtrace \ --with-coroutine=ucontext \ --with-git=git \ @@ -803,9 +694,6 @@ run_configure \ --block-drv-ro-whitelist=%{block_drivers_ro_list} \ %endif --enable-attr \ -%ifarch %{ix86} x86_64 - --enable-avx2 \ -%endif --enable-cap-ng \ --enable-capstone=internal \ --enable-coroutine-pool \ @@ -822,7 +710,6 @@ run_configure \ %if %{have_pmem} --enable-libpmem \ %endif - --enable-libssh \ --enable-libusb \ --enable-libudev \ --enable-linux-aio \ @@ -875,7 +762,6 @@ run_configure \ --enable-safe-stack \ %endif - %if %{tools_only} %make_build qemu-img %make_build qemu-io @@ -980,7 +866,7 @@ cp -R %{qemu_kvm_build}/tests/avocado/* %{buildroot}%{testsdir}/tests/avocado/ # Install qemu.py and qmp/ scripts required to run avocado_qemu tests cp -R %{qemu_kvm_build}/python/qemu %{buildroot}%{testsdir}/python cp -R %{qemu_kvm_build}/scripts/qmp/* %{buildroot}%{testsdir}/scripts/qmp -install -p -m 0755 tests/Makefile.include %{buildroot}%{testsdir}/tests/ +install -p -m 0644 tests/Makefile.include %{buildroot}%{testsdir}/tests/ # Install qemu-iotests cp -R tests/qemu-iotests/* %{buildroot}%{testsdir}/tests/qemu-iotests/ @@ -1114,10 +1000,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/vgabios*bin rm -rf %{buildroot}%{_datadir}/%{name}/bios*.bin rm -rf %{buildroot}%{_datadir}/%{name}/sgabios.bin -# Remove virtiofsd (we use separate package for virtiofsd) -rm -rf %{buildroot}%{_mandir}/man1/virtiofsd.1* -rm -rf %{buildroot}%{_libexecdir}/virtiofsd -rm -rf %{buildroot}%{_datadir}/qemu/vhost-user/50-qemu-virtiofsd.json +# Remove vof roms +rm -rf %{buildroot}%{_datadir}/%{name}/vof-nvram.bin +rm -rf %{buildroot}%{_datadir}/%{name}/vof.bin %if %{have_modules_load} install -D -p -m 644 %{_sourcedir}/modules-load.conf %{buildroot}%{_sysconfdir}/modules-load.d/kvm.conf @@ -1145,6 +1030,10 @@ rm -rf %{buildroot}%{qemudocdir}/specs # endif !tools_only %endif +# Remove virtiofsd (we use separate package for virtiofsd) +rm -rf %{buildroot}%{_mandir}/man1/virtiofsd.1* +rm -rf %{buildroot}%{_libexecdir}/virtiofsd +rm -rf %{buildroot}%{_datadir}/qemu/vhost-user/50-qemu-virtiofsd.json %check %if !%{tools_only} @@ -1286,17 +1175,21 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %files device-display-virtio-gpu %{_libdir}/%{name}/hw-display-virtio-gpu.so + %files device-display-virtio-gpu-gl %{_libdir}/%{name}/hw-display-virtio-gpu-gl.so + %ifarch s390x %files device-display-virtio-gpu-ccw %{_libdir}/%{name}/hw-s390x-virtio-gpu-ccw.so %else %files device-display-virtio-gpu-pci %{_libdir}/%{name}/hw-display-virtio-gpu-pci.so + %files device-display-virtio-gpu-pci-gl %{_libdir}/%{name}/hw-display-virtio-gpu-pci-gl.so %endif + %ifarch x86_64 %{power64} %files device-display-virtio-vga %{_libdir}/%{name}/hw-display-virtio-vga.so @@ -1314,8 +1207,6 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %files block-rbd %{_libdir}/%{name}/block-rbd.so %endif -%files block-ssh -%{_libdir}/%{name}/block-ssh.so %files audio-pa %{_libdir}/%{name}/audio-pa.so @@ -1330,7 +1221,7 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %{_libdir}/%{name}/hw-usb-host.so %if %{have_usbredir} -%files device-usb-redirect +%files device-usb-redirect %{_libdir}/%{name}/hw-usb-redirect.so %endif @@ -1338,6 +1229,22 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Wed Apr 20 2022 Miroslav Rezanina - 7.0.0-1 +- Rebase to QEMU 7.0.0 [bz#2064757] +- Do not build ssh block driver anymore [bz#2064500] +- Removed hpet and parallel port support [bz#2065042] +- Compatibility support [bz#2064782 bz#2064771] +- Resolves: bz#2064757 + (Rebase to QEMU 7.0.0) +- Resolves: bz#2064500 + (Install qemu-kvm-6.2.0-11.el9_0.1 failed as conflict with qemu-kvm-block-ssh-6.2.0-11.el9_0.1) +- Resolves: bz#2065042 + (Remove upstream-only devices from the qemu-kvm binary) +- Resolves: bz#2064782 + (Update machine type compatibility for QEMU 7.0.0 update [s390x]) +- Resolves: bz#2064771 + (Update machine type compatibility for QEMU 7.0.0 update [x86_64]) + * Thu Apr 14 2022 Miroslav Rezanina - 6.2.0-13 - kvm-RHEL-disable-seqpacket-for-vhost-vsock-device-in-rhe.patch [bz#2065589] - Resolves: bz#2065589 diff --git a/sources b/sources index f1545cf..9f53caf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (qemu-6.2.0.tar.xz) = e9f8231c9e1cfcc41cb47f10a55d63f6b8aee307af00cf6acf64acb7aa4f49fa7e9d6330703a2abea15d8b7bbaba7d3cb08c83edd98d82642367b527df730817 +SHA512 (qemu-7.0.0.tar.xz) = 44ecd10c018a3763e1bc87d1d35b98890d0d5636acd69fe9b5cadf5024d5af6a31684d60cbe1c3370e02986434c1fb0ad99224e0e6f6fe7eda169992508157b1