From 77609c2a58bda2b4dbece4f6b8f1d6d05f040eba Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Dec 07 2021 17:30:41 +0000 Subject: import qemu-kvm-6.1.0-7.el9 --- diff --git a/.gitignore b/.gitignore index a63ad11..558e0ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/qemu-6.0.0.tar.xz +SOURCES/qemu-6.1.0.tar.xz diff --git a/.qemu-kvm.metadata b/.qemu-kvm.metadata index 5f33345..1cd8296 100644 --- a/.qemu-kvm.metadata +++ b/.qemu-kvm.metadata @@ -1 +1 @@ -131854b10d8c1614ae137c647aa31b756782ba2e SOURCES/qemu-6.0.0.tar.xz +aae5ef7761b5f2fc45f0076219f1249da86f94b5 SOURCES/qemu-6.1.0.tar.xz diff --git a/SOURCES/0004-Initial-redhat-build.patch b/SOURCES/0004-Initial-redhat-build.patch index a697dd3..94653b6 100644 --- a/SOURCES/0004-Initial-redhat-build.patch +++ b/SOURCES/0004-Initial-redhat-build.patch @@ -1,49 +1,149 @@ -From 431955e872aa010376b1f94665908c2ba8194b44 Mon Sep 17 00:00:00 2001 +From 4a0a5d5019938a8b4b5526d33e1bf3d7dcfc56a5 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina -Date: Fri, 12 Oct 2018 07:31:11 +0200 +Date: Wed, 26 May 2021 10:56:02 +0200 Subject: Initial redhat build This patch introduces redhat build structure in redhat subdirectory. In addition, several issues are fixed in QEMU tree: - - Change of app name for sasl_server_init in VNC code from qemu to qemu-kvm - - As we use qemu-kvm as name in all places, this is updated to be consistent - - Man page renamed from qemu to qemu-kvm - - man page is installed using make install so we have to fix it in qemu tree +- Change of app name for sasl_server_init in VNC code from qemu to qemu-kvm + - As we use qemu-kvm as name in all places, this is updated to be consistent +- Man page renamed from qemu to qemu-kvm + - man page is installed using make install so we have to fix it in qemu tree We disable make check due to issues with some of the tests. -This rebase is based on qemu-kvm-5.2.0-16.el9 +This rebase is based on qemu-kvm-5.2.0-13.el9 Signed-off-by: Miroslav Rezanina +-- +Rebase changes (210526): +- Move build to .distro +- Move changes for support file to related commit +- Added dependency for python3-sphinx-rtd_theme +- Removed --disable-sheepdog configure option +- Added new hw-display modules + +Rebase changes (210623): +- SASL initialization moved to ui/vnc-auth-sasl.c + +Rebase changes (210714): +- Add accel-qtest- and accel-tcg-x86_64 libraries + +Rebase changes (6.1.0 rc1): +- Added hw-usb-host module + +Rebase changes (6.1.0 rc4): +- Disable new configure options (bpf, nvmm, slirp-smbd) + +Rebase chagnes (6.1.0): +- Use -pie for ksmctl build (annocheck complain fix) Merged patches (6.0.0): -- 605758c902 Limit build on Power to qemu-img and qemu-ga only + - 605758c902 Limit build on Power to qemu-img and qemu-ga only + +Merged patches (6.1.0 RC1): +- f04f91751f Use cached tarballs +- 6581165c65 Remove message with running VM count +- 03c3cac9fc spec-file: build qemu-kvm without SPICE and QXL +- e0ae6c1f6c spec-file: Obsolete qemu-kvm-ui-spice +- 9d2e9f9ecf spec: Do not build qemu-kvm-block-gluster +- cf470b4234 spec: Do not link pcnet and ne2k_pci roms +- e981284a6b redhat: Install the s390-netboot.img that we've built +- 24ef557f33 spec: Remove usage of Group: tag +- c40d69b4f4 spec: Drop %defattr usage +- f8e98798ce spec: Clean up BuildRequires +- 47246b43ee spec: Remove iasl BuildRequires +- 170dc1cbe0 spec: Remove redundant 0 in conditionals +- 8718f6fa11 spec: Add more have_XXX conditionals +- a001269ce9 spec: Remove binutils versioned Requires +- 34545ee641 spec: Remove diffutils BuildRequires +- c2c82beac9 spec: Remove redundant Requires: +- 9314c231f4 spec: Add XXX_version macros +- c43db0bf0f spec: Add have_block_rbd +- 3ecb0c0319 qga: drop StandardError=syslog +- 018049dc80 Remove iscsi support +- a2edf18777 redhat: Replace the kvm-setup.service with a /etc/modules-load.d config file +- 387b5fbcfe redhat: Move qemu-kvm-docs dependency to qemu-kvm +- 4ead693178 redhat: introducting qemu-kvm-hw-usbredir +- 4dc6fc3035 redhat: use the standard vhost-user JSON path +- 84757178b4 Fix local build +- 8c394227dd spec: Restrict block drivers in tools +- b6aa7c1fae Move tools to separate package +- eafd82e509 Split qemu-pr-helper to separate package +- 2c0182e2aa spec: RPM_BUILD_ROOT -> %{buildroot} +- 91bd55ca13 spec: More use of %{name} instead of 'qemu-kvm' +- 50ba299c61 spec: Use qemu-pr-helper.service from qemu.git (partial) +- ee08d4e0a3 spec: Use %{_sourcedir} for referencing sources +- 039e7f7d02 spec: Add tools_only +- 884ba71617 spec: %build: Add run_configure helper +- 8ebd864d65 spec: %build: Disable more bits with %{disable_everything} (partial) +- f23fdb53f5 spec: %build: Add macros for some 'configure' parameters +- fe951a8bd8 spec: %files: Move qemu-guest-agent and qemu-img earlier +- 353b632e37 spec: %install: Remove redundant bits +- 9d2015b752 spec: %install: Add %{modprobe_kvm_conf} macro +- 6d05134e8c spec: %install: Remove qemu-guest-agent /etc/qemu-kvm usage +- 985b226467 spec: %install: clean up qemu-ga section +- dfaf9c600d spec: %install: Use a single %{tools_only} section +- f6978ddb46 spec: Make tools_only not cross spec sections +- 071c211098 spec: %install: Limit time spent in %{qemu_kvm_build} +- 1b65c674be spec: misc syntactic merges with Fedora +- 4da16294cf spec: Use Fedora's pattern for specifying rc version +- d7ee259a79 spec: %files: don't use fine grained -docs file list +- 64cad0c60f spec: %files: Add licenses to qemu-common too +- c3de4f080a spec: %install: Drop python3 shebang fixup + +Merged patches (6.1.0 RC2): +- 46fc216115 Update local build to work with spec file improvements + +Merged patches (6.1.0 RC3): +- bab9531548 spec: Remove buildldflags +- c8360ab6a9 spec: Use %make_build macro +- f6966c66e9 spec: Drop make install sharedir and datadir usage +- 86982421bc spec: use %make_install macro +- 191c405d22 spec: parallelize `make check` +- 251a1fb958 spec: Drop explicit --build-id +- 44c7dda6c3 spec: use %{build_ldflags} +- 0009a34354 Move virtiofsd to separate package +- 34d1b200b3 Utilize --firmware configure option + +Merged patches (6.1.0): +- 2800e1dd03 spec: Switch toolchain to Clang/LLVM (except process-patches.sh) +- e8a70f500f spec: Use safe-stack for x86_64 +- e29445d50d spec: Reenable write support for VMDK etc. in tools +- a4fe2a3e16 redhat: Disable LTO on non-x86 architectures + +fixes --- + .distro/85-kvm.preset | 5 - + .distro/Makefile | 100 + + .distro/Makefile.common | 45 + + .distro/README.tests | 39 + + .distro/kvm-setup | 49 - + .distro/kvm-setup.service | 14 - + .distro/modules-load.conf | 4 + + .distro/qemu-guest-agent.service | 1 - + .distro/qemu-kvm.spec.template | 3767 +++++++++++++++++++++++ + .distro/scripts/extract_build_cmd.py | 12 + .gitignore | 1 + README.systemtap | 43 + - configure | 5 - - hw/remote/memory.c | 2 +- - hw/remote/proxy.c | 2 +- - meson.build | 8 +- - redhat/Makefile | 90 + - redhat/Makefile.common | 50 + - redhat/README.tests | 39 + - redhat/qemu-kvm.spec.template | 3609 +++++++++++++++++++++++ - redhat/scripts/extract_build_cmd.py | 5 +- - redhat/scripts/process-patches.sh | 20 +- - redhat/udev-kvm-check.c | 19 +- + configure | 1 - + meson.build | 6 +- scripts/qemu-guest-agent/fsfreeze-hook | 2 +- scripts/systemtap/conf.d/qemu_kvm.conf | 4 + scripts/systemtap/script.d/qemu_kvm.stp | 1 + tests/check-block.sh | 2 + - ui/vnc.c | 2 +- - 18 files changed, 3860 insertions(+), 44 deletions(-) + ui/vnc-auth-sasl.c | 2 +- + 19 files changed, 4024 insertions(+), 74 deletions(-) + delete mode 100644 .distro/85-kvm.preset + create mode 100644 .distro/Makefile + create mode 100644 .distro/Makefile.common + create mode 100644 .distro/README.tests + delete mode 100644 .distro/kvm-setup + delete mode 100644 .distro/kvm-setup.service + create mode 100644 .distro/modules-load.conf + create mode 100644 .distro/qemu-kvm.spec.template create mode 100644 README.systemtap - create mode 100644 redhat/Makefile - create mode 100644 redhat/Makefile.common - create mode 100644 redhat/README.tests - create mode 100644 redhat/qemu-kvm.spec.template create mode 100644 scripts/systemtap/conf.d/qemu_kvm.conf create mode 100644 scripts/systemtap/script.d/qemu_kvm.stp @@ -97,21 +197,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/configure b/configure -index 4f374b4889..53b2fa583a 100755 +index 9a79a004d7..b0dbdded06 100755 --- a/configure +++ b/configure -@@ -6383,10 +6383,6 @@ fi - mv $cross config-meson.cross - - rm -rf meson-private meson-info meson-logs --unset staticpic --if ! version_ge "$($meson --version)" 0.56.0; then -- staticpic=$(if test "$pie" = yes; then echo true; else echo false; fi) --fi - NINJA=$ninja $meson setup \ - --prefix "$prefix" \ - --libdir "$libdir" \ -@@ -6406,7 +6402,6 @@ NINJA=$ninja $meson setup \ +@@ -5189,7 +5189,6 @@ if test "$skip_meson" = no; then -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \ -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \ -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \ @@ -119,46 +208,19 @@ index 4f374b4889..53b2fa583a 100755 -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \ -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug \ -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \ -diff --git a/hw/remote/memory.c b/hw/remote/memory.c -index 32085b1e05..bf0047a81b 100644 ---- a/hw/remote/memory.c -+++ b/hw/remote/memory.c -@@ -43,7 +43,7 @@ void remote_sysmem_reconfig(MPQemuMsg *msg, Error **errp) - remote_sysmem_reset(); - - for (region = 0; region < msg->num_fds; region++) { -- g_autofree char *name; -+ g_autofree char *name = NULL; - subregion = g_new(MemoryRegion, 1); - name = g_strdup_printf("remote-mem-%u", suffix++); - memory_region_init_ram_from_fd(subregion, NULL, -diff --git a/hw/remote/proxy.c b/hw/remote/proxy.c -index 4fa4be079d..253c1aa7ec 100644 ---- a/hw/remote/proxy.c -+++ b/hw/remote/proxy.c -@@ -347,7 +347,7 @@ static void probe_pci_info(PCIDevice *dev, Error **errp) - PCI_BASE_ADDRESS_SPACE_IO : PCI_BASE_ADDRESS_SPACE_MEMORY; - - if (size) { -- g_autofree char *name; -+ g_autofree char *name = NULL; - pdev->region[i].dev = pdev; - pdev->region[i].present = true; - if (type == PCI_BASE_ADDRESS_SPACE_MEMORY) { diff --git a/meson.build b/meson.build -index c6f4b0cf5e..06c15bd6d2 100644 +index b3e7ec0e92..17707c8748 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('qemu', ['c'], meson_version: '>=0.55.0', -- default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto'] + + default_options: ['warning_level=1', 'c_std=gnu11', 'cpp_std=gnu++11', 'b_colorout=auto'] + - (meson.version().version_compare('>=0.56.0') ? [ 'b_staticpic=false' ] : []), -+ default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto', -+ 'b_staticpic=false' ], ++ [ 'b_staticpic=false' ], version: run_command('head', meson.source_root() / 'VERSION').stdout().strip()) not_found = dependency('', required: false) -@@ -1482,7 +1482,9 @@ if capstone_opt == 'internal' +@@ -1790,7 +1790,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. @@ -212,19 +274,19 @@ index f86cb863de..6d38340d49 100755 cd tests/qemu-iotests # QEMU_CHECK_BLOCK_AUTO is used to disable some unstable sub-tests -diff --git a/ui/vnc.c b/ui/vnc.c -index 456db47d71..97ae92b181 100644 ---- a/ui/vnc.c -+++ b/ui/vnc.c -@@ -4146,7 +4146,7 @@ void vnc_display_open(const char *id, Error **errp) +diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c +index 47fdae5b21..2a950caa2a 100644 +--- a/ui/vnc-auth-sasl.c ++++ b/ui/vnc-auth-sasl.c +@@ -42,7 +42,7 @@ - #ifdef CONFIG_VNC_SASL - if (sasl) { -- int saslErr = sasl_server_init(NULL, "qemu"); -+ int saslErr = sasl_server_init(NULL, "qemu-kvm"); + bool vnc_sasl_server_init(Error **errp) + { +- int saslErr = sasl_server_init(NULL, "qemu"); ++ int saslErr = sasl_server_init(NULL, "qemu-kvm"); - if (saslErr != SASL_OK) { - error_setg(errp, "Failed to initialize SASL auth: %s", + if (saslErr != SASL_OK) { + error_setg(errp, "Failed to initialize SASL auth: %s", -- 2.27.0 diff --git a/SOURCES/0005-Enable-disable-devices-for-RHEL.patch b/SOURCES/0005-Enable-disable-devices-for-RHEL.patch index d80a533..6ef5467 100644 --- a/SOURCES/0005-Enable-disable-devices-for-RHEL.patch +++ b/SOURCES/0005-Enable-disable-devices-for-RHEL.patch @@ -1,22 +1,41 @@ -From f46ca4c7e719e0a70f8e0ffe3de882c017c216e7 Mon Sep 17 00:00:00 2001 +From 0818ec19b1626de85d061b240e0c369a6fb524fb Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina -Date: Wed, 2 Sep 2020 09:11:07 +0200 +Date: Thu, 15 Jul 2021 03:22:36 -0400 Subject: Enable/disable devices for RHEL This commit adds all changes related to changes in supported devices. Signed-off-by: Miroslav Rezanina +-- +Rebase notes (210623): +- Added CONFIG_TPM (except s390x) + +Rebase notes (210714): +- default-configs moved to configs + +Rebaes notes (6.1.0 RC2): +- Use --with-device- configure option to use rhel configs + +Merged patches (210526): +- c51bf45304 Remove SPICE and QXL from x86_64-rh-devices.mak + +Merged patches (6.1.0 RC1): +- 02fc745601 aarch64-rh-devices: add CONFIG_PVPANIC_PCI +- f2fe835153 aarch64-rh-devices: add CONFIG_PXB +- b5431733ad disable CONFIG_USB_STORAGE_BOT +- 478ba0cdf6 Disable TPM passthrough + +Merged patches (6.1.0): +- 2504d68a7c aarch64: Add USB storage devices +- 51c2a3253c disable ac97 audio --- - .../devices/aarch64-rh-devices.mak | 28 +++++ - default-configs/devices/aarch64-softmmu.mak | 10 +- - default-configs/devices/ppc64-rh-devices.mak | 36 ++++++ - default-configs/devices/ppc64-softmmu.mak | 10 +- - default-configs/devices/rh-virtio.mak | 10 ++ - default-configs/devices/s390x-rh-devices.mak | 16 +++ - default-configs/devices/s390x-softmmu.mak | 4 +- - default-configs/devices/x86_64-rh-devices.mak | 104 ++++++++++++++++++ - default-configs/devices/x86_64-softmmu.mak | 10 +- - .../devices/x86_64-upstream-devices.mak | 4 + + .distro/qemu-kvm.spec.template | 12 ++- + .../aarch64-softmmu/aarch64-rh-devices.mak | 33 ++++++ + .../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 + hw/acpi/ich9.c | 4 +- hw/arm/meson.build | 2 +- hw/block/fdc.c | 10 ++ @@ -30,26 +49,25 @@ Signed-off-by: Miroslav Rezanina hw/timer/hpet.c | 8 ++ hw/usb/meson.build | 2 +- qemu-options.hx | 4 - - redhat/qemu-kvm.spec.template | 5 +- target/arm/cpu_tcg.c | 10 ++ target/ppc/cpu-models.c | 10 ++ - target/s390x/cpu_models.c | 3 + - target/s390x/kvm.c | 8 ++ - 28 files changed, 304 insertions(+), 22 deletions(-) - create mode 100644 default-configs/devices/aarch64-rh-devices.mak - create mode 100644 default-configs/devices/ppc64-rh-devices.mak - create mode 100644 default-configs/devices/rh-virtio.mak - create mode 100644 default-configs/devices/s390x-rh-devices.mak - create mode 100644 default-configs/devices/x86_64-rh-devices.mak - create mode 100644 default-configs/devices/x86_64-upstream-devices.mak + target/s390x/cpu_models_sysemu.c | 3 + + target/s390x/kvm/kvm.c | 8 ++ + 24 files changed, 285 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/default-configs/devices/aarch64-rh-devices.mak b/default-configs/devices/aarch64-rh-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..a4d67274c0 +index 0000000000..cd9c7c5127 --- /dev/null -+++ b/default-configs/devices/aarch64-rh-devices.mak -@@ -0,0 +1,28 @@ -+include rh-virtio.mak ++++ b/configs/devices/aarch64-softmmu/aarch64-rh-devices.mak +@@ -0,0 +1,33 @@ ++include ../rh-virtio.mak + +CONFIG_ARM_GIC_KVM=y +CONFIG_ARM_GIC=y @@ -66,6 +84,8 @@ index 0000000000..a4d67274c0 +CONFIG_USB=y +CONFIG_USB_XHCI=y +CONFIG_USB_XHCI_PCI=y ++CONFIG_USB_STORAGE_CORE=y ++CONFIG_USB_STORAGE_CLASSIC=y +CONFIG_VFIO=y +CONFIG_VFIO_PCI=y +CONFIG_VIRTIO_MMIO=y @@ -73,36 +93,20 @@ index 0000000000..a4d67274c0 +CONFIG_XIO3130=y +CONFIG_NVDIMM=y +CONFIG_ACPI_APEI=y ++CONFIG_TPM=y +CONFIG_TPM_EMULATOR=y +CONFIG_TPM_TIS_SYSBUS=y +CONFIG_PTIMER=y +CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y -diff --git a/default-configs/devices/aarch64-softmmu.mak b/default-configs/devices/aarch64-softmmu.mak -index 958b1e08e4..8f6867d48a 100644 ---- a/default-configs/devices/aarch64-softmmu.mak -+++ b/default-configs/devices/aarch64-softmmu.mak -@@ -1,8 +1,10 @@ - # Default configuration for aarch64-softmmu - - # We support all the 32 bit boards so need all their config --include arm-softmmu.mak -+#include arm-softmmu.mak - --CONFIG_XLNX_ZYNQMP_ARM=y --CONFIG_XLNX_VERSAL=y --CONFIG_SBSA_REF=y -+#CONFIG_XLNX_ZYNQMP_ARM=y -+#CONFIG_XLNX_VERSAL=y -+#CONFIG_SBSA_REF=y -+ -+include aarch64-rh-devices.mak -diff --git a/default-configs/devices/ppc64-rh-devices.mak b/default-configs/devices/ppc64-rh-devices.mak ++CONFIG_PVPANIC_PCI=y ++CONFIG_PXB=y +diff --git a/configs/devices/ppc64-softmmu/ppc64-rh-devices.mak b/configs/devices/ppc64-softmmu/ppc64-rh-devices.mak new file mode 100644 -index 0000000000..5b01b7fac0 +index 0000000000..6a3e3f0227 --- /dev/null -+++ b/default-configs/devices/ppc64-rh-devices.mak -@@ -0,0 +1,36 @@ -+include rh-virtio.mak ++++ b/configs/devices/ppc64-softmmu/ppc64-rh-devices.mak +@@ -0,0 +1,35 @@ ++include ../rh-virtio.mak + +CONFIG_DIMM=y +CONFIG_MEM_DEVICE=y @@ -119,7 +123,6 @@ index 0000000000..5b01b7fac0 +CONFIG_USB_OHCI=y +CONFIG_USB_OHCI_PCI=y +CONFIG_USB_SMARTCARD=y -+CONFIG_USB_STORAGE_BOT=y +CONFIG_USB_STORAGE_CORE=y +CONFIG_USB_STORAGE_CLASSIC=y +CONFIG_USB_XHCI=y @@ -135,36 +138,14 @@ index 0000000000..5b01b7fac0 +CONFIG_WDT_IB6300ESB=y +CONFIG_XICS=y +CONFIG_XIVE=y ++CONFIG_TPM=y +CONFIG_TPM_SPAPR=y +CONFIG_TPM_EMULATOR=y -+CONFIG_TPM_PASSTHROUGH=y -diff --git a/default-configs/devices/ppc64-softmmu.mak b/default-configs/devices/ppc64-softmmu.mak -index ae0841fa3a..040e5575e7 100644 ---- a/default-configs/devices/ppc64-softmmu.mak -+++ b/default-configs/devices/ppc64-softmmu.mak -@@ -1,11 +1,13 @@ - # Default configuration for ppc64-softmmu - - # Include all 32-bit boards --include ppc-softmmu.mak -+#include ppc-softmmu.mak - - # For PowerNV --CONFIG_POWERNV=y -+#CONFIG_POWERNV=y - - # For pSeries --CONFIG_PSERIES=y --CONFIG_NVDIMM=y -+#CONFIG_PSERIES=y -+#CONFIG_NVDIMM=y -+ -+include ppc64-rh-devices.mak -diff --git a/default-configs/devices/rh-virtio.mak b/default-configs/devices/rh-virtio.mak +diff --git a/configs/devices/rh-virtio.mak b/configs/devices/rh-virtio.mak new file mode 100644 index 0000000000..94ede1b5f6 --- /dev/null -+++ b/default-configs/devices/rh-virtio.mak ++++ b/configs/devices/rh-virtio.mak @@ -0,0 +1,10 @@ +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y @@ -176,13 +157,13 @@ index 0000000000..94ede1b5f6 +CONFIG_VIRTIO_RNG=y +CONFIG_VIRTIO_SCSI=y +CONFIG_VIRTIO_SERIAL=y -diff --git a/default-configs/devices/s390x-rh-devices.mak b/default-configs/devices/s390x-rh-devices.mak +diff --git a/configs/devices/s390x-softmmu/s390x-rh-devices.mak b/configs/devices/s390x-softmmu/s390x-rh-devices.mak new file mode 100644 -index 0000000000..08a15f3e01 +index 0000000000..d3b38312e1 --- /dev/null -+++ b/default-configs/devices/s390x-rh-devices.mak -@@ -0,0 +1,16 @@ -+include rh-virtio.mak ++++ b/configs/devices/s390x-softmmu/s390x-rh-devices.mak +@@ -0,0 +1,15 @@ ++include ../rh-virtio.mak + +CONFIG_PCI=y +CONFIG_S390_CCW_VIRTIO=y @@ -190,7 +171,6 @@ index 0000000000..08a15f3e01 +CONFIG_S390_FLIC_KVM=y +CONFIG_SCLPCONSOLE=y +CONFIG_SCSI=y -+CONFIG_TERMINAL3270=y +CONFIG_VFIO=y +CONFIG_VFIO_AP=y +CONFIG_VFIO_CCW=y @@ -198,27 +178,15 @@ index 0000000000..08a15f3e01 +CONFIG_VHOST_USER=y +CONFIG_VIRTIO_CCW=y +CONFIG_WDT_DIAG288=y -diff --git a/default-configs/devices/s390x-softmmu.mak b/default-configs/devices/s390x-softmmu.mak -index f2287a133f..3e2e388e91 100644 ---- a/default-configs/devices/s390x-softmmu.mak -+++ b/default-configs/devices/s390x-softmmu.mak -@@ -10,4 +10,6 @@ - - # Boards: - # --CONFIG_S390_CCW_VIRTIO=y -+#CONFIG_S390_CCW_VIRTIO=y -+ -+include s390x-rh-devices.mak -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak +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..9f41400530 +index 0000000000..24b96ba0c4 --- /dev/null -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -0,0 +1,104 @@ -+include rh-virtio.mak ++++ b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak +@@ -0,0 +1,102 @@ ++include ../rh-virtio.mak ++include x86_64-upstream-devices.mak + -+CONFIG_AC97=y +CONFIG_ACPI=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_CPU_HOTPLUG=y @@ -237,6 +205,7 @@ index 0000000000..9f41400530 +CONFIG_E1000_PCI=y +CONFIG_EDU=y +CONFIG_FDC=y ++CONFIG_FDC_SYSBUS=y +CONFIG_FW_CFG_DMA=y +CONFIG_HDA=y +CONFIG_HYPERV=y @@ -278,7 +247,6 @@ index 0000000000..9f41400530 +CONFIG_PVPANIC_ISA=y +CONFIG_PXB=y +CONFIG_Q35=y -+CONFIG_QXL=y +CONFIG_RTL8139_PCI=y +CONFIG_SCSI=y +CONFIG_SERIAL=y @@ -288,13 +256,11 @@ index 0000000000..9f41400530 +CONFIG_SGA=y +CONFIG_SMBIOS=y +CONFIG_SMBUS_EEPROM=y -+CONFIG_SPICE=y +CONFIG_TEST_DEVICES=y +CONFIG_USB=y +CONFIG_USB_EHCI=y +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_SMARTCARD=y -+CONFIG_USB_STORAGE_BOT=y +CONFIG_USB_STORAGE_CORE=y +CONFIG_USB_STORAGE_CLASSIC=y +CONFIG_USB_UHCI=y @@ -316,42 +282,25 @@ index 0000000000..9f41400530 +CONFIG_WDT_IB6300ESB=y +CONFIG_WDT_IB700=y +CONFIG_XIO3130=y ++CONFIG_TPM=y +CONFIG_TPM_CRB=y +CONFIG_TPM_TIS_ISA=y +CONFIG_TPM_EMULATOR=y -+CONFIG_TPM_PASSTHROUGH=y -diff --git a/default-configs/devices/x86_64-softmmu.mak b/default-configs/devices/x86_64-softmmu.mak -index 64b2ee2960..e57bcff7d9 100644 ---- a/default-configs/devices/x86_64-softmmu.mak -+++ b/default-configs/devices/x86_64-softmmu.mak -@@ -1,3 +1,11 @@ - # Default configuration for x86_64-softmmu - --include i386-softmmu.mak -+#include i386-softmmu.mak -+ -+include x86_64-rh-devices.mak -+ -+# -+# RHEL: this is for the limited upstream machine type support, so to export -+# some more devices than what RHEL machines have. -+# -+include x86_64-upstream-devices.mak -diff --git a/default-configs/devices/x86_64-upstream-devices.mak b/default-configs/devices/x86_64-upstream-devices.mak +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/default-configs/devices/x86_64-upstream-devices.mak ++++ 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 diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c -index 853447cf9d..7f01fad64c 100644 +index 778e27b659..802501881f 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c -@@ -374,8 +374,8 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) +@@ -424,8 +424,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; @@ -360,13 +309,13 @@ index 853447cf9d..7f01fad64c 100644 + pm->disable_s3 = 1; + pm->disable_s4 = 1; pm->s4_val = 2; + pm->use_acpi_hotplug_bridge = true; - object_property_add_uint32_ptr(obj, ACPI_PM_PROP_PM_IO_BASE, diff --git a/hw/arm/meson.build b/hw/arm/meson.build -index be39117b9b..6fcc5ede50 100644 +index 721a8eb8be..87ed4dd914 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build -@@ -30,7 +30,7 @@ arm_ss.add(when: 'CONFIG_VEXPRESS', if_true: files('vexpress.c')) +@@ -31,7 +31,7 @@ arm_ss.add(when: 'CONFIG_VEXPRESS', if_true: files('vexpress.c')) arm_ss.add(when: 'CONFIG_ZYNQ', if_true: files('xilinx_zynq.c')) arm_ss.add(when: 'CONFIG_SABRELITE', if_true: files('sabrelite.c')) @@ -376,19 +325,19 @@ index be39117b9b..6fcc5ede50 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 a825c2acba..c62927bb3a 100644 +index 9014cd30b3..46cee8c544 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c -@@ -49,6 +49,8 @@ - #include "trace.h" +@@ -48,6 +48,8 @@ #include "qom/object.h" + #include "fdc-internal.h" +#include "hw/boards.h" + /********************************************************/ /* debug Floppy devices */ -@@ -2554,6 +2556,14 @@ static void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, +@@ -2320,6 +2322,14 @@ void fdctrl_realize_common(DeviceState *dev, FDCtrl *fdctrl, Error **errp) FDrive *drive; static int command_tables_inited = 0; @@ -459,10 +408,10 @@ index fdca6ca659..fa1a7eee51 100644 Also accept 8 MB/16 MB for backward compatibility. */ if (s->vga.vram_size_mb != 4 && s->vga.vram_size_mb != 8 && diff --git a/hw/ide/piix.c b/hw/ide/piix.c -index b9860e35a5..beb1ea6c46 100644 +index d3e738320b..7c77312463 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c -@@ -220,7 +220,8 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data) +@@ -232,7 +232,8 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data) k->device_id = PCI_DEVICE_ID_INTEL_82371SB_1; k->class_id = PCI_CLASS_STORAGE_IDE; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); @@ -472,7 +421,7 @@ index b9860e35a5..beb1ea6c46 100644 } static const TypeInfo piix3_ide_info = { -@@ -249,6 +250,8 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data) +@@ -261,6 +262,8 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data) k->class_id = PCI_CLASS_STORAGE_IDE; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); dc->hotpluggable = false; @@ -482,10 +431,10 @@ index b9860e35a5..beb1ea6c46 100644 static const TypeInfo piix4_ide_info = { diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c -index dde85ba6c6..62cf60c9c9 100644 +index baba62f357..bc360347ea 100644 --- a/hw/input/pckbd.c +++ b/hw/input/pckbd.c -@@ -597,6 +597,8 @@ static void i8042_class_initfn(ObjectClass *klass, void *data) +@@ -796,6 +796,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); @@ -495,10 +444,10 @@ index dde85ba6c6..62cf60c9c9 100644 static const TypeInfo i8042_info = { diff --git a/hw/net/e1000.c b/hw/net/e1000.c -index 4f75b44cfc..6f075fe235 100644 +index a30546c5d5..c2877978d9 100644 --- a/hw/net/e1000.c +++ b/hw/net/e1000.c -@@ -1797,6 +1797,7 @@ static const E1000Info e1000_devices[] = { +@@ -1814,6 +1814,7 @@ static const E1000Info e1000_devices[] = { .revision = 0x03, .phy_id2 = E1000_PHY_ID2_8254xx_DEFAULT, }, @@ -506,7 +455,7 @@ index 4f75b44cfc..6f075fe235 100644 { .name = "e1000-82544gc", .device_id = E1000_DEV_ID_82544GC_COPPER, -@@ -1809,6 +1810,7 @@ static const E1000Info e1000_devices[] = { +@@ -1826,6 +1827,7 @@ static const E1000Info e1000_devices[] = { .revision = 0x03, .phy_id2 = E1000_PHY_ID2_8254xx_DEFAULT, }, @@ -551,11 +500,11 @@ index 9520471be2..202e032524 100644 warn_report("Hpet's intcap not initialized"); } diff --git a/hw/usb/meson.build b/hw/usb/meson.build -index fb7a74e73a..674993aa4f 100644 +index de853d780d..0776ae6a20 100644 --- a/hw/usb/meson.build +++ b/hw/usb/meson.build -@@ -55,7 +55,7 @@ softmmu_ss.add(when: 'CONFIG_USB_SMARTCARD', if_true: files('dev-smartcard-reade - if config_host.has_key('CONFIG_SMARTCARD') +@@ -52,7 +52,7 @@ softmmu_ss.add(when: 'CONFIG_USB_SMARTCARD', if_true: files('dev-smartcard-reade + if cacard.found() usbsmartcard_ss = ss.source_set() usbsmartcard_ss.add(when: 'CONFIG_USB_SMARTCARD', - if_true: [cacard, files('ccid-card-emulated.c', 'ccid-card-passthru.c')]) @@ -564,10 +513,10 @@ index fb7a74e73a..674993aa4f 100644 endif diff --git a/qemu-options.hx b/qemu-options.hx -index fd21002bd6..0d4fb61bf7 100644 +index 83aa59a920..ac596e01a1 100644 --- a/qemu-options.hx +++ b/qemu-options.hx -@@ -2327,10 +2327,6 @@ ERST +@@ -2412,10 +2412,6 @@ ERST DEF("no-hpet", 0, QEMU_OPTION_no_hpet, "-no-hpet disable HPET\n", QEMU_ARCH_I386) @@ -579,7 +528,7 @@ index fd21002bd6..0d4fb61bf7 100644 DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable, "-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]\n" diff --git a/target/arm/cpu_tcg.c b/target/arm/cpu_tcg.c -index 046e476f65..c3cd0ca039 100644 +index ed444bf436..fafd019539 100644 --- a/target/arm/cpu_tcg.c +++ b/target/arm/cpu_tcg.c @@ -22,6 +22,7 @@ @@ -622,7 +571,7 @@ index 046e476f65..c3cd0ca039 100644 static void cortex_m0_initfn(Object *obj) { ARMCPU *cpu = ARM_CPU(obj); -@@ -927,6 +932,7 @@ static void arm_v7m_class_init(ObjectClass *oc, void *data) +@@ -928,6 +933,7 @@ static void arm_v7m_class_init(ObjectClass *oc, void *data) cc->gdb_core_xml_file = "arm-m-profile.xml"; } @@ -630,7 +579,7 @@ index 046e476f65..c3cd0ca039 100644 #ifndef TARGET_AARCH64 /* -@@ -1004,6 +1010,7 @@ static void arm_max_initfn(Object *obj) +@@ -1007,6 +1013,7 @@ static void arm_max_initfn(Object *obj) #endif /* !TARGET_AARCH64 */ static const ARMCPUInfo arm_tcg_cpus[] = { @@ -638,7 +587,7 @@ index 046e476f65..c3cd0ca039 100644 { .name = "arm926", .initfn = arm926_initfn }, { .name = "arm946", .initfn = arm946_initfn }, { .name = "arm1026", .initfn = arm1026_initfn }, -@@ -1019,7 +1026,9 @@ static const ARMCPUInfo arm_tcg_cpus[] = { +@@ -1022,7 +1029,9 @@ static const ARMCPUInfo arm_tcg_cpus[] = { { .name = "cortex-a7", .initfn = cortex_a7_initfn }, { .name = "cortex-a8", .initfn = cortex_a8_initfn }, { .name = "cortex-a9", .initfn = cortex_a9_initfn }, @@ -648,7 +597,7 @@ index 046e476f65..c3cd0ca039 100644 { .name = "cortex-m0", .initfn = cortex_m0_initfn, .class_init = arm_v7m_class_init }, { .name = "cortex-m3", .initfn = cortex_m3_initfn, -@@ -1050,6 +1059,7 @@ static const ARMCPUInfo arm_tcg_cpus[] = { +@@ -1053,6 +1062,7 @@ static const ARMCPUInfo arm_tcg_cpus[] = { { .name = "pxa270-b1", .initfn = pxa270b1_initfn }, { .name = "pxa270-c0", .initfn = pxa270c0_initfn }, { .name = "pxa270-c5", .initfn = pxa270c5_initfn }, @@ -726,11 +675,11 @@ index 87e4228614..6eaa65efff 100644 +#endif { NULL, NULL } }; -diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c -index 050dcf2d42..9254ff46bf 100644 ---- a/target/s390x/cpu_models.c -+++ b/target/s390x/cpu_models.c -@@ -430,6 +430,9 @@ static void check_unavailable_features(const S390CPUModel *max_model, +diff --git a/target/s390x/cpu_models_sysemu.c b/target/s390x/cpu_models_sysemu.c +index 05c3ccaaff..6a04ccab1b 100644 +--- a/target/s390x/cpu_models_sysemu.c ++++ b/target/s390x/cpu_models_sysemu.c +@@ -36,6 +36,9 @@ static void check_unavailable_features(const S390CPUModel *max_model, (max_model->def->gen == model->def->gen && max_model->def->ec_ga < model->def->ec_ga)) { list_add_feat("type", unavailable); @@ -740,11 +689,11 @@ index 050dcf2d42..9254ff46bf 100644 } /* detect missing features if any to properly report them */ -diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c -index 4fb3bbfef5..6c69d84b84 100644 ---- a/target/s390x/kvm.c -+++ b/target/s390x/kvm.c -@@ -2516,6 +2516,14 @@ void kvm_s390_apply_cpu_model(const S390CPUModel *model, Error **errp) +diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c +index 5b1fdb55c4..c52434985b 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) error_setg(errp, "KVM doesn't support CPU models"); return; } diff --git a/SOURCES/0006-Machine-type-related-general-changes.patch b/SOURCES/0006-Machine-type-related-general-changes.patch index 5c503bc..3c5c4df 100644 --- a/SOURCES/0006-Machine-type-related-general-changes.patch +++ b/SOURCES/0006-Machine-type-related-general-changes.patch @@ -1,4 +1,4 @@ -From 80e9b92048e6fe7c7aef0e64cbc0f855bd3a6272 Mon Sep 17 00:00:00 2001 +From fd2a04cf2221d8c541a70a66021c12a9b9c93aaa 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 @@ -8,72 +8,43 @@ split to allow easier review. It contains changes not related to any architecture. Signed-off-by: Miroslav Rezanina + +Merged patches (6.1.0 RC1): +- 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 + +Merged patches (6.1.0): +- a3995e2eff Remove RHEL 7.0.0 machine type (only generic changes) +- ad3190a79b Remove RHEL 7.1.0 machine type (only generic changes) +- 84bbe15d4e Remove RHEL 7.2.0 machine type (only generic changes) +- 0215eb3356 Remove RHEL 7.3.0 machine types (only generic changes) +- af69d1ca6e Remove RHEL 7.4.0 machine types (only generic changes) +- 8f7a74ab78 Remove RHEL 7.5.0 machine types (only generic changes) --- - hw/acpi/ich9.c | 15 +++ hw/acpi/piix4.c | 5 +- hw/arm/virt.c | 2 +- - hw/char/serial.c | 16 +++ - hw/core/machine.c | 251 +++++++++++++++++++++++++++++++++++ + hw/char/serial.c | 4 + + hw/core/machine.c | 159 +++++++++++++++++++++++++++++++++++ hw/display/vga-isa.c | 2 +- hw/i386/pc_piix.c | 2 + hw/i386/pc_q35.c | 2 + - hw/net/e1000e.c | 21 +++ hw/net/rtl8139.c | 4 +- - hw/rtc/mc146818rtc.c | 6 + - hw/smbios/smbios.c | 46 ++++++- + 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 + - hw/usb/hcd-xhci.c | 20 +++ - hw/usb/hcd-xhci.h | 2 + - include/hw/acpi/ich9.h | 3 + - include/hw/boards.h | 33 +++++ + include/hw/boards.h | 18 ++++ include/hw/firmware/smbios.h | 5 +- include/hw/i386/pc.h | 3 + - include/hw/usb.h | 3 + - migration/migration.c | 2 + - migration/migration.h | 5 + - 25 files changed, 489 insertions(+), 25 deletions(-) + 17 files changed, 295 insertions(+), 25 deletions(-) -diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c -index 7f01fad64c..33b0c6e33c 100644 ---- a/hw/acpi/ich9.c -+++ b/hw/acpi/ich9.c -@@ -369,6 +369,18 @@ static void ich9_pm_set_enable_tco(Object *obj, bool value, Error **errp) - s->pm.enable_tco = value; - } - -+static bool ich9_pm_get_force_rev1_fadt(Object *obj, Error **errp) -+{ -+ ICH9LPCState *s = ICH9_LPC_DEVICE(obj); -+ return s->pm.force_rev1_fadt; -+} -+ -+static void ich9_pm_set_force_rev1_fadt(Object *obj, bool value, Error **errp) -+{ -+ ICH9LPCState *s = ICH9_LPC_DEVICE(obj); -+ s->pm.force_rev1_fadt = value; -+} -+ - void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) - { - static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN; -@@ -391,6 +403,9 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) - object_property_add_bool(obj, "cpu-hotplug-legacy", - ich9_pm_get_cpu_hotplug_legacy, - ich9_pm_set_cpu_hotplug_legacy); -+ object_property_add_bool(obj, "__com.redhat_force-rev1-fadt", -+ ich9_pm_get_force_rev1_fadt, -+ ich9_pm_set_force_rev1_fadt); - object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S3_DISABLED, - &pm->disable_s3, OBJ_PROP_FLAG_READWRITE); - object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_DISABLED, diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c -index 8f8b0e95e5..9865d1a349 100644 +index 48f7a1edbc..af21cb4ac3 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c -@@ -278,6 +278,7 @@ static const VMStateDescription vmstate_acpi = { +@@ -279,6 +279,7 @@ static const VMStateDescription vmstate_acpi = { .name = "piix4_pm", .version_id = 3, .minimum_version_id = 3, @@ -81,7 +52,7 @@ index 8f8b0e95e5..9865d1a349 100644 .post_load = vmstate_acpi_post_load, .fields = (VMStateField[]) { VMSTATE_PCI_DEVICE(parent_obj, PIIX4PMState), -@@ -643,8 +644,8 @@ static void piix4_send_gpe(AcpiDeviceIf *adev, AcpiEventStatusBits ev) +@@ -644,8 +645,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), @@ -93,20 +64,20 @@ index 8f8b0e95e5..9865d1a349 100644 DEFINE_PROP_BOOL("acpi-pci-hotplug-with-bridge-support", PIIX4PMState, use_acpi_hotplug_bridge, true), diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 9f01d9041b..f904d3e98e 100644 +index 81eda46b0b..cd1a2d985d 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c -@@ -1522,7 +1522,7 @@ static void virt_build_smbios(VirtMachineState *vms) +@@ -1524,7 +1524,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); - smbios_get_tables(MACHINE(vms), NULL, 0, &smbios_tables, &smbios_tables_len, - &smbios_anchor, &smbios_anchor_len); + smbios_get_tables(MACHINE(vms), NULL, 0, + &smbios_tables, &smbios_tables_len, diff --git a/hw/char/serial.c b/hw/char/serial.c -index bc2e322970..cc378142a3 100644 +index 7061aacbce..8fa5ab1e8e 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -37,6 +37,7 @@ @@ -117,54 +88,35 @@ index bc2e322970..cc378142a3 100644 #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */ -@@ -689,6 +690,9 @@ static int serial_post_load(void *opaque, int version_id) - static bool serial_thr_ipending_needed(void *opaque) - { - SerialState *s = opaque; -+ if (migrate_pre_2_2) { -+ return false; -+ } - - if (s->ier & UART_IER_THRI) { - bool expected_value = ((s->iir & UART_IIR_ID) == UART_IIR_THRI); -@@ -770,6 +774,10 @@ static const VMStateDescription vmstate_serial_xmit_fifo = { +@@ -770,6 +771,7 @@ static const VMStateDescription vmstate_serial_xmit_fifo = { static bool serial_fifo_timeout_timer_needed(void *opaque) { SerialState *s = (SerialState *)opaque; -+ if (migrate_pre_2_2) { -+ return false; -+ } + return timer_pending(s->fifo_timeout_timer); } -@@ -787,6 +795,10 @@ static const VMStateDescription vmstate_serial_fifo_timeout_timer = { +@@ -787,6 +789,7 @@ static const VMStateDescription vmstate_serial_fifo_timeout_timer = { static bool serial_timeout_ipending_needed(void *opaque) { SerialState *s = (SerialState *)opaque; -+ if (migrate_pre_2_2) { -+ return false; -+ } + return s->timeout_ipending != 0; } -@@ -804,6 +816,10 @@ static const VMStateDescription vmstate_serial_timeout_ipending = { +@@ -804,6 +807,7 @@ static const VMStateDescription vmstate_serial_timeout_ipending = { static bool serial_poll_needed(void *opaque) { SerialState *s = (SerialState *)opaque; -+ if (migrate_pre_2_2) { -+ return false; -+ } + return s->poll_msl >= 0; } diff --git a/hw/core/machine.c b/hw/core/machine.c -index 40def78183..848e7fdff6 100644 +index 54e040587d..d681a06a47 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c -@@ -36,6 +36,257 @@ +@@ -37,6 +37,165 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-pci.h" @@ -176,6 +128,10 @@ index 40def78183..848e7fdff6 100644 + { "ICH9-LPC", "smm-compat", "on"}, + /* hw_compat_rhel_8_4 from hw_compat_5_2 */ + { "PIIX4_PM", "smm-compat", "on"}, ++ /* 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"}, +}; +const size_t hw_compat_rhel_8_4_len = G_N_ELEMENTS(hw_compat_rhel_8_4); + @@ -197,6 +153,8 @@ index 40def78183..848e7fdff6 100644 + { "nvme", "use-intel-id", "on"}, + /* hw_compat_rhel_8_3 from hw_compat_5_1 */ + { "pvpanic", "events", "1"}, /* PVPANIC_PANICKED */ ++ /* hw_compat_rhel_8_3 from hw_compat_5_1 */ ++ { "pl011", "migrate-clk", "off" }, + /* hw_compat_rhel_8_3 bz 1912846 */ + { "pci-xhci", "x-rh-late-msi-cap", "off" }, + /* hw_compat_rhel_8_3 from hw_compat_5_1 */ @@ -321,107 +279,9 @@ index 40def78183..848e7fdff6 100644 +}; +const size_t hw_compat_rhel_7_6_len = G_N_ELEMENTS(hw_compat_rhel_7_6); + -+/* The same as hw_compat_2_11 + hw_compat_2_10 */ -+GlobalProperty hw_compat_rhel_7_5[] = { -+ /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -+ { "hpet", "hpet-offset-saved", "false" }, -+ /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -+ { "virtio-blk-pci", "vectors", "2" }, -+ /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -+ { "vhost-user-blk-pci", "vectors", "2" }, -+ /* hw_compat_rhel_7_5 from hw_compat_2_11 -+ bz 1608778 modified for our naming */ -+ { "e1000-82540em", "migrate_tso_props", "off" }, -+ /* hw_compat_rhel_7_5 from hw_compat_2_10 */ -+ { "virtio-mouse-device", "wheel-axis", "false" }, -+ /* hw_compat_rhel_7_5 from hw_compat_2_10 */ -+ { "virtio-tablet-device", "wheel-axis", "false" }, -+ { "cirrus-vga", "vgamem_mb", "16" }, -+ { "migration", "decompress-error-check", "off" }, -+}; -+const size_t hw_compat_rhel_7_5_len = G_N_ELEMENTS(hw_compat_rhel_7_5); -+ -+/* Mostly like hw_compat_2_9 except -+ * x-mtu-bypass-backend, x-migrate-msix has already been -+ * backported to RHEL7.4. shpc was already on in 7.4. -+ */ -+GlobalProperty hw_compat_rhel_7_4[] = { -+ { "intel-iommu", "pt", "off" }, -+}; -+ -+const size_t hw_compat_rhel_7_4_len = G_N_ELEMENTS(hw_compat_rhel_7_4); -+/* Mostly like HW_COMPAT_2_6 + HW_COMPAT_2_7 + HW_COMPAT_2_8 except -+ * disable-modern, disable-legacy, page-per-vq have already been -+ * backported to RHEL7.3 -+ */ -+GlobalProperty hw_compat_rhel_7_3[] = { -+ { "virtio-mmio", "format_transport_address", "off" }, -+ { "virtio-serial-device", "emergency-write", "off" }, -+ { "ioapic", "version", "0x11" }, -+ { "intel-iommu", "x-buggy-eim", "true" }, -+ { "virtio-pci", "x-ignore-backend-features", "on" }, -+ { "fw_cfg_mem", "x-file-slots", stringify(0x10) }, -+ { "fw_cfg_io", "x-file-slots", stringify(0x10) }, -+ { "pflash_cfi01", "old-multiple-chip-handling", "on" }, -+ { TYPE_PCI_DEVICE, "x-pcie-extcap-init", "off" }, -+ { "virtio-pci", "x-pcie-deverr-init", "off" }, -+ { "virtio-pci", "x-pcie-lnkctl-init", "off" }, -+ { "virtio-pci", "x-pcie-pm-init", "off" }, -+ { "virtio-net-device", "x-mtu-bypass-backend", "off" }, -+ { "e1000e", "__redhat_e1000e_7_3_intr_state", "on" }, -+}; -+const size_t hw_compat_rhel_7_3_len = G_N_ELEMENTS(hw_compat_rhel_7_3); -+ -+/* Mostly like hw_compat_2_4 + 2_3 but: -+ * we don't need "any_layout" as it has been backported to 7.2 -+ */ -+GlobalProperty hw_compat_rhel_7_2[] = { -+ { "virtio-blk-device", "scsi", "true" }, -+ { "e1000-82540em", "extra_mac_registers", "off" }, -+ { "virtio-pci", "x-disable-pcie", "on" }, -+ { "virtio-pci", "migrate-extra", "off" }, -+ { "fw_cfg_mem", "dma_enabled", "off" }, -+ { "fw_cfg_io", "dma_enabled", "off" }, -+ { "isa-fdc", "fallback", "144" }, -+ /* Optional because not all virtio-pci devices support legacy mode */ -+ { "virtio-pci", "disable-modern", "on", .optional = true }, -+ { "virtio-pci", "disable-legacy", "off", .optional = true }, -+ { TYPE_PCI_DEVICE, "x-pcie-lnksta-dllla", "off" }, -+ { "virtio-pci", "page-per-vq", "on" }, -+ /* hw_compat_rhel_7_2 - introduced with 2.10.0 */ -+ { "migration", "send-section-footer", "off" }, -+ /* hw_compat_rhel_7_2 - introduced with 2.10.0 */ -+ { "migration", "store-global-state", "off", -+ }, -+}; -+const size_t hw_compat_rhel_7_2_len = G_N_ELEMENTS(hw_compat_rhel_7_2); -+ -+/* Mostly like hw_compat_2_1 but: -+ * we don't need virtio-scsi-pci since 7.0 already had that on -+ * -+ * RH: Note, qemu-extended-regs should have been enabled in the 7.1 -+ * machine type, but was accidentally turned off in 7.2 onwards. -+ */ -+GlobalProperty hw_compat_rhel_7_1[] = { -+ { "intel-hda-generic", "old_msi_addr", "on" }, -+ { "VGA", "qemu-extended-regs", "off" }, -+ { "secondary-vga", "qemu-extended-regs", "off" }, -+ { "usb-mouse", "usb_version", stringify(1) }, -+ { "usb-kbd", "usb_version", stringify(1) }, -+ { "virtio-pci", "virtio-pci-bus-master-bug-migration", "on" }, -+ { "virtio-blk-pci", "any_layout", "off" }, -+ { "virtio-balloon-pci", "any_layout", "off" }, -+ { "virtio-serial-pci", "any_layout", "off" }, -+ { "virtio-9p-pci", "any_layout", "off" }, -+ { "virtio-rng-pci", "any_layout", "off" }, -+ /* HW_COMPAT_RHEL7_1 - introduced with 2.10.0 */ -+ { "migration", "send-configuration", "off" }, -+}; -+const size_t hw_compat_rhel_7_1_len = G_N_ELEMENTS(hw_compat_rhel_7_1); -+ - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, + GlobalProperty hw_compat_6_0[] = { + { "gpex-pcihost", "allow-unmapped-accesses", "false" }, + { "i8042", "extended-state", "false"}, diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c index 90851e730b..a91c5d7467 100644 --- a/hw/display/vga-isa.c @@ -436,10 +296,10 @@ index 90851e730b..a91c5d7467 100644 }; diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 46cc951073..62433d8022 100644 +index 30b8bd6ea9..eebb4f3141 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c -@@ -179,6 +179,8 @@ static void pc_init1(MachineState *machine, +@@ -177,6 +177,8 @@ static void pc_init1(MachineState *machine, smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)", mc->name, pcmc->smbios_legacy_mode, pcmc->smbios_uuid_encoded, @@ -449,10 +309,10 @@ index 46cc951073..62433d8022 100644 } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 53450190f5..fce52ca70b 100644 +index 04b4a4788d..e7724fd02c 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c -@@ -198,6 +198,8 @@ static void pc_q35_init(MachineState *machine) +@@ -199,6 +199,8 @@ static void pc_q35_init(MachineState *machine) smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)", mc->name, pcmc->smbios_legacy_mode, pcmc->smbios_uuid_encoded, @@ -461,80 +321,6 @@ index 53450190f5..fce52ca70b 100644 SMBIOS_ENTRY_POINT_21); } -diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c -index a8a77eca95..6d39c1f1c4 100644 ---- a/hw/net/e1000e.c -+++ b/hw/net/e1000e.c -@@ -80,6 +80,11 @@ struct E1000EState { - - E1000ECore core; - -+ /* 7.3 had the intr_state field that was in the original e1000e code -+ * but that was removed prior to 2.7's release -+ */ -+ bool redhat_7_3_intr_state_enable; -+ uint32_t redhat_7_3_intr_state; - }; - - #define E1000E_MMIO_IDX 0 -@@ -95,6 +100,10 @@ struct E1000EState { - #define E1000E_MSIX_TABLE (0x0000) - #define E1000E_MSIX_PBA (0x2000) - -+/* Values as in RHEL 7.3 build and original upstream */ -+#define RH_E1000E_USE_MSI BIT(0) -+#define RH_E1000E_USE_MSIX BIT(1) -+ - static uint64_t - e1000e_mmio_read(void *opaque, hwaddr addr, unsigned size) - { -@@ -306,6 +315,8 @@ e1000e_init_msix(E1000EState *s) - } else { - if (!e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM)) { - msix_uninit(d, &s->msix, &s->msix); -+ } else { -+ s->redhat_7_3_intr_state |= RH_E1000E_USE_MSIX; - } - } - } -@@ -477,6 +488,8 @@ static void e1000e_pci_realize(PCIDevice *pci_dev, Error **errp) - ret = msi_init(PCI_DEVICE(s), 0xD0, 1, true, false, NULL); - if (ret) { - trace_e1000e_msi_init_fail(ret); -+ } else { -+ s->redhat_7_3_intr_state |= RH_E1000E_USE_MSI; - } - - if (e1000e_add_pm_capability(pci_dev, e1000e_pmrb_offset, -@@ -600,6 +613,11 @@ static const VMStateDescription e1000e_vmstate_intr_timer = { - VMSTATE_STRUCT_ARRAY(_f, _s, _num, 0, \ - e1000e_vmstate_intr_timer, E1000IntrDelayTimer) - -+static bool rhel_7_3_check(void *opaque, int version_id) -+{ -+ return ((E1000EState *)opaque)->redhat_7_3_intr_state_enable; -+} -+ - static const VMStateDescription e1000e_vmstate = { - .name = "e1000e", - .version_id = 1, -@@ -611,6 +629,7 @@ static const VMStateDescription e1000e_vmstate = { - VMSTATE_MSIX(parent_obj, E1000EState), - - VMSTATE_UINT32(ioaddr, E1000EState), -+ VMSTATE_UINT32_TEST(redhat_7_3_intr_state, E1000EState, rhel_7_3_check), - VMSTATE_UINT32(core.rxbuf_min_shift, E1000EState), - VMSTATE_UINT8(core.rx_desc_len, E1000EState), - VMSTATE_UINT32_ARRAY(core.rxbuf_sizes, E1000EState, -@@ -659,6 +678,8 @@ static PropertyInfo e1000e_prop_disable_vnet, - - static Property e1000e_properties[] = { - DEFINE_NIC_PROPERTIES(E1000EState, conf), -+ DEFINE_PROP_BOOL("__redhat_e1000e_7_3_intr_state", E1000EState, -+ redhat_7_3_intr_state_enable, false), - DEFINE_PROP_SIGNED("disable_vnet_hdr", E1000EState, disable_vnet, false, - e1000e_prop_disable_vnet, bool), - DEFINE_PROP_SIGNED("subsys_ven", E1000EState, subsys_ven, diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c index 90b4fc63ce..3ffb9dd22c 100644 --- a/hw/net/rtl8139.c @@ -559,34 +345,30 @@ index 90b4fc63ce..3ffb9dd22c 100644 VMSTATE_UINT16(tally_counters.TxUndrn, RTL8139State), diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c -index 5d0fcacd0c..4a2e52031b 100644 +index 4fbafddb22..6c42cc22cd 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c -@@ -44,6 +44,7 @@ +@@ -43,6 +43,7 @@ + #include "qapi/qapi-events-misc-target.h" #include "qapi/visitor.h" - #include "exec/address-spaces.h" #include "hw/rtc/mc146818rtc_regs.h" +#include "migration/migration.h" #ifdef TARGET_I386 #include "qapi/qapi-commands-misc-target.h" -@@ -822,6 +823,11 @@ static int rtc_post_load(void *opaque, int version_id) +@@ -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; + -+ if (migrate_pre_2_2) { -+ return false; -+ } -+ return s->irq_reinject_on_ack_count != 0; } diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c -index f22c4f5b73..a305a4bcea 100644 +index 7397e56737..3a4bb894ba 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c -@@ -56,6 +56,9 @@ static bool smbios_legacy = true; +@@ -57,6 +57,9 @@ static bool smbios_legacy = true; static bool smbios_uuid_encoded = true; /* end: legacy structures & constants for <= 2.0 machines */ @@ -596,7 +378,7 @@ index f22c4f5b73..a305a4bcea 100644 uint8_t *smbios_tables; size_t smbios_tables_len; -@@ -570,7 +573,7 @@ static void smbios_build_type_1_table(void) +@@ -619,7 +622,7 @@ static void smbios_build_type_1_table(void) static void smbios_build_type_2_table(void) { @@ -605,7 +387,7 @@ index f22c4f5b73..a305a4bcea 100644 SMBIOS_TABLE_SET_STR(2, manufacturer_str, type2.manufacturer); SMBIOS_TABLE_SET_STR(2, product_str, type2.product); -@@ -792,7 +795,10 @@ void smbios_set_cpuid(uint32_t version, uint32_t features) +@@ -888,7 +891,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, @@ -617,7 +399,7 @@ index f22c4f5b73..a305a4bcea 100644 { smbios_have_defaults = true; smbios_legacy = legacy_mode; -@@ -813,11 +819,45 @@ void smbios_set_defaults(const char *manufacturer, const char *product, +@@ -909,11 +915,45 @@ void smbios_set_defaults(const char *manufacturer, const char *product, g_free(smbios_entries); } @@ -698,10 +480,10 @@ index 0cb02a6432..962a9622e5 100644 if (s->masterbus) { USBPort *ports[NB_PORTS]; diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c -index 9421734d0f..9bfe236a7d 100644 +index e934b1a5b1..e18b05e528 100644 --- a/hw/usb/hcd-xhci-pci.c +++ b/hw/usb/hcd-xhci-pci.c -@@ -101,6 +101,33 @@ static int xhci_pci_vmstate_post_load(void *opaque, int version_id) +@@ -104,6 +104,33 @@ static int xhci_pci_vmstate_post_load(void *opaque, int version_id) return 0; } @@ -735,7 +517,7 @@ index 9421734d0f..9bfe236a7d 100644 static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) { int ret; -@@ -122,23 +149,12 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) +@@ -125,23 +152,12 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) s->xhci.nec_quirks = true; } @@ -762,7 +544,7 @@ index 9421734d0f..9bfe236a7d 100644 } pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY | -@@ -151,6 +167,14 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) +@@ -154,6 +170,14 @@ static void usb_xhci_pci_realize(struct PCIDevice *dev, Error **errp) assert(ret > 0); } @@ -777,7 +559,7 @@ index 9421734d0f..9bfe236a7d 100644 if (s->msix != ON_OFF_AUTO_OFF) { /* TODO check for errors, and should fail when msix=on */ msix_init(dev, s->xhci.numintrs, -@@ -195,11 +219,18 @@ static void xhci_instance_init(Object *obj) +@@ -198,11 +222,18 @@ static void xhci_instance_init(Object *obj) qdev_alias_all_properties(DEVICE(&s->xhci), obj); } @@ -808,79 +590,11 @@ index c193f79443..086a1feb1e 100644 } XHCIPciState; #endif -diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c -index 46212b1e69..6d1f278aad 100644 ---- a/hw/usb/hcd-xhci.c -+++ b/hw/usb/hcd-xhci.c -@@ -3490,9 +3490,27 @@ static const VMStateDescription vmstate_xhci_slot = { - } - }; - -+static int xhci_event_pre_save(void *opaque) -+{ -+ XHCIEvent *s = opaque; -+ -+ s->cve_2014_5263_a = ((uint8_t *)&s->type)[0]; -+ s->cve_2014_5263_b = ((uint8_t *)&s->type)[1]; -+ -+ return 0; -+} -+ -+bool migrate_cve_2014_5263_xhci_fields; -+ -+static bool xhci_event_cve_2014_5263(void *opaque, int version_id) -+{ -+ return migrate_cve_2014_5263_xhci_fields; -+} -+ - static const VMStateDescription vmstate_xhci_event = { - .name = "xhci-event", - .version_id = 1, -+ .pre_save = xhci_event_pre_save, - .fields = (VMStateField[]) { - VMSTATE_UINT32(type, XHCIEvent), - VMSTATE_UINT32(ccode, XHCIEvent), -@@ -3501,6 +3519,8 @@ static const VMStateDescription vmstate_xhci_event = { - VMSTATE_UINT32(flags, XHCIEvent), - VMSTATE_UINT8(slotid, XHCIEvent), - VMSTATE_UINT8(epid, XHCIEvent), -+ VMSTATE_UINT8_TEST(cve_2014_5263_a, XHCIEvent, xhci_event_cve_2014_5263), -+ VMSTATE_UINT8_TEST(cve_2014_5263_b, XHCIEvent, xhci_event_cve_2014_5263), - VMSTATE_END_OF_LIST() - } - }; -diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h -index 7bba361f3b..f450ffd13b 100644 ---- a/hw/usb/hcd-xhci.h -+++ b/hw/usb/hcd-xhci.h -@@ -149,6 +149,8 @@ typedef struct XHCIEvent { - uint32_t flags; - uint8_t slotid; - uint8_t epid; -+ uint8_t cve_2014_5263_a; -+ uint8_t cve_2014_5263_b; - } XHCIEvent; - - typedef struct XHCIInterrupter { -diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h -index df519e40b5..e1ecfbaf1f 100644 ---- a/include/hw/acpi/ich9.h -+++ b/include/hw/acpi/ich9.h -@@ -62,6 +62,9 @@ typedef struct ICH9LPCPMRegs { - bool smm_compat; - bool enable_tco; - TCOIORegs tco_regs; -+ -+ /* RH addition, see bz 1489800 */ -+ bool force_rev1_fadt; - } ICH9LPCPMRegs; - - #define ACPI_PM_PROP_TCO_ENABLED "enable_tco" diff --git a/include/hw/boards.h b/include/hw/boards.h -index ad6c8fd537..2d7a65724a 100644 +index accd6eff35..f5423f351a 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h -@@ -413,4 +413,37 @@ extern const size_t hw_compat_2_2_len; +@@ -416,4 +416,22 @@ extern const size_t hw_compat_2_2_len; extern GlobalProperty hw_compat_2_1[]; extern const size_t hw_compat_2_1_len; @@ -902,27 +616,12 @@ index ad6c8fd537..2d7a65724a 100644 +extern GlobalProperty hw_compat_rhel_7_6[]; +extern const size_t hw_compat_rhel_7_6_len; + -+extern GlobalProperty hw_compat_rhel_7_5[]; -+extern const size_t hw_compat_rhel_7_5_len; -+ -+extern GlobalProperty hw_compat_rhel_7_4[]; -+extern const size_t hw_compat_rhel_7_4_len; -+ -+extern GlobalProperty hw_compat_rhel_7_3[]; -+extern const size_t hw_compat_rhel_7_3_len; -+ -+extern GlobalProperty hw_compat_rhel_7_2[]; -+extern const size_t hw_compat_rhel_7_2_len; -+ -+extern GlobalProperty hw_compat_rhel_7_1[]; -+extern const size_t hw_compat_rhel_7_1_len; -+ #endif diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h -index 02a0ced0a0..67e38a1b13 100644 +index 5a0dd0c8cf..2cb1ec2bab 100644 --- a/include/hw/firmware/smbios.h +++ b/include/hw/firmware/smbios.h -@@ -267,7 +267,10 @@ void smbios_entry_add(QemuOpts *opts, Error **errp); +@@ -278,7 +278,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, @@ -935,7 +634,7 @@ index 02a0ced0a0..67e38a1b13 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 dcf060b791..93c012ac95 100644 +index 88dffe7517..17ad7bfc3a 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -107,6 +107,9 @@ struct PCMachineClass { @@ -948,47 +647,6 @@ index dcf060b791..93c012ac95 100644 /* RAM / address space compat: */ bool gigabyte_align; -diff --git a/include/hw/usb.h b/include/hw/usb.h -index 436e07b304..edb2cd94b6 100644 ---- a/include/hw/usb.h -+++ b/include/hw/usb.h -@@ -577,4 +577,7 @@ void usb_pcap_init(FILE *fp); - void usb_pcap_ctrl(USBPacket *p, bool setup); - void usb_pcap_data(USBPacket *p, bool setup); - -+/* hcd-xhci.c -- rhel7.0.0 machine type compatibility */ -+extern bool migrate_cve_2014_5263_xhci_fields; -+ - #endif -diff --git a/migration/migration.c b/migration/migration.c -index 8ca034136b..4afc6069b6 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -167,6 +167,8 @@ INITIALIZE_MIGRATE_CAPS_SET(check_caps_background_snapshot, - MIGRATION_CAPABILITY_X_COLO, - MIGRATION_CAPABILITY_VALIDATE_UUID); - -+bool migrate_pre_2_2; -+ - /* When we add fault tolerance, we could have several - migrations at once. For now we don't need to add - dynamic creation of migration */ -diff --git a/migration/migration.h b/migration/migration.h -index db6708326b..1b6c69751c 100644 ---- a/migration/migration.h -+++ b/migration/migration.h -@@ -368,6 +368,11 @@ bool check_dirty_bitmap_mig_alias_map(const BitmapMigrationNodeAliasList *bbm, - void migrate_add_address(SocketAddress *address); - - int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque); -+/* -+ * Disables a load of subsections that were added in 2.2/rh7.2 for backwards -+ * migration compatibility. -+ */ -+extern bool migrate_pre_2_2; - - #define qemu_ram_foreach_block \ - #warning "Use foreach_not_ignored_block in migration code" -- 2.27.0 diff --git a/SOURCES/0007-Add-aarch64-machine-types.patch b/SOURCES/0007-Add-aarch64-machine-types.patch index ae95071..eb79d4f 100644 --- a/SOURCES/0007-Add-aarch64-machine-types.patch +++ b/SOURCES/0007-Add-aarch64-machine-types.patch @@ -1,4 +1,4 @@ -From ee8aeb6b79bde21b581090c479faf10e716a7e6d Mon Sep 17 00:00:00 2001 +From 38c87d1469539d2b5224d298db85b0fd43d8bb0c Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 12:53:31 +0200 Subject: Add aarch64 machine types @@ -7,15 +7,25 @@ Adding changes to add RHEL machine types for aarch64 architecture. Signed-off-by: Miroslav Rezanina --- - hw/arm/virt.c | 211 +++++++++++++++++++++++++++++++++++++++++- +Rebase notes (210623): +- Use CONFIG_TPM check when using TPM structures + +Rebase notes (6.1.0 rc0): +- Add support for default_bus_bypass_iommu + +Merged patches (6.1.0 rc1): +- 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 +--- + hw/arm/virt.c | 210 +++++++++++++++++++++++++++++++++++++++++- include/hw/arm/virt.h | 8 ++ - 2 files changed, 218 insertions(+), 1 deletion(-) + 2 files changed, 217 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index f904d3e98e..080cf54ef1 100644 +index cd1a2d985d..3c8e6de36d 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c -@@ -80,6 +80,7 @@ +@@ -78,6 +78,7 @@ #include "hw/char/pl011.h" #include "qemu/guest-random.h" @@ -23,7 +33,7 @@ index f904d3e98e..080cf54ef1 100644 #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \ static void virt_##major##_##minor##_class_init(ObjectClass *oc, \ void *data) \ -@@ -106,7 +107,48 @@ +@@ -104,7 +105,48 @@ DEFINE_VIRT_MACHINE_LATEST(major, minor, true) #define DEFINE_VIRT_MACHINE(major, minor) \ DEFINE_VIRT_MACHINE_LATEST(major, minor, false) @@ -73,7 +83,7 @@ index f904d3e98e..080cf54ef1 100644 /* Number of external interrupt lines to configure the GIC with */ #define NUM_IRQS 256 -@@ -2113,6 +2155,7 @@ static void machvirt_init(MachineState *machine) +@@ -2117,6 +2159,7 @@ static void machvirt_init(MachineState *machine) qemu_add_machine_init_done_notifier(&vms->machine_done); } @@ -81,7 +91,7 @@ index f904d3e98e..080cf54ef1 100644 static bool virt_get_secure(Object *obj, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -2140,6 +2183,7 @@ static void virt_set_virt(Object *obj, bool value, Error **errp) +@@ -2144,6 +2187,7 @@ static void virt_set_virt(Object *obj, bool value, Error **errp) vms->virt = value; } @@ -89,7 +99,7 @@ index f904d3e98e..080cf54ef1 100644 static bool virt_get_highmem(Object *obj, Error **errp) { -@@ -2237,6 +2281,7 @@ static void virt_set_acpi(Object *obj, Visitor *v, const char *name, +@@ -2241,6 +2285,7 @@ static void virt_set_acpi(Object *obj, Visitor *v, const char *name, visit_type_OnOffAuto(v, name, &vms->acpi, errp); } @@ -97,7 +107,7 @@ index f904d3e98e..080cf54ef1 100644 static bool virt_get_ras(Object *obj, Error **errp) { VirtMachineState *vms = VIRT_MACHINE(obj); -@@ -2264,6 +2309,7 @@ static void virt_set_mte(Object *obj, bool value, Error **errp) +@@ -2268,6 +2313,7 @@ static void virt_set_mte(Object *obj, bool value, Error **errp) vms->mte = value; } @@ -105,7 +115,7 @@ index f904d3e98e..080cf54ef1 100644 static char *virt_get_gic_version(Object *obj, Error **errp) { -@@ -2584,6 +2630,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) +@@ -2603,6 +2649,7 @@ static int virt_kvm_type(MachineState *ms, const char *type_str) return fixed_ipa ? 0 : requested_pa_size; } @@ -113,7 +123,7 @@ index f904d3e98e..080cf54ef1 100644 static void virt_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); -@@ -2910,3 +2957,165 @@ static void virt_machine_2_6_options(MachineClass *mc) +@@ -2948,3 +2995,164 @@ static void virt_machine_2_6_options(MachineClass *mc) vmc->no_pmu = true; } DEFINE_VIRT_MACHINE(2, 6) @@ -128,7 +138,9 @@ index f904d3e98e..080cf54ef1 100644 + mc->init = machvirt_init; + /* Maximum supported VCPU count for all virt-rhel* machines */ + mc->max_cpus = 384; ++#ifdef CONFIG_TPM + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS); ++#endif + mc->block_default_type = IF_VIRTIO; + mc->no_cdrom = 1; + mc->pci_allow_0_address = true; @@ -156,6 +168,18 @@ index f904d3e98e..080cf54ef1 100644 + object_class_property_set_description(oc, "acpi", + "Enable ACPI"); + ++ object_class_property_add_bool(oc, "highmem", virt_get_highmem, ++ virt_set_highmem); ++ object_class_property_set_description(oc, "highmem", ++ "Set on/off to enable/disable using " ++ "physical address space above 32 bits"); ++ ++ object_class_property_add_str(oc, "gic-version", virt_get_gic_version, ++ virt_set_gic_version); ++ object_class_property_set_description(oc, "gic-version", ++ "Set GIC version. " ++ "Valid values are 2, 3, host and max"); ++ + object_class_property_add_str(oc, "x-oem-id", + virt_get_oem_id, + virt_set_oem_id); @@ -164,7 +188,6 @@ index f904d3e98e..080cf54ef1 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); @@ -172,6 +195,13 @@ index f904d3e98e..080cf54ef1 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"); ++ +} + +static void rhel_virt_instance_init(Object *obj) @@ -187,17 +217,7 @@ index f904d3e98e..080cf54ef1 100644 + + /* High memory is enabled by default */ + vms->highmem = true; -+ object_property_add_bool(obj, "highmem", virt_get_highmem, -+ virt_set_highmem); -+ object_property_set_description(obj, "highmem", -+ "Set on/off to enable/disable using " -+ "physical address space above 32 bits"); + vms->gic_version = VIRT_GIC_VERSION_NOSEL; -+ object_property_add_str(obj, "gic-version", virt_get_gic_version, -+ virt_set_gic_version); -+ object_property_set_description(obj, "gic-version", -+ "Set GIC version. " -+ "Valid values are 2, 3, host and max"); + + vms->highmem_ecam = !vmc->no_highmem_ecam; + @@ -226,6 +246,9 @@ index f904d3e98e..080cf54ef1 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; ++ + vms->irqmap = a15irqmap; + + virt_flash_create(vms); @@ -254,36 +277,22 @@ index f904d3e98e..080cf54ef1 100644 +} +type_init(rhel_machine_init); + -+static void rhel840_virt_options(MachineClass *mc) ++static void rhel900_virt_options(MachineClass *mc) +{ + compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); -+ compat_props_add(mc->compat_props, hw_compat_rhel_8_4, hw_compat_rhel_8_4_len); -+} -+DEFINE_RHEL_MACHINE_AS_LATEST(8, 4, 0) -+ -+static void rhel830_virt_options(MachineClass *mc) -+{ -+ VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); -+ -+ rhel840_virt_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_8_3, hw_compat_rhel_8_3_len); -+ vmc->no_kvm_steal_time = true; +} -+DEFINE_RHEL_MACHINE(8, 3, 0) ++DEFINE_RHEL_MACHINE_AS_LATEST(9, 0, 0) + -+static void rhel820_virt_options(MachineClass *mc) ++static void rhel850_virt_options(MachineClass *mc) +{ -+ rhel830_virt_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_8_2, hw_compat_rhel_8_2_len); -+ mc->numa_mem_supported = true; -+ mc->auto_enable_numa_with_memdev = false; ++ rhel900_virt_options(mc); +} -+DEFINE_RHEL_MACHINE(8, 2, 0) ++DEFINE_RHEL_MACHINE(8, 5, 0) diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h -index 921416f918..6c34864a0a 100644 +index 9661c46699..ac21ca712a 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h -@@ -170,9 +170,17 @@ struct VirtMachineState { +@@ -171,9 +171,17 @@ struct VirtMachineState { #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM) diff --git a/SOURCES/0008-Add-ppc64-machine-types.patch b/SOURCES/0008-Add-ppc64-machine-types.patch index 4504703..932a2a8 100644 --- a/SOURCES/0008-Add-ppc64-machine-types.patch +++ b/SOURCES/0008-Add-ppc64-machine-types.patch @@ -1,4 +1,4 @@ -From d70214aa1d8bf7aae9ef3a6bbc04f01735722e3c Mon Sep 17 00:00:00 2001 +From 01fe9632c4dcc7a6ce9c0100db6256e815e6bf87 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 13:27:13 +0200 Subject: Add ppc64 machine types @@ -6,21 +6,32 @@ Subject: Add ppc64 machine types Adding changes to add RHEL machine types for ppc64 architecture. Signed-off-by: Miroslav Rezanina + +Merged patches (6.1.0 RC1): +- c438c25ac3 redhat: Define pseries-rhel8.5.0 machine type + +Merged patches (6.1.0): +- a3995e2eff Remove RHEL 7.0.0 machine type (only ppc64 changes) +- ad3190a79b Remove RHEL 7.1.0 machine type (only ppc64 changes) +- 84bbe15d4e Remove RHEL 7.2.0 machine type (only ppc64 changes) +- 0215eb3356 Remove RHEL 7.3.0 machine types (only ppc64 changes) +- af69d1ca6e Remove RHEL 7.4.0 machine types (only ppc64 changes) +- 8f7a74ab78 Remove RHEL 7.5.0 machine types (only ppc64 changes) --- - hw/ppc/spapr.c | 368 ++++++++++++++++++++++++++++++++++++++++ - hw/ppc/spapr_cpu_core.c | 13 ++ + hw/ppc/spapr.c | 238 +++++++++++++++++++++++++++++++++++++++- + hw/ppc/spapr_cpu_core.c | 13 +++ include/hw/ppc/spapr.h | 4 + - target/ppc/compat.c | 13 +- + target/ppc/compat.c | 13 ++- target/ppc/cpu.h | 1 + - target/ppc/kvm.c | 27 +++ - target/ppc/kvm_ppc.h | 13 ++ - 7 files changed, 438 insertions(+), 1 deletion(-) + target/ppc/kvm.c | 28 +++++ + target/ppc/kvm_ppc.h | 13 +++ + 7 files changed, 307 insertions(+), 3 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index e4be00b732..f9e8dfdfc9 100644 +index 81699d4f8b..1386e45e70 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c -@@ -1568,6 +1568,9 @@ static void spapr_machine_reset(MachineState *machine) +@@ -1592,6 +1592,9 @@ static void spapr_machine_reset(MachineState *machine) pef_kvm_reset(machine->cgs, &error_fatal); spapr_caps_apply(spapr); @@ -30,7 +41,7 @@ index e4be00b732..f9e8dfdfc9 100644 first_ppc_cpu = POWERPC_CPU(first_cpu); if (kvm_enabled() && kvmppc_has_cap_mmu_radix() && -@@ -3254,6 +3257,20 @@ static void spapr_set_host_serial(Object *obj, const char *value, Error **errp) +@@ -3315,6 +3318,20 @@ static void spapr_set_host_serial(Object *obj, const char *value, Error **errp) spapr->host_serial = g_strdup(value); } @@ -51,7 +62,7 @@ index e4be00b732..f9e8dfdfc9 100644 static void spapr_instance_init(Object *obj) { SpaprMachineState *spapr = SPAPR_MACHINE(obj); -@@ -3327,6 +3344,12 @@ static void spapr_instance_init(Object *obj) +@@ -3393,6 +3410,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"); @@ -64,23 +75,23 @@ index e4be00b732..f9e8dfdfc9 100644 } static void spapr_machine_finalizefn(Object *obj) -@@ -4554,6 +4577,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) - smc->smp_threads_vsmt = true; - smc->nr_xirqs = SPAPR_NR_XIRQS; - xfc->match_nvt = spapr_match_nvt; +@@ -4634,6 +4657,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; + smc->has_power9_support = true; } static const TypeInfo spapr_machine_info = { -@@ -4604,6 +4628,7 @@ static void spapr_machine_latest_class_options(MachineClass *mc) +@@ -4685,6 +4709,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.0 + * pseries-6.1 */ -@@ -4694,6 +4719,7 @@ static void spapr_machine_4_1_class_options(MachineClass *mc) +@@ -4786,6 +4811,7 @@ static void spapr_machine_4_1_class_options(MachineClass *mc) } DEFINE_SPAPR_MACHINE(4_1, "4.1", false); @@ -88,7 +99,7 @@ index e4be00b732..f9e8dfdfc9 100644 /* * pseries-4.0 -@@ -4713,6 +4739,8 @@ static bool phb_placement_4_0(SpaprMachineState *spapr, uint32_t index, +@@ -4805,6 +4831,8 @@ static bool phb_placement_4_0(SpaprMachineState *spapr, uint32_t index, *nv2atsd = 0; return true; } @@ -97,7 +108,7 @@ index e4be00b732..f9e8dfdfc9 100644 static void spapr_machine_4_0_class_options(MachineClass *mc) { SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -@@ -4871,6 +4899,7 @@ DEFINE_SPAPR_MACHINE(2_8, "2.8", false); +@@ -4963,6 +4991,7 @@ DEFINE_SPAPR_MACHINE(2_8, "2.8", false); /* * pseries-2.7 */ @@ -105,7 +116,7 @@ index e4be00b732..f9e8dfdfc9 100644 static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index, uint64_t *buid, hwaddr *pio, -@@ -4926,6 +4955,7 @@ static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index, +@@ -5018,6 +5047,7 @@ static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index, return true; } @@ -113,7 +124,7 @@ index e4be00b732..f9e8dfdfc9 100644 static void spapr_machine_2_7_class_options(MachineClass *mc) { SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -@@ -5040,6 +5070,344 @@ static void spapr_machine_2_1_class_options(MachineClass *mc) +@@ -5132,10 +5162,214 @@ 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); @@ -131,19 +142,31 @@ index e4be00b732..f9e8dfdfc9 100644 +} + +/* ++ * pseries-rhel8.5.0 ++ * like pseries-6.0 ++ */ ++ ++static void spapr_machine_rhel850_class_options(MachineClass *mc) ++{ ++ /* The default machine type must apply the RHEL specific defaults */ ++ spapr_machine_rhel_default_class_options(mc); ++} ++ ++DEFINE_SPAPR_MACHINE(rhel850, "rhel8.5.0", true); ++ ++/* + * pseries-rhel8.4.0 + * like pseries-5.2 + */ + +static void spapr_machine_rhel840_class_options(MachineClass *mc) +{ -+ /* The default machine type must apply the RHEL specific defaults */ -+ spapr_machine_rhel_default_class_options(mc); ++ spapr_machine_rhel850_class_options(mc); + compat_props_add(mc->compat_props, hw_compat_rhel_8_4, + hw_compat_rhel_8_4_len); +} + -+DEFINE_SPAPR_MACHINE(rhel840, "rhel8.4.0", true); ++DEFINE_SPAPR_MACHINE(rhel840, "rhel8.4.0", false); + +/* + * pseries-rhel8.3.0 @@ -216,7 +239,8 @@ index e4be00b732..f9e8dfdfc9 100644 + compat_props_add(mc->compat_props, hw_compat_rhel_8_1, + hw_compat_rhel_8_1_len); + compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); -+ + +-static void spapr_machine_register_types(void) + /* from pseries-4.2 */ + smc->default_caps.caps[SPAPR_CAP_CCF_ASSIST] = SPAPR_CAP_OFF; +} @@ -231,7 +255,8 @@ index e4be00b732..f9e8dfdfc9 100644 + */ + +static void spapr_machine_rhel800_class_options(MachineClass *mc) -+{ + { +- type_register_static(&spapr_machine_info); + SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); + + spapr_machine_rhel810_class_options(mc); @@ -249,8 +274,8 @@ index e4be00b732..f9e8dfdfc9 100644 + smc->dr_phb_enabled = false; + smc->broken_host_serial_model = true; + smc->default_caps.caps[SPAPR_CAP_LARGE_DECREMENTER] = SPAPR_CAP_OFF; -+} -+ + } + +DEFINE_SPAPR_MACHINE(rhel800, "rhel8.0.0", false); + +/* @@ -315,149 +340,7 @@ index e4be00b732..f9e8dfdfc9 100644 + +DEFINE_SPAPR_MACHINE(rhel760sxxm, "rhel7.6.0-sxxm", false); + -+static void spapr_machine_rhel750_class_options(MachineClass *mc) -+{ -+ spapr_machine_rhel760_class_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -+ -+} -+ -+DEFINE_SPAPR_MACHINE(rhel750, "rhel7.5.0", false); -+ -+/* -+ * pseries-rhel7.5.0-sxxm -+ * -+ * pseries-rhel7.5.0 with speculative execution exploit mitigations enabled by default -+ */ -+ -+static void spapr_machine_rhel750sxxm_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel750_class_options(mc); -+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; -+} -+ -+DEFINE_SPAPR_MACHINE(rhel750sxxm, "rhel7.5.0-sxxm", false); -+ -+/* -+ * pseries-rhel7.4.0 -+ * like spapr_compat_2_9 -+ */ -+GlobalProperty spapr_compat_rhel7_4[] = { -+ { TYPE_POWERPC_CPU, "pre-2.10-migration", "on" }, -+}; -+const size_t spapr_compat_rhel7_4_len = G_N_ELEMENTS(spapr_compat_rhel7_4); -+ -+static void spapr_machine_rhel740_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel750_class_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -+ compat_props_add(mc->compat_props, spapr_compat_rhel7_4, spapr_compat_rhel7_4_len); -+ smc->has_power9_support = false; -+ smc->pre_2_10_has_unused_icps = true; -+ smc->resize_hpt_default = SPAPR_RESIZE_HPT_DISABLED; -+ smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_ON; -+} -+ -+DEFINE_SPAPR_MACHINE(rhel740, "rhel7.4.0", false); -+ -+/* -+ * pseries-rhel7.4.0-sxxm -+ * -+ * pseries-rhel7.4.0 with speculative execution exploit mitigations enabled by default -+ */ -+ -+static void spapr_machine_rhel740sxxm_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel740_class_options(mc); -+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; -+} -+ -+DEFINE_SPAPR_MACHINE(rhel740sxxm, "rhel7.4.0-sxxm", false); -+ -+/* -+ * pseries-rhel7.3.0 -+ * like spapr_compat_2_6/_2_7/_2_8 but "ddw" has been backported to RHEL7_3 -+ */ -+GlobalProperty spapr_compat_rhel7_3[] = { -+ { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem_win_size", "0xf80000000" }, -+ { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem64_win_size", "0" }, -+ { TYPE_POWERPC_CPU, "pre-2.8-migration", "on" }, -+ { TYPE_SPAPR_PCI_HOST_BRIDGE, "pre-2.8-migration", "on" }, -+ { TYPE_SPAPR_PCI_HOST_BRIDGE, "pcie-extended-configuration-space", "off" }, -+}; -+const size_t spapr_compat_rhel7_3_len = G_N_ELEMENTS(spapr_compat_rhel7_3); -+ -+static void spapr_machine_rhel730_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel740_class_options(mc); -+ mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3"); -+ mc->default_machine_opts = "modern-hotplug-events=off"; -+ compat_props_add(mc->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -+ compat_props_add(mc->compat_props, spapr_compat_rhel7_3, spapr_compat_rhel7_3_len); -+ -+ smc->phb_placement = phb_placement_2_7; -+} -+ -+DEFINE_SPAPR_MACHINE(rhel730, "rhel7.3.0", false); -+ -+/* -+ * pseries-rhel7.3.0-sxxm -+ * -+ * pseries-rhel7.3.0 with speculative execution exploit mitigations enabled by default -+ */ -+ -+static void spapr_machine_rhel730sxxm_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel730_class_options(mc); -+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; -+} -+ -+DEFINE_SPAPR_MACHINE(rhel730sxxm, "rhel7.3.0-sxxm", false); -+ -+/* -+ * pseries-rhel7.2.0 -+ */ -+/* Should be like spapr_compat_2_5 + 2_4 + 2_3, but "dynamic-reconfiguration" -+ * has been backported to RHEL7_2 so we don't need it here. -+ */ -+ -+GlobalProperty spapr_compat_rhel7_2[] = { -+ { "spapr-vlan", "use-rx-buffer-pools", "off" }, -+ { TYPE_SPAPR_PCI_HOST_BRIDGE, "ddw", "off" }, -+}; -+const size_t spapr_compat_rhel7_2_len = G_N_ELEMENTS(spapr_compat_rhel7_2); -+ -+static void spapr_machine_rhel720_class_options(MachineClass *mc) -+{ -+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -+ -+ spapr_machine_rhel730_class_options(mc); -+ smc->use_ohci_by_default = true; -+ mc->has_hotpluggable_cpus = NULL; -+ compat_props_add(mc->compat_props, hw_compat_rhel_7_2, hw_compat_rhel_7_2_len); -+ compat_props_add(mc->compat_props, spapr_compat_rhel7_2, spapr_compat_rhel7_2_len); -+} -+ -+DEFINE_SPAPR_MACHINE(rhel720, "rhel7.2.0", false); - - static void spapr_machine_register_types(void) - { + type_init(spapr_machine_register_types) diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 64178f0f9a..2bff13a6ab 100644 --- a/hw/ppc/spapr_cpu_core.c @@ -497,10 +380,10 @@ index 64178f0f9a..2bff13a6ab 100644 qdev_unrealize(DEVICE(cpu)); return false; diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h -index bf7cab7a2c..54cdde8980 100644 +index 637652ad16..589d1a262c 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h -@@ -143,6 +143,7 @@ struct SpaprMachineClass { +@@ -146,6 +146,7 @@ struct SpaprMachineClass { bool pre_5_1_assoc_refpoints; bool pre_5_2_numa_associativity; @@ -508,9 +391,9 @@ index bf7cab7a2c..54cdde8980 100644 bool (*phb_placement)(SpaprMachineState *spapr, uint32_t index, uint64_t *buid, hwaddr *pio, hwaddr *mmio32, hwaddr *mmio64, -@@ -223,6 +224,9 @@ struct SpaprMachineState { - int fwnmi_machine_check_interlock; - QemuCond fwnmi_machine_check_interlock_cond; +@@ -230,6 +231,9 @@ struct SpaprMachineState { + /* Set by -boot */ + char *boot_device; + /* Secure Guest support via x-svm-allowed */ + bool svm_allowed; @@ -544,10 +427,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 e73416da68..4eb427a601 100644 +index 93d308ac8f..dca9bdf846 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h -@@ -1347,6 +1347,7 @@ static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) +@@ -1378,6 +1378,7 @@ static inline int cpu_mmu_index(CPUPPCState *env, bool ifetch) /* Compatibility modes */ #if defined(TARGET_PPC64) @@ -556,18 +439,18 @@ index e73416da68..4eb427a601 100644 uint32_t min_compat_pvr, uint32_t max_compat_pvr); bool ppc_type_check_compat(const char *cputype, uint32_t compat_pvr, diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c -index 104a308abb..cb0fb67383 100644 +index dc93b99189..0f4f072fbd 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c -@@ -89,6 +89,7 @@ static int cap_ppc_count_cache_flush_assist; - static int cap_ppc_nested_kvm_hv; +@@ -90,6 +90,7 @@ static int cap_ppc_nested_kvm_hv; static int cap_large_decr; static int cap_fwnmi; + static int cap_rpt_invalidate; +static int cap_ppc_secure_guest; static uint32_t debug_inst_opcode; -@@ -136,6 +137,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) +@@ -137,6 +138,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) cap_resize_hpt = kvm_vm_check_extension(s, KVM_CAP_SPAPR_RESIZE_HPT); kvmppc_get_cpu_characteristics(s); cap_ppc_nested_kvm_hv = kvm_vm_check_extension(s, KVM_CAP_PPC_NESTED_HV); @@ -575,10 +458,15 @@ index 104a308abb..cb0fb67383 100644 cap_large_decr = kvmppc_get_dec_bits(); cap_fwnmi = kvm_vm_check_extension(s, KVM_CAP_PPC_FWNMI); /* -@@ -2551,6 +2553,16 @@ int kvmppc_enable_cap_large_decr(PowerPCCPU *cpu, int enable) +@@ -2558,9 +2560,20 @@ int kvmppc_enable_cap_large_decr(PowerPCCPU *cpu, int enable) return 0; } ++<<<<<<< HEAD + int kvmppc_has_cap_rpt_invalidate(void) + { + return cap_rpt_invalidate; ++======= +bool kvmppc_has_cap_secure_guest(void) +{ + return !!cap_ppc_secure_guest; @@ -587,12 +475,11 @@ index 104a308abb..cb0fb67383 100644 +int kvmppc_enable_cap_secure_guest(void) +{ + return kvm_vm_enable_cap(kvm_state, KVM_CAP_PPC_SECURE_GUEST, 0, 1); -+} -+ ++>>>>>>> 89c02f0e37... Add ppc64 machine types + } + PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) - { - uint32_t host_pvr = mfpvr(); -@@ -2947,3 +2959,18 @@ bool kvm_arch_cpu_check_are_resettable(void) +@@ -2959,3 +2972,18 @@ bool kvm_arch_cpu_check_are_resettable(void) { return true; } @@ -612,10 +499,10 @@ index 104a308abb..cb0fb67383 100644 + } +} diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h -index 989f61ace0..2e7a5d3fc1 100644 +index ee9325bf9a..20dbb95989 100644 --- a/target/ppc/kvm_ppc.h +++ b/target/ppc/kvm_ppc.h -@@ -39,6 +39,7 @@ int kvmppc_booke_watchdog_enable(PowerPCCPU *cpu); +@@ -40,6 +40,7 @@ int kvmppc_booke_watchdog_enable(PowerPCCPU *cpu); target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu, bool radix, bool gtse, uint64_t proc_tbl); @@ -623,17 +510,17 @@ index 989f61ace0..2e7a5d3fc1 100644 #ifndef CONFIG_USER_ONLY bool kvmppc_spapr_use_multitce(void); int kvmppc_spapr_enable_inkernel_multitce(void); -@@ -72,6 +73,8 @@ int kvmppc_set_cap_nested_kvm_hv(int enable); - int kvmppc_get_cap_large_decr(void); +@@ -74,6 +75,8 @@ int kvmppc_get_cap_large_decr(void); int kvmppc_enable_cap_large_decr(PowerPCCPU *cpu, int enable); + int kvmppc_has_cap_rpt_invalidate(void); int kvmppc_enable_hwrng(void); +bool kvmppc_has_cap_secure_guest(void); +int kvmppc_enable_cap_secure_guest(void); int kvmppc_put_books_sregs(PowerPCCPU *cpu); PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void); void kvmppc_check_papr_resize_hpt(Error **errp); -@@ -381,6 +384,16 @@ static inline int kvmppc_enable_cap_large_decr(PowerPCCPU *cpu, int enable) - return -1; +@@ -393,6 +396,16 @@ static inline int kvmppc_has_cap_rpt_invalidate(void) + return false; } +static inline bool kvmppc_has_cap_secure_guest(void) diff --git a/SOURCES/0009-Add-s390x-machine-types.patch b/SOURCES/0009-Add-s390x-machine-types.patch index c768dd7..1dda855 100644 --- a/SOURCES/0009-Add-s390x-machine-types.patch +++ b/SOURCES/0009-Add-s390x-machine-types.patch @@ -1,4 +1,4 @@ -From 09eba380295aef0a27d3fbcdda43019ab2898e08 Mon Sep 17 00:00:00 2001 +From 8ae9e40c13f4beb1eedaef46e6b00f562de692e2 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 19 Oct 2018 13:47:32 +0200 Subject: Add s390x machine types @@ -6,15 +6,19 @@ Subject: Add s390x machine types Adding changes to add RHEL machine types for s390x architecture. Signed-off-by: Miroslav Rezanina +-- +Merged patches (6.1.0 RC1): +- 64a9a5c971 hw/s390x: Remove the RHEL7-only machine type +- 395516d62b redhat: s390x: add rhel-8.5.0 compat machine --- - hw/s390x/s390-virtio-ccw.c | 87 +++++++++++++++++++++++++++++++++++++- - 1 file changed, 86 insertions(+), 1 deletion(-) + hw/s390x/s390-virtio-ccw.c | 66 +++++++++++++++++++++++++++++++++++++- + 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 2972b607f3..8df6dd1c71 100644 +index e4b18aef49..9a51dd8de2 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c -@@ -771,7 +771,7 @@ bool css_migration_enabled(void) +@@ -767,7 +767,7 @@ bool css_migration_enabled(void) { \ MachineClass *mc = MACHINE_CLASS(oc); \ ccw_machine_##suffix##_class_options(mc); \ @@ -23,29 +27,40 @@ index 2972b607f3..8df6dd1c71 100644 if (latest) { \ mc->alias = "s390-ccw-virtio"; \ mc->is_default = true; \ -@@ -795,6 +795,7 @@ bool css_migration_enabled(void) +@@ -791,6 +791,7 @@ bool css_migration_enabled(void) } \ type_init(ccw_machine_register_##suffix) +#if 0 /* Disabled for Red Hat Enterprise Linux */ - static void ccw_machine_6_0_instance_options(MachineState *machine) + static void ccw_machine_6_1_instance_options(MachineState *machine) { } -@@ -1071,6 +1072,90 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) +@@ -1082,6 +1083,69 @@ 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_rhel850_instance_options(MachineState *machine) ++{ ++} ++ ++static void ccw_machine_rhel850_class_options(MachineClass *mc) ++{ ++} ++DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); ++ +static void ccw_machine_rhel840_instance_options(MachineState *machine) +{ ++ ccw_machine_rhel850_instance_options(machine); +} + +static void ccw_machine_rhel840_class_options(MachineClass *mc) +{ ++ ccw_machine_rhel850_class_options(mc); + compat_props_add(mc->compat_props, hw_compat_rhel_8_4, hw_compat_rhel_8_4_len); +} -+DEFINE_CCW_MACHINE(rhel840, "rhel8.4.0", true); ++DEFINE_CCW_MACHINE(rhel840, "rhel8.4.0", false); + +static void ccw_machine_rhel820_instance_options(MachineState *machine) +{ @@ -87,38 +102,6 @@ index 2972b607f3..8df6dd1c71 100644 + compat_props_add(mc->compat_props, hw_compat_rhel_7_6, hw_compat_rhel_7_6_len); +} +DEFINE_CCW_MACHINE(rhel760, "rhel7.6.0", false); -+ -+static void ccw_machine_rhel750_instance_options(MachineState *machine) -+{ -+ static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V2_11 }; -+ ccw_machine_rhel760_instance_options(machine); -+ -+ /* before 2.12 we emulated the very first z900, and RHEL 7.5 is -+ based on 2.10 */ -+ s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat); -+ -+ /* bpb and ppa15 were only in the full model in RHEL 7.5 */ -+ s390_cpudef_featoff_greater(11, 1, S390_FEAT_PPA15); -+ s390_cpudef_featoff_greater(11, 1, S390_FEAT_BPB); -+} -+ -+GlobalProperty ccw_compat_rhel_7_5[] = { -+ { -+ .driver = TYPE_SCLP_EVENT_FACILITY, -+ .property = "allow_all_mask_sizes", -+ .value = "off", -+ }, -+}; -+const size_t ccw_compat_rhel_7_5_len = G_N_ELEMENTS(ccw_compat_rhel_7_5); -+ -+static void ccw_machine_rhel750_class_options(MachineClass *mc) -+{ -+ ccw_machine_rhel760_class_options(mc); -+ compat_props_add(mc->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -+ compat_props_add(mc->compat_props, ccw_compat_rhel_7_5, ccw_compat_rhel_7_5_len); -+ S390_CCW_MACHINE_CLASS(mc)->hpage_1m_allowed = false; -+} -+DEFINE_CCW_MACHINE(rhel750, "rhel7.5.0", false); static void ccw_machine_register_types(void) { diff --git a/SOURCES/0010-Add-x86_64-machine-types.patch b/SOURCES/0010-Add-x86_64-machine-types.patch index 28de463..59c7c14 100644 --- a/SOURCES/0010-Add-x86_64-machine-types.patch +++ b/SOURCES/0010-Add-x86_64-machine-types.patch @@ -1,4 +1,4 @@ -From a082c53cc14afcd2ad77262575af50e164e75649 Mon Sep 17 00:00:00 2001 +From afc727ec3b2ad5a5c4033f25a63c877500b0194d 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 @@ -6,37 +6,37 @@ Subject: Add x86_64 machine types Adding changes to add RHEL machine types for x86_64 architecture. Signed-off-by: Miroslav Rezanina + +Rebase notes (210609): +- Update qemu64 cpu spec + +Merged patches (6.1.0 RC1): +- 59c284ad3b x86: Add x86 rhel8.5 machine types +- a8868b42fe redhat: x86: Enable 'kvm-asyncpf-int' by default + +Merged patches (6.1.0): +- a3995e2eff Remove RHEL 7.0.0 machine type (only x86_64 changes) +- ad3190a79b Remove RHEL 7.1.0 machine type (only x86_64 changes) +- 84bbe15d4e Remove RHEL 7.2.0 machine type (only x86_64 changes) +- 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) --- - hw/i386/acpi-build.c | 3 + - hw/i386/pc.c | 277 ++++++++++++++++++++++++++++++++++++- - hw/i386/pc_piix.c | 225 +++++++++++++++++++++++++++++- - hw/i386/pc_q35.c | 214 +++++++++++++++++++++++++++- + 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 | 39 ++++++ - target/i386/cpu.c | 3 +- + include/hw/i386/pc.h | 21 +++++ + target/i386/kvm/kvm-cpu.c | 1 + target/i386/kvm/kvm.c | 4 + tests/qtest/pvpanic-test.c | 5 +- - 9 files changed, 763 insertions(+), 9 deletions(-) + 8 files changed, 385 insertions(+), 7 deletions(-) -diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c -index de98750aef..7bd67f7877 100644 ---- a/hw/i386/acpi-build.c -+++ b/hw/i386/acpi-build.c -@@ -231,6 +231,9 @@ static void acpi_get_pm_info(MachineState *machine, AcpiPmInfo *pm) - pm->fadt.reset_reg = r; - pm->fadt.reset_val = 0xf; - pm->fadt.flags |= 1 << ACPI_FADT_F_RESET_REG_SUP; -+ if (object_property_get_bool(lpc, -+ "__com.redhat_force-rev1-fadt", NULL)) -+ pm->fadt.rev = 1; - pm->cpu_hp_io_base = ICH9_CPU_HOTPLUG_IO_BASE; - pm->smi_on_cpuhp = - !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT)); diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 8a84b25a03..edc02a68ca 100644 +index c2b9d62a35..719cedaa4b 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c -@@ -355,6 +355,275 @@ GlobalProperty pc_compat_1_4[] = { +@@ -362,6 +362,116 @@ GlobalProperty pc_compat_1_4[] = { }; const size_t pc_compat_1_4_len = G_N_ELEMENTS(pc_compat_1_4); @@ -51,9 +51,18 @@ index 8a84b25a03..edc02a68ca 100644 + { TYPE_X86_CPU, "vmx-exit-load-perf-global-ctrl", "off" }, + /* bz 1508330 */ + { "vfio-pci", "x-no-geforce-quirks", "on" }, ++ /* bz 1941397 */ ++ { TYPE_X86_CPU, "kvm-asyncpf-int", "on" }, +}; +const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); + ++GlobalProperty pc_rhel_8_4_compat[] = { ++ /* pc_rhel_8_4_compat from pc_compat_5_2 */ ++ { "ICH9-LPC", "x-smi-cpu-hotunplug", "off" }, ++ { TYPE_X86_CPU, "kvm-asyncpf-int", "off" }, ++}; ++const size_t pc_rhel_8_4_compat_len = G_N_ELEMENTS(pc_rhel_8_4_compat); ++ +GlobalProperty pc_rhel_8_3_compat[] = { + /* pc_rhel_8_3_compat from pc_compat_5_1 */ + { "ICH9-LPC", "x-smi-cpu-hotplug", "off" }, @@ -135,203 +144,24 @@ index 8a84b25a03..edc02a68ca 100644 +}; +const size_t pc_rhel_7_6_compat_len = G_N_ELEMENTS(pc_rhel_7_6_compat); + -+/* Similar to PC_COMPAT_2_11 + PC_COMPAT_2_10, but: -+ * - x-hv-max-vps was backported to 7.5 -+ * - x-pci-hole64-fix was backported to 7.5 -+ */ -+GlobalProperty pc_rhel_7_5_compat[] = { -+ /* pc_rhel_7_5_compat from pc_compat_2_11 */ -+ { "Skylake-Server" "-" TYPE_X86_CPU, "clflushopt", "off" }, -+ /* pc_rhel_7_5_compat from pc_compat_2_12 */ -+ { TYPE_X86_CPU, "legacy-cache", "on" }, -+ /* pc_rhel_7_5_compat from pc_compat_2_12 */ -+ { TYPE_X86_CPU, "topoext", "off" }, -+ /* pc_rhel_7_5_compat from pc_compat_2_12 */ -+ { "EPYC-" TYPE_X86_CPU, "xlevel", stringify(0x8000000a) }, -+ /* pc_rhel_7_5_compat from pc_compat_2_12 */ -+ { "EPYC-IBPB-" TYPE_X86_CPU, "xlevel", stringify(0x8000000a) }, -+}; -+const size_t pc_rhel_7_5_compat_len = G_N_ELEMENTS(pc_rhel_7_5_compat); -+ -+GlobalProperty pc_rhel_7_4_compat[] = { -+ /* pc_rhel_7_4_compat from pc_compat_2_9 */ -+ { "mch", "extended-tseg-mbytes", stringify(0) }, -+ /* bz 1489800 */ -+ { "ICH9-LPC", "__com.redhat_force-rev1-fadt", "on" }, -+ /* pc_rhel_7_4_compat from pc_compat_2_10 */ -+ { "i440FX-pcihost", "x-pci-hole64-fix", "off" }, -+ /* pc_rhel_7_4_compat from pc_compat_2_10 */ -+ { "q35-pcihost", "x-pci-hole64-fix", "off" }, -+ /* pc_rhel_7_4_compat from pc_compat_2_10 */ -+ { TYPE_X86_CPU, "x-hv-max-vps", "0x40" }, -+}; -+const size_t pc_rhel_7_4_compat_len = G_N_ELEMENTS(pc_rhel_7_4_compat); -+ -+GlobalProperty pc_rhel_7_3_compat[] = { -+ /* pc_rhel_7_3_compat from pc_compat_2_8 */ -+ { "kvmclock", "x-mach-use-reliable-get-clock", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { TYPE_X86_CPU, "l3-cache", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { TYPE_X86_CPU, "full-cpuid-auto-level", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { "Opteron_G3" "-" TYPE_X86_CPU, "family", "15" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { "Opteron_G3" "-" TYPE_X86_CPU, "model", "6" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { "Opteron_G3" "-" TYPE_X86_CPU, "stepping", "1" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_7 */ -+ { "isa-pcspk", "migrate", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_6 */ -+ { TYPE_X86_CPU, "cpuid-0xb", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_8 */ -+ { "ICH9-LPC", "x-smi-broadcast", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_8 */ -+ { TYPE_X86_CPU, "vmware-cpuid-freq", "off" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_8 */ -+ { "Haswell-" TYPE_X86_CPU, "stepping", "1" }, -+ /* pc_rhel_7_3_compat from pc_compat_2_3 added in 2.9*/ -+ { TYPE_X86_CPU, "kvm-no-smi-migration", "on" }, -+}; -+const size_t pc_rhel_7_3_compat_len = G_N_ELEMENTS(pc_rhel_7_3_compat); -+ -+GlobalProperty pc_rhel_7_2_compat[] = { -+ { "phenom" "-" TYPE_X86_CPU, "rdtscp", "off"}, -+ { "qemu64" "-" TYPE_X86_CPU, "sse4a", "on" }, -+ { "qemu64" "-" TYPE_X86_CPU, "abm", "on" }, -+ { "Haswell-" TYPE_X86_CPU, "abm", "off" }, -+ { "Haswell-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -+ { "Haswell-noTSX-" TYPE_X86_CPU, "abm", "off" }, -+ { "Haswell-noTSX-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -+ { "Broadwell-" TYPE_X86_CPU, "abm", "off" }, -+ { "Broadwell-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -+ { "Broadwell-noTSX-" TYPE_X86_CPU, "abm", "off" }, -+ { "Broadwell-noTSX-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -+ { "host" "-" TYPE_X86_CPU, "host-cache-info", "on" }, -+ { TYPE_X86_CPU, "check", "off" }, -+ { "qemu32" "-" TYPE_X86_CPU, "popcnt", "on" }, -+ { TYPE_X86_CPU, "arat", "off" }, -+ { "usb-redir", "streams", "off" }, -+ { TYPE_X86_CPU, "fill-mtrr-mask", "off" }, -+ { "apic-common", "legacy-instance-id", "on" }, -+}; -+const size_t pc_rhel_7_2_compat_len = G_N_ELEMENTS(pc_rhel_7_2_compat); -+ -+GlobalProperty pc_rhel_7_1_compat[] = { -+ { "kvm64" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "kvm32" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Conroe" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Penryn" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Nehalem" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Nehalem-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Westmere" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Westmere-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "SandyBridge" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "SandyBridge-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Haswell" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Haswell-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Broadwell" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Broadwell-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Opteron_G1" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Opteron_G2" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Opteron_G3" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Opteron_G4" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Opteron_G5" "-" TYPE_X86_CPU, "vme", "off" }, -+ { "Haswell" "-" TYPE_X86_CPU, "f16c", "off" }, -+ { "Haswell-IBRS" "-" TYPE_X86_CPU, "f16c", "off" }, -+ { "Haswell" "-" TYPE_X86_CPU, "rdrand", "off" }, -+ { "Haswell-IBRS" "-" TYPE_X86_CPU, "rdrand", "off" }, -+ { "Broadwell" "-" TYPE_X86_CPU, "f16c", "off" }, -+ { "Broadwell-IBRS" "-" TYPE_X86_CPU, "f16c", "off" }, -+ { "Broadwell" "-" TYPE_X86_CPU, "rdrand", "off" }, -+ { "Broadwell-IBRS" "-" TYPE_X86_CPU, "rdrand", "off" }, -+ { "coreduo" "-" TYPE_X86_CPU, "vmx", "on" }, -+ { "core2duo" "-" TYPE_X86_CPU, "vmx", "on" }, -+ { "qemu64" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -+ { "kvm64" "-" TYPE_X86_CPU, "min-level", stringify(5) }, -+ { "pentium3" "-" TYPE_X86_CPU, "min-level", stringify(2) }, -+ { "n270" "-" TYPE_X86_CPU, "min-level", stringify(5) }, -+ { "Conroe" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -+ { "Penryn" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -+ { "Nehalem" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -+ { "n270" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Penryn" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Conroe" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Nehalem" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Westmere" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "SandyBridge" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "IvyBridge" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Haswell" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Haswell-noTSX" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Broadwell" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+ { "Broadwell-noTSX" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -+}; -+const size_t pc_rhel_7_1_compat_len = G_N_ELEMENTS(pc_rhel_7_1_compat); -+ +/* + * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine + * types as the PC_COMPAT_* do for upstream types. + * PC_RHEL_7_*_COMPAT apply both to i440fx and q35 types. + */ + -+/* -+ * RHEL-7 is based on QEMU 1.5.3, so this needs the PC_COMPAT_* -+ * between our base and 1.5, less stuff backported to RHEL-7.0 -+ * (usb-device.msos-desc), less stuff for devices we changed -+ * (qemu64-x86_64-cpu) or don't support (hpet, pci-serial-2x, -+ * pci-serial-4x) in 7.0. -+ */ -+GlobalProperty pc_rhel_7_0_compat[] = { -+ { "virtio-scsi-pci", "any_layout", "off" }, -+ { "PIIX4_PM", "memory-hotplug-support", "off" }, -+ { "apic", "version", stringify(0x11) }, -+ { "nec-usb-xhci", "superspeed-ports-first", "off" }, -+ { "nec-usb-xhci", "force-pcie-endcap", "on" }, -+ { "pci-serial", "prog_if", stringify(0) }, -+ { "virtio-net-pci", "guest_announce", "off" }, -+ { "ICH9-LPC", "memory-hotplug-support", "off" }, -+ { "xio3130-downstream", COMPAT_PROP_PCP, "off" }, -+ { "ioh3420", COMPAT_PROP_PCP, "off" }, -+ { "PIIX4_PM", "acpi-pci-hotplug-with-bridge-support", "off" }, -+ { "e1000", "mitigation", "off" }, -+ { "virtio-net-pci", "ctrl_guest_offloads", "off" }, -+ { "Conroe" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Penryn" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Nehalem" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Nehalem-IBRS" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Westmere" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Westmere-IBRS" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Opteron_G1" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Opteron_G2" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Opteron_G3" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Opteron_G4" "-" TYPE_X86_CPU, "x2apic", "on" }, -+ { "Opteron_G5" "-" TYPE_X86_CPU, "x2apic", "on" }, -+}; -+const size_t pc_rhel_7_0_compat_len = G_N_ELEMENTS(pc_rhel_7_0_compat); -+ GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled) { GSIState *s; -@@ -952,7 +1221,8 @@ void pc_memory_init(PCMachineState *pcms, - option_rom_mr = g_malloc(sizeof(*option_rom_mr)); - memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE, - &error_fatal); -- if (pcmc->pci_enabled) { -+ /* RH difference: See bz 1489800, explicitly make ROM ro */ -+ if (pcmc->pc_rom_ro) { - memory_region_set_readonly(option_rom_mr, true); - } - memory_region_add_subregion_overlap(rom_memory, -@@ -1702,6 +1972,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) +@@ -1713,6 +1823,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); -+ pcmc->pc_rom_ro = true; + mc->async_pf_vmexit_disable = false; 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; -@@ -1713,7 +1985,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) +@@ -1724,7 +1835,8 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) mc->default_boot_order = "cad"; mc->smp_parse = pc_smp_parse; mc->block_default_type = IF_IDE; @@ -342,10 +172,10 @@ index 8a84b25a03..edc02a68ca 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 62433d8022..d9c5df16d8 100644 +index eebb4f3141..19d6721f3d 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c -@@ -54,6 +54,7 @@ +@@ -51,6 +51,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "sysemu/xen.h" @@ -353,7 +183,7 @@ index 62433d8022..d9c5df16d8 100644 #ifdef CONFIG_XEN #include #include "hw/xen/xen_pt.h" -@@ -176,8 +177,8 @@ static void pc_init1(MachineState *machine, +@@ -174,8 +175,8 @@ static void pc_init1(MachineState *machine, if (pcmc->smbios_defaults) { MachineClass *mc = MACHINE_GET_CLASS(machine); /* These values are guest ABI, do not change */ @@ -364,7 +194,7 @@ index 62433d8022..d9c5df16d8 100644 pcmc->smbios_uuid_encoded, pcmc->smbios_stream_product, pcmc->smbios_stream_version, -@@ -316,6 +317,7 @@ static void pc_init1(MachineState *machine, +@@ -314,6 +315,7 @@ static void pc_init1(MachineState *machine, * hw_compat_*, pc_compat_*, or * pc_*_machine_options(). */ @@ -372,7 +202,7 @@ index 62433d8022..d9c5df16d8 100644 static void pc_compat_2_3_fn(MachineState *machine) { X86MachineState *x86ms = X86_MACHINE(machine); -@@ -927,3 +929,222 @@ static void xenfv_3_1_machine_options(MachineClass *m) +@@ -937,3 +939,65 @@ 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 @@ -418,6 +248,8 @@ index 62433d8022..d9c5df16d8 100644 + pcmc->pci_root_uid = 1; + 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, ++ pc_rhel_8_4_compat_len); + compat_props_add(m->compat_props, hw_compat_rhel_8_3, + hw_compat_rhel_8_3_len); + compat_props_add(m->compat_props, pc_rhel_8_3_compat, @@ -436,170 +268,11 @@ index 62433d8022..d9c5df16d8 100644 + +DEFINE_PC_MACHINE(rhel760, "pc-i440fx-rhel7.6.0", pc_init_rhel760, + pc_machine_rhel760_options); -+ -+static void pc_init_rhel750(MachineState *machine) -+{ -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel750_options(MachineClass *m) -+{ -+ pc_machine_rhel760_options(m); -+ m->alias = NULL; -+ m->is_default = 0; -+ m->desc = "RHEL 7.5.0 PC (i440FX + PIIX, 1996)"; -+ m->auto_enable_numa_with_memhp = false; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -+ compat_props_add(m->compat_props, pc_rhel_7_5_compat, pc_rhel_7_5_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel750, "pc-i440fx-rhel7.5.0", pc_init_rhel750, -+ pc_machine_rhel750_options); -+ -+static void pc_init_rhel740(MachineState *machine) -+{ -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel740_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_machine_rhel750_options(m); -+ m->desc = "RHEL 7.4.0 PC (i440FX + PIIX, 1996)"; -+ pcmc->pc_rom_ro = false; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -+ compat_props_add(m->compat_props, pc_rhel_7_4_compat, pc_rhel_7_4_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel740, "pc-i440fx-rhel7.4.0", pc_init_rhel740, -+ pc_machine_rhel740_options); -+ -+static void pc_init_rhel730(MachineState *machine) -+{ -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel730_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_machine_rhel740_options(m); -+ m->desc = "RHEL 7.3.0 PC (i440FX + PIIX, 1996)"; -+ pcmc->linuxboot_dma_enabled = false; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -+ compat_props_add(m->compat_props, pc_rhel_7_3_compat, pc_rhel_7_3_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel730, "pc-i440fx-rhel7.3.0", pc_init_rhel730, -+ pc_machine_rhel730_options); -+ -+ -+static void pc_init_rhel720(MachineState *machine) -+{ -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel720_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ X86MachineClass *x86mc = X86_MACHINE_CLASS(m); -+ pc_machine_rhel730_options(m); -+ m->desc = "RHEL 7.2.0 PC (i440FX + PIIX, 1996)"; -+ /* From pc_i440fx_2_5_machine_options */ -+ x86mc->save_tsc_khz = false; -+ m->legacy_fw_cfg_order = 1; -+ /* Note: broken_reserved_end was already in 7.2 */ -+ /* From pc_i440fx_2_6_machine_options */ -+ pcmc->legacy_cpu_hotplug = true; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_2, hw_compat_rhel_7_2_len); -+ compat_props_add(m->compat_props, pc_rhel_7_2_compat, pc_rhel_7_2_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel720, "pc-i440fx-rhel7.2.0", pc_init_rhel720, -+ pc_machine_rhel720_options); -+ -+static void pc_compat_rhel710(MachineState *machine) -+{ -+ PCMachineState *pcms = PC_MACHINE(machine); -+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); -+ -+ /* From pc_compat_2_2 */ -+ pcmc->rsdp_in_ram = false; -+ machine->suppress_vmdesc = true; -+ -+ /* From pc_compat_2_1 */ -+ pcmc->smbios_uuid_encoded = false; -+ x86_cpu_change_kvm_default("svm", NULL); -+ pcmc->enforce_aligned_dimm = false; -+ -+ /* Disable all the extra subsections that were added in 2.2 */ -+ migrate_pre_2_2 = true; -+ -+ /* From pc_i440fx_2_4_machine_options */ -+ pcmc->broken_reserved_end = true; -+} -+ -+static void pc_init_rhel710(MachineState *machine) -+{ -+ pc_compat_rhel710(machine); -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel710_options(MachineClass *m) -+{ -+ pc_machine_rhel720_options(m); -+ m->family = "pc_piix_Y"; -+ m->desc = "RHEL 7.1.0 PC (i440FX + PIIX, 1996)"; -+ m->default_display = "cirrus"; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_1, hw_compat_rhel_7_1_len); -+ compat_props_add(m->compat_props, pc_rhel_7_1_compat, pc_rhel_7_1_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel710, "pc-i440fx-rhel7.1.0", pc_init_rhel710, -+ pc_machine_rhel710_options); -+ -+static void pc_compat_rhel700(MachineState *machine) -+{ -+ PCMachineState *pcms = PC_MACHINE(machine); -+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); -+ -+ pc_compat_rhel710(machine); -+ -+ /* Upstream enables it for everyone, we're a little more selective */ -+ x86_cpu_change_kvm_default("x2apic", NULL); -+ x86_cpu_change_kvm_default("svm", NULL); -+ pcmc->legacy_acpi_table_size = 6418; /* see pc_compat_2_0() */ -+ pcmc->smbios_legacy_mode = true; -+ pcmc->has_reserved_memory = false; -+ migrate_cve_2014_5263_xhci_fields = true; -+} -+ -+static void pc_init_rhel700(MachineState *machine) -+{ -+ pc_compat_rhel700(machine); -+ pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -+ TYPE_I440FX_PCI_DEVICE); -+} -+ -+static void pc_machine_rhel700_options(MachineClass *m) -+{ -+ pc_machine_rhel710_options(m); -+ m->family = "pc_piix_Y"; -+ m->desc = "RHEL 7.0.0 PC (i440FX + PIIX, 1996)"; -+ compat_props_add(m->compat_props, pc_rhel_7_0_compat, pc_rhel_7_0_compat_len); -+} -+ -+DEFINE_PC_MACHINE(rhel700, "pc-i440fx-rhel7.0.0", pc_init_rhel700, -+ pc_machine_rhel700_options); diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index fce52ca70b..44109e4876 100644 +index e7724fd02c..8032babda5 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c -@@ -195,8 +195,8 @@ static void pc_q35_init(MachineState *machine) +@@ -196,8 +196,8 @@ static void pc_q35_init(MachineState *machine) if (pcmc->smbios_defaults) { /* These values are guest ABI, do not change */ @@ -610,7 +283,7 @@ index fce52ca70b..44109e4876 100644 pcmc->smbios_uuid_encoded, pcmc->smbios_stream_product, pcmc->smbios_stream_version, -@@ -327,6 +327,7 @@ static void pc_q35_init(MachineState *machine) +@@ -337,6 +337,7 @@ static void pc_q35_init(MachineState *machine) DEFINE_PC_MACHINE(suffix, name, pc_init_##suffix, optionfn) @@ -618,7 +291,7 @@ index fce52ca70b..44109e4876 100644 static void pc_q35_machine_options(MachineClass *m) { PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -@@ -581,3 +582,212 @@ static void pc_q35_2_4_machine_options(MachineClass *m) +@@ -602,3 +603,175 @@ 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); @@ -647,6 +320,24 @@ index fce52ca70b..44109e4876 100644 + compat_props_add(m->compat_props, pc_rhel_compat, pc_rhel_compat_len); +} + ++static void pc_q35_init_rhel850(MachineState *machine) ++{ ++ pc_q35_init(machine); ++} ++ ++static void pc_q35_machine_rhel850_options(MachineClass *m) ++{ ++ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); ++ pc_q35_machine_rhel_options(m); ++ m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; ++ pcmc->smbios_stream_product = "RHEL-AV"; ++ pcmc->smbios_stream_version = "8.5.0"; ++} ++ ++DEFINE_PC_MACHINE(q35_rhel850, "pc-q35-rhel8.5.0", pc_q35_init_rhel850, ++ pc_q35_machine_rhel850_options); ++ ++ +static void pc_q35_init_rhel840(MachineState *machine) +{ + pc_q35_init(machine); @@ -655,12 +346,15 @@ index fce52ca70b..44109e4876 100644 +static void pc_q35_machine_rhel840_options(MachineClass *m) +{ + PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel_options(m); ++ pc_q35_machine_rhel850_options(m); + m->desc = "RHEL-8.4.0 PC (Q35 + ICH9, 2009)"; ++ m->alias = NULL; + pcmc->smbios_stream_product = "RHEL-AV"; + pcmc->smbios_stream_version = "8.4.0"; + 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, ++ pc_rhel_8_4_compat_len); +} + +DEFINE_PC_MACHINE(q35_rhel840, "pc-q35-rhel8.4.0", pc_q35_init_rhel840, @@ -677,7 +371,6 @@ index fce52ca70b..44109e4876 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, @@ -774,68 +467,11 @@ index fce52ca70b..44109e4876 100644 + +DEFINE_PC_MACHINE(q35_rhel760, "pc-q35-rhel7.6.0", pc_q35_init_rhel760, + pc_q35_machine_rhel760_options); -+ -+static void pc_q35_init_rhel750(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel750_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel760_options(m); -+ m->alias = NULL; -+ m->desc = "RHEL-7.5.0 PC (Q35 + ICH9, 2009)"; -+ m->auto_enable_numa_with_memhp = false; -+ pcmc->default_nic_model = "e1000"; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -+ compat_props_add(m->compat_props, pc_rhel_7_5_compat, pc_rhel_7_5_compat_len); -+} -+ -+DEFINE_PC_MACHINE(q35_rhel750, "pc-q35-rhel7.5.0", pc_q35_init_rhel750, -+ pc_q35_machine_rhel750_options); -+ -+static void pc_q35_init_rhel740(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel740_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel750_options(m); -+ m->desc = "RHEL-7.4.0 PC (Q35 + ICH9, 2009)"; -+ pcmc->pc_rom_ro = false; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -+ compat_props_add(m->compat_props, pc_rhel_7_4_compat, pc_rhel_7_4_compat_len); -+} -+ -+DEFINE_PC_MACHINE(q35_rhel740, "pc-q35-rhel7.4.0", pc_q35_init_rhel740, -+ pc_q35_machine_rhel740_options); -+ -+static void pc_q35_init_rhel730(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel730_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel740_options(m); -+ m->desc = "RHEL-7.3.0 PC (Q35 + ICH9, 2009)"; -+ m->max_cpus = 255; -+ pcmc->linuxboot_dma_enabled = false; -+ compat_props_add(m->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -+ compat_props_add(m->compat_props, pc_rhel_7_3_compat, pc_rhel_7_3_compat_len); -+} -+ -+DEFINE_PC_MACHINE(q35_rhel730, "pc-q35-rhel7.3.0", pc_q35_init_rhel730, -+ pc_q35_machine_rhel730_options); diff --git a/include/hw/boards.h b/include/hw/boards.h -index 2d7a65724a..90ae100bfc 100644 +index f5423f351a..a2b1681027 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h -@@ -243,6 +243,8 @@ struct MachineClass { +@@ -242,6 +242,8 @@ struct MachineClass { strList *allowed_dynamic_sysbus_devices; bool auto_enable_numa_with_memhp; bool auto_enable_numa_with_memdev; @@ -845,26 +481,19 @@ index 2d7a65724a..90ae100bfc 100644 bool smbus_no_migration_support; bool nvdimm_supported; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 93c012ac95..79a7803a2f 100644 +index 17ad7bfc3a..75b338d66d 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h -@@ -128,6 +128,9 @@ struct PCMachineClass { - - /* create kvmclock device even when KVM PV features are not exposed */ - bool kvmclock_create_always; -+ -+ /* RH only, see bz 1489800 */ -+ bool pc_rom_ro; - }; - - #define TYPE_PC_MACHINE "generic-pc-machine" -@@ -275,6 +278,42 @@ extern const size_t pc_compat_1_5_len; +@@ -277,6 +277,27 @@ 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_4_compat[]; ++extern const size_t pc_rhel_8_4_compat_len; ++ +extern GlobalProperty pc_rhel_8_3_compat[]; +extern const size_t pc_rhel_8_3_compat_len; + @@ -880,41 +509,14 @@ index 93c012ac95..79a7803a2f 100644 +extern GlobalProperty pc_rhel_7_6_compat[]; +extern const size_t pc_rhel_7_6_compat_len; + -+extern GlobalProperty pc_rhel_7_5_compat[]; -+extern const size_t pc_rhel_7_5_compat_len; -+ -+extern GlobalProperty pc_rhel_7_4_compat[]; -+extern const size_t pc_rhel_7_4_compat_len; -+ -+extern GlobalProperty pc_rhel_7_3_compat[]; -+extern const size_t pc_rhel_7_3_compat_len; -+ -+extern GlobalProperty pc_rhel_7_2_compat[]; -+extern const size_t pc_rhel_7_2_compat_len; -+ -+extern GlobalProperty pc_rhel_7_1_compat[]; -+extern const size_t pc_rhel_7_1_compat_len; -+ -+extern GlobalProperty pc_rhel_7_0_compat[]; -+extern const size_t pc_rhel_7_0_compat_len; -+ /* Helper for setting model-id for CPU models that changed model-id * depending on QEMU versions up to QEMU 2.4. */ -diff --git a/target/i386/cpu.c b/target/i386/cpu.c -index ad99cad0e7..c30bb2a6b0 100644 ---- a/target/i386/cpu.c -+++ b/target/i386/cpu.c -@@ -1882,7 +1882,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - .level = 0xd, - .vendor = CPUID_VENDOR_AMD, - .family = 6, -- .model = 6, -+ .model = 13, - .stepping = 3, - .features[FEAT_1_EDX] = - PPRO_FEATURES | -@@ -4264,6 +4264,7 @@ static PropValue kvm_default_props[] = { +diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c +index d95028018e..7b004065ae 100644 +--- a/target/i386/kvm/kvm-cpu.c ++++ b/target/i386/kvm/kvm-cpu.c +@@ -131,6 +131,7 @@ static PropValue kvm_default_props[] = { { "acpi", "off" }, { "monitor", "off" }, { "svm", "off" }, @@ -923,10 +525,10 @@ index ad99cad0e7..c30bb2a6b0 100644 }; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c -index 7fe9f52710..4c69c2cb4b 100644 +index e69abe48e3..4a3077b3f0 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c -@@ -3181,6 +3181,7 @@ static int kvm_get_msrs(X86CPU *cpu) +@@ -3261,6 +3261,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; @@ -934,7 +536,7 @@ index 7fe9f52710..4c69c2cb4b 100644 kvm_msr_buf_reset(cpu); -@@ -3499,6 +3500,9 @@ static int kvm_get_msrs(X86CPU *cpu) +@@ -3579,6 +3580,9 @@ static int kvm_get_msrs(X86CPU *cpu) break; case MSR_KVM_ASYNC_PF_EN: env->async_pf_en_msr = msrs[i].data; diff --git a/SOURCES/0011-Enable-make-check.patch b/SOURCES/0011-Enable-make-check.patch index b3af9a8..ce8ef90 100644 --- a/SOURCES/0011-Enable-make-check.patch +++ b/SOURCES/0011-Enable-make-check.patch @@ -1,4 +1,4 @@ -From 5f6a55a218029af944a8d02ab9264647315890d3 Mon Sep 17 00:00:00 2001 +From e05f30c4899bfec4084cda3223e7141ddc97be6f Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Wed, 2 Sep 2020 09:39:41 +0200 Subject: Enable make check @@ -8,24 +8,27 @@ make check run during build. Signed-off-by: Miroslav Rezanina --- - redhat/qemu-kvm.spec.template | 6 ++---- +Rebase changes (6.1.0): +- removed unnecessary test changes + +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/e1000-test.c | 2 ++ tests/qtest/fuzz-e1000e-test.c | 2 +- tests/qtest/fuzz-virtio-scsi-test.c | 2 +- tests/qtest/hd-geo-test.c | 4 ++++ - tests/qtest/libqos/meson.build | 2 +- tests/qtest/lpc-ich9-test.c | 2 +- tests/qtest/meson.build | 11 +++-------- tests/qtest/prom-env-test.c | 4 ++++ tests/qtest/test-x86-cpuid-compat.c | 2 ++ tests/qtest/usb-hcd-xhci-test.c | 4 ++++ - tests/unit/meson.build | 2 +- - 17 files changed, 44 insertions(+), 27 deletions(-) + 14 files changed, 40 insertions(+), 24 deletions(-) diff --git a/tests/qemu-iotests/051 b/tests/qemu-iotests/051 index 7bf29343d7..fd63402d78 100755 @@ -56,10 +59,10 @@ index 7bf29343d7..fd63402d78 100755 *) ;; diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c -index 156d4174aa..b4a1074b77 100644 +index 51d3a4e239..fe01fd8b7d 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c -@@ -1299,7 +1299,7 @@ static void test_acpi_virt_tcg_numamem(void) +@@ -1303,7 +1303,7 @@ static void test_acpi_virt_tcg_numamem(void) free_test_data(&data); } @@ -68,7 +71,7 @@ index 156d4174aa..b4a1074b77 100644 static void test_acpi_virt_tcg_pxb(void) { test_data data = { -@@ -1331,7 +1331,7 @@ static void test_acpi_virt_tcg_pxb(void) +@@ -1335,7 +1335,7 @@ static void test_acpi_virt_tcg_pxb(void) free_test_data(&data); } @@ -77,7 +80,7 @@ index 156d4174aa..b4a1074b77 100644 static void test_acpi_tcg_acpi_hmat(const char *machine) { test_data data; -@@ -1561,7 +1561,7 @@ int main(int argc, char *argv[]) +@@ -1565,7 +1565,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); @@ -87,10 +90,10 @@ index 156d4174aa..b4a1074b77 100644 } ret = g_test_run(); diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c -index d74509b1c5..a64c55e384 100644 +index 96849cec91..81df62e01a 100644 --- a/tests/qtest/boot-serial-test.c +++ b/tests/qtest/boot-serial-test.c -@@ -120,19 +120,23 @@ static testdef_t tests[] = { +@@ -148,19 +148,23 @@ static testdef_t tests[] = { { "ppc", "g3beige", "", "PowerPC,750" }, { "ppc", "mac99", "", "PowerPC,G4" }, { "ppc", "sam460ex", "-m 256", "DRAM: 256 MiB" }, @@ -166,22 +169,6 @@ index a1c689414b..a8f076711c 100644 return; } data = g_new(PlugTestData, 1); -diff --git a/tests/qtest/e1000-test.c b/tests/qtest/e1000-test.c -index ea286d1793..a1847ac8ed 100644 ---- a/tests/qtest/e1000-test.c -+++ b/tests/qtest/e1000-test.c -@@ -22,9 +22,11 @@ struct QE1000 { - - static const char *models[] = { - "e1000", -+#if 0 /* Disabled for Red Hat Enterprise Linux */ - "e1000-82540em", - "e1000-82544gc", - "e1000-82545em", -+#endif - }; - - static void *e1000_get_driver(void *obj, const char *interface) 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 @@ -209,7 +196,7 @@ index aaf6d10e18..43727d62ac 100644 qtest_outl(s, 0xcf8, 0x80001811); diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c -index f7b7cfbc2d..99cccf8638 100644 +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) @@ -240,19 +227,6 @@ index f7b7cfbc2d..99cccf8638 100644 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/libqos/meson.build b/tests/qtest/libqos/meson.build -index 1cddf5bdaa..2f4a564105 100644 ---- a/tests/qtest/libqos/meson.build -+++ b/tests/qtest/libqos/meson.build -@@ -41,7 +41,7 @@ libqos_srcs = files('../libqtest.c', - 'virtio-serial.c', - - # qgraph machines: -- 'aarch64-xlnx-zcu102-machine.c', -+# 'aarch64-xlnx-zcu102-machine.c', - 'arm-imx25-pdk-machine.c', - 'arm-n800-machine.c', - 'arm-raspi2-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 @@ -267,10 +241,10 @@ index fe0bef9980..7a9d51579b 100644 qtest_outl(s, 0xcf8, 0x8000f840); /* PMBASE */ diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build -index 0c76738921..b9a7426a7b 100644 +index 2bc3efd49f..53ce4b6416 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build -@@ -71,7 +71,6 @@ qtests_i386 = \ +@@ -73,7 +73,6 @@ qtests_i386 = \ 'ide-test', 'hd-geo-test', 'boot-order-test', @@ -278,7 +252,7 @@ index 0c76738921..b9a7426a7b 100644 'rtc-test', 'i440fx-test', 'fw_cfg-test', -@@ -79,7 +78,6 @@ qtests_i386 = \ +@@ -81,7 +80,6 @@ qtests_i386 = \ 'drive_del-test', 'tco-test', 'cpu-plug-test', @@ -286,7 +260,7 @@ index 0c76738921..b9a7426a7b 100644 'vmgenid-test', 'migration-test', 'test-x86-cpuid-compat', -@@ -130,17 +128,15 @@ qtests_moxie = [ 'boot-serial-test' ] +@@ -130,17 +128,15 @@ qtests_mips64el = \ qtests_ppc = \ (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) + \ @@ -306,7 +280,7 @@ index 0c76738921..b9a7426a7b 100644 qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test'] qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) -@@ -183,7 +179,7 @@ qtests_aarch64 = \ +@@ -186,7 +182,7 @@ qtests_aarch64 = \ ['arm-cpu-features', 'numa-test', 'boot-serial-test', @@ -315,7 +289,7 @@ index 0c76738921..b9a7426a7b 100644 'migration-test'] qtests_s390x = \ -@@ -192,7 +188,6 @@ qtests_s390x = \ +@@ -195,7 +191,6 @@ qtests_s390x = \ (config_host.has_key('CONFIG_POSIX') ? ['test-filter-redirector'] : []) + \ ['boot-serial-test', 'drive_del-test', @@ -392,19 +366,6 @@ index 10ef9d2a91..3855873050 100644 qtest_add_func("/xhci/pci/hotplug/usb-ccid", test_usb_ccid_hotplug); qtest_start("-device nec-usb-xhci,id=xhci" -diff --git a/tests/unit/meson.build b/tests/unit/meson.build -index b3bc2109da..244d35f5d4 100644 ---- a/tests/unit/meson.build -+++ b/tests/unit/meson.build -@@ -65,7 +65,7 @@ if have_block - 'test-blockjob': [testblock], - 'test-blockjob-txn': [testblock], - 'test-block-backend': [testblock], -- 'test-block-iothread': [testblock], -+# 'test-block-iothread': [testblock], - 'test-write-threshold': [testblock], - 'test-crypto-hash': [crypto], - 'test-crypto-hmac': [crypto], -- 2.27.0 diff --git a/SOURCES/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch b/SOURCES/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch index 45abe27..0186f8a 100644 --- a/SOURCES/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch +++ b/SOURCES/0012-vfio-cap-number-of-devices-that-can-be-assigned.patch @@ -1,4 +1,4 @@ -From 22c0f47f02c5db63f3857dabc6cc7cb6bfc78158 Mon Sep 17 00:00:00 2001 +From 79697eeae5ecc81c6e334b4a5164c9a664541a22 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 @@ -22,6 +22,9 @@ for other uses. Stepping down a bit, the number 32 arbitrarily matches the number of slots on a PCI bus and is also a nice power of two. +Count of slots increased to 509 later so we could increase limit +to 64 as some usecases require more than 32 devices. + Signed-off-by: Bandan Das --- hw/vfio/pci.c | 29 ++++++++++++++++++++++++++++- @@ -29,10 +32,10 @@ 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 5c65aa0a98..327b86703a 100644 +index e1ea1d8a23..717af74b9a 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c -@@ -46,6 +46,9 @@ +@@ -45,6 +45,9 @@ #define TYPE_VFIO_PCI_NOHOTPLUG "vfio-pci-nohotplug" @@ -42,7 +45,7 @@ index 5c65aa0a98..327b86703a 100644 static void vfio_disable_interrupts(VFIOPCIDevice *vdev); static void vfio_mmap_set_enabled(VFIOPCIDevice *vdev, bool enabled); -@@ -2783,9 +2786,30 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) +@@ -2790,9 +2793,30 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) ssize_t len; struct stat st; int groupid; @@ -74,7 +77,7 @@ index 5c65aa0a98..327b86703a 100644 if (!vdev->vbasedev.sysfsdev) { if (!(~vdev->host.domain || ~vdev->host.bus || ~vdev->host.slot || ~vdev->host.function)) { -@@ -3222,6 +3246,9 @@ static Property vfio_pci_dev_properties[] = { +@@ -3229,6 +3253,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), diff --git a/SOURCES/0013-Add-support-statement-to-help-output.patch b/SOURCES/0013-Add-support-statement-to-help-output.patch index 8739e82..e7ff04f 100644 --- a/SOURCES/0013-Add-support-statement-to-help-output.patch +++ b/SOURCES/0013-Add-support-statement-to-help-output.patch @@ -1,4 +1,4 @@ -From ffd8eff2ce1d7eda81d425324593924c098f6c39 Mon Sep 17 00:00:00 2001 +From 5209e0f91395c9240142f75123edd55a6fcce8d7 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 aadb526138..6c8498022b 100644 +index 5ca11e7469..55673d7302 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c -@@ -848,9 +848,17 @@ static void version(void) +@@ -802,9 +802,17 @@ static void version(void) QEMU_COPYRIGHT "\n"); } @@ -42,7 +42,7 @@ index aadb526138..6c8498022b 100644 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()); -@@ -867,6 +875,7 @@ static void help(int exitcode) +@@ -830,6 +838,7 @@ static void help(int exitcode) "\n" QEMU_HELP_BOTTOM "\n"); diff --git a/SOURCES/0014-globally-limit-the-maximum-number-of-CPUs.patch b/SOURCES/0014-globally-limit-the-maximum-number-of-CPUs.patch index b44ad7c..0eba4ee 100644 --- a/SOURCES/0014-globally-limit-the-maximum-number-of-CPUs.patch +++ b/SOURCES/0014-globally-limit-the-maximum-number-of-CPUs.patch @@ -1,4 +1,4 @@ -From b5dab6e678d9b53359b3a915421114258e803cad Mon Sep 17 00:00:00 2001 +From 9ca40e0d1c7644ab781dc382effa8eb32f589322 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 b6d9f92f15..70a94ba76d 100644 +index 0125c17edb..b5d488a027 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c -@@ -2095,6 +2095,18 @@ static int kvm_init(MachineState *ms) +@@ -2413,6 +2413,18 @@ static int kvm_init(MachineState *ms) soft_vcpus_limit = kvm_recommended_vcpus(s); hard_vcpus_limit = kvm_max_vcpus(s); diff --git a/SOURCES/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch b/SOURCES/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch index 599e101..dd00655 100644 --- a/SOURCES/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch +++ b/SOURCES/0015-Use-qemu-kvm-in-documentation-instead-of-qemu-system.patch @@ -1,4 +1,4 @@ -From 55fde02ee1a9aa0e812af8534a9adf553accc522 Mon Sep 17 00:00:00 2001 +From 67b5eb11440c75e0fea275eccea43266760b831e 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- @@ -17,12 +17,10 @@ to reflect this change. Only architectures available in RHEL are updated. Signed-off-by: Miroslav Rezanina --- - docs/defs.rst.inc | 4 ++-- - docs/interop/live-block-operations.rst | 4 ++-- - docs/tools/qemu-trace-stap.rst | 14 +++++++------- - docs/tools/virtiofsd.rst | 2 +- - qemu-options.hx | 10 +++++----- - 5 files changed, 17 insertions(+), 17 deletions(-) + 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 @@ -38,28 +36,6 @@ index 52d6454b93..d74dbdeca9 100644 +.. |qemu_system_x86| replace:: qemu-kvm .. |I2C| replace:: I\ :sup:`2`\ C .. |I2S| replace:: I\ :sup:`2`\ S -diff --git a/docs/interop/live-block-operations.rst b/docs/interop/live-block-operations.rst -index 1073b930dc..881432253f 100644 ---- a/docs/interop/live-block-operations.rst -+++ b/docs/interop/live-block-operations.rst -@@ -129,7 +129,7 @@ To show some example invocations of command-line, we will use the - following invocation of QEMU, with a QMP server running over UNIX - socket:: - -- $ ./qemu-system-x86_64 -display none -no-user-config \ -+ $ qemu-kvm -display none -no-user-config \ - -M q35 -nodefaults -m 512 \ - -blockdev node-name=node-A,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./a.qcow2 \ - -device virtio-blk,drive=node-A,id=virtio0 \ -@@ -694,7 +694,7 @@ instance, with the following invocation. (As noted earlier, for - simplicity's sake, the destination QEMU is started on the same host, but - it could be located elsewhere):: - -- $ ./qemu-system-x86_64 -display none -no-user-config \ -+ $ qemu-kvm -display none -no-user-config \ - -M q35 -nodefaults -m 512 \ - -blockdev node-name=node-TargetDisk,driver=qcow2,file.driver=file,file.node-name=file,file.filename=./target-disk.qcow2 \ - -device virtio-blk,drive=node-TargetDisk,id=virtio0 \ diff --git a/docs/tools/qemu-trace-stap.rst b/docs/tools/qemu-trace-stap.rst index fb70445c75..0d9a783112 100644 --- a/docs/tools/qemu-trace-stap.rst @@ -118,24 +94,11 @@ index fb70445c75..0d9a783112 100644 See also -------- -diff --git a/docs/tools/virtiofsd.rst b/docs/tools/virtiofsd.rst -index 00554c75bd..6e0fc94005 100644 ---- a/docs/tools/virtiofsd.rst -+++ b/docs/tools/virtiofsd.rst -@@ -301,7 +301,7 @@ Export ``/var/lib/fs/vm001/`` on vhost-user UNIX domain socket - :: - - host# virtiofsd --socket-path=/var/run/vm001-vhost-fs.sock -o source=/var/lib/fs/vm001 -- host# qemu-system-x86_64 \ -+ host# qemu-kvm \ - -chardev socket,id=char0,path=/var/run/vm001-vhost-fs.sock \ - -device vhost-user-fs-pci,chardev=char0,tag=myfs \ - -object memory-backend-memfd,id=mem,size=4G,share=on \ diff --git a/qemu-options.hx b/qemu-options.hx -index 0d4fb61bf7..79ca09feac 100644 +index ac596e01a1..eea5fe9f68 100644 --- a/qemu-options.hx +++ b/qemu-options.hx -@@ -3011,11 +3011,11 @@ SRST +@@ -3124,11 +3124,11 @@ SRST :: diff --git a/SOURCES/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch b/SOURCES/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch index cd00b4f..c6e26e6 100644 --- a/SOURCES/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch +++ b/SOURCES/0016-virtio-scsi-Reject-scsi-cd-if-data-plane-enabled-RHE.patch @@ -1,4 +1,4 @@ -From 2ab1a61510036bd409532f24ea14fa693ec0362c Mon Sep 17 00:00:00 2001 +From 121a8bb81575086f84563f1dffc4d045cdc65a64 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] diff --git a/SOURCES/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch b/SOURCES/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch index 2e670a2..75ebb16 100644 --- a/SOURCES/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch +++ b/SOURCES/0017-BZ1653590-Require-at-least-64kiB-pages-for-downstrea.patch @@ -1,4 +1,4 @@ -From 7b3d9142f3b296b127dce35336765dc16265d155 Mon Sep 17 00:00:00 2001 +From 6e87ea18ca021e10fd99698bb3f744ed3dc06552 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,7 +32,7 @@ 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 9ea7ddd1e9..1338b677d2 100644 +index ed7c077a0d..48a8efe678 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, diff --git a/SOURCES/0018-block-Versioned-x-blockdev-reopen-API-with-feature-f.patch b/SOURCES/0018-block-Versioned-x-blockdev-reopen-API-with-feature-f.patch deleted file mode 100644 index b5e8f92..0000000 --- a/SOURCES/0018-block-Versioned-x-blockdev-reopen-API-with-feature-f.patch +++ /dev/null @@ -1,70 +0,0 @@ -From acdc84c1077be7d347414f781014ea785ce41d7b Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Fri, 13 Mar 2020 12:34:32 +0000 -Subject: block: Versioned x-blockdev-reopen API with feature flag - -RH-Author: Kevin Wolf -Message-id: <20200313123439.10548-7-kwolf@redhat.com> -Patchwork-id: 94283 -O-Subject: [RHEL-AV-8.2.0 qemu-kvm PATCH v2 06/13] block: Versioned x-blockdev-reopen API with feature flag -Bugzilla: 1790482 1805143 -RH-Acked-by: Eric Blake -RH-Acked-by: John Snow -RH-Acked-by: Daniel P. Berrange -RH-Acked-by: Peter Krempa - -x-blockdev-reopen is still considered unstable upstream. libvirt needs -(a small subset of) it for incremental backups, though. - -Add a downstream-only feature flag that effectively makes this a -versioned interface. As long as the feature is present, we promise that -we won't change the interface incompatibly. Incompatible changes to the -command will require us to drop the feature flag (and possibly introduce -a new one if the new version is still not stable upstream). - -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula ---- - qapi/block-core.json | 9 ++++++++- - scripts/qapi/expr.py | 2 +- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/qapi/block-core.json b/qapi/block-core.json -index 6d227924d0..15ad8cee05 100644 ---- a/qapi/block-core.json -+++ b/qapi/block-core.json -@@ -4166,10 +4166,17 @@ - # image does not have a default backing file name as part of its - # metadata. - # -+# Features: -+# @__com.redhat_rhel-av-8_2_0-api: Versioning the downstream interface while -+# it's still unstable upstream. As long as -+# this flag is present, this command will not -+# change incompatibly. -+# - # Since: 4.0 - ## - { 'command': 'x-blockdev-reopen', -- 'data': 'BlockdevOptions', 'boxed': true } -+ 'data': 'BlockdevOptions', 'boxed': true, -+ 'features': [ '__com.redhat_rhel-av-8_2_0-api' ] } - - ## - # @blockdev-del: -diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py -index 540b3982b1..884874d205 100644 ---- a/scripts/qapi/expr.py -+++ b/scripts/qapi/expr.py -@@ -215,7 +215,7 @@ def check_features(features, info): - check_keys(f, info, source, ['name'], ['if']) - check_name_is_str(f['name'], info, source) - source = "%s '%s'" % (source, f['name']) -- check_name_lower(f['name'], info, source) -+ check_name_lower(f['name'], info, source, permit_underscore=True) - check_if(f, info, source) - - --- -2.27.0 - diff --git a/SOURCES/0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch b/SOURCES/0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch new file mode 100644 index 0000000..3fc1c9c --- /dev/null +++ b/SOURCES/0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch @@ -0,0 +1,77 @@ +From 0486a5468aee70d74e8ad65f3b2e5fa16cacba56 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 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Kevin Wolf +RH-MergeRequest: 37: qcow2: Deprecation warning when opening v2 images rw +RH-Commit: [1/1] f450d0ae32d35063b28c72c4f2d2ebb9e6d8db3e (kmwolf/centos-qemu-kvm) +RH-Bugzilla: 1951814 +RH-Acked-by: Stefan Hajnoczi +RH-Acked-by: Hanna Reitz +RH-Acked-by: Thomas Huth +RH-Acked-by: Philippe Mathieu-Daudé + +qcow2 v3 has been around for a long time (since QEMU 1.1/RHEL 7), so +there is no real reason any more to use it. People still using it might +do so unintentionally. Warn about it and suggest upgrading during the +RHEL 9 timeframe so that the code can possibly be disabled in RHEL 10. + +The warning is restricted to read-write mode and the system emulator. +The primary motivation for not having it in qemu-img is that 'qemu-img +amend' for upgrades would warn otherwise. It also avoids having to make +too many changes to the test suite. + +bdrv_uses_whitelist() is used as a proxy for deciding whether we are +running in a tool or the system emulator. This is not entirely clean, +but it's what is available and the same function qcow2_do_open() already +uses it this way for another warning. + +Signed-off-by: Kevin Wolf + +patch_name: kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch +present_in_specfile: true +location_in_specfile: 116 +--- +Rebase notes (6.1.0): +- Replace bs->read_only with bdrv_is_read_only +--- + block/qcow2.c | 6 ++++++ + tests/qemu-iotests/common.filter | 1 + + 2 files changed, 7 insertions(+) + +diff --git a/block/qcow2.c b/block/qcow2.c +index 9f1b6461c8..4c303e6666 100644 +--- a/block/qcow2.c ++++ b/block/qcow2.c +@@ -1336,6 +1336,12 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options, + ret = -ENOTSUP; + goto fail; + } ++ if (header.version < 3 && !bdrv_is_read_only(bs) && bdrv_uses_whitelist()) { ++ warn_report_once("qcow2 v2 images are deprecated and may not be " ++ "supported in future versions. Please consider " ++ "upgrading the image with 'qemu-img amend " ++ "-o compat=v3'."); ++ } + + s->qcow_version = header.version; + +diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter +index 2b2b53946c..c5c2dc39bd 100644 +--- a/tests/qemu-iotests/common.filter ++++ b/tests/qemu-iotests/common.filter +@@ -82,6 +82,7 @@ _filter_qemu() + { + $SED -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 + diff --git a/SOURCES/kvm-Disable-TPM-passthrough.patch b/SOURCES/kvm-Disable-TPM-passthrough.patch deleted file mode 100644 index b0cc0b7..0000000 --- a/SOURCES/kvm-Disable-TPM-passthrough.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 651798d03827dda7eb8dc33fb3482f872ec81d16 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= -Date: Mon, 5 Jul 2021 15:23:48 +0400 -Subject: [PATCH 1/2] Disable TPM passthrough -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Marc-André Lureau -RH-MergeRequest: 17: Disable TPM passthrough -RH-Commit: [1/1] 735b79065149b968350b3f14d763030d5ef66457 -RH-Bugzilla: 1978911 -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Eric Auger -RH-Acked-by: Daniel P. Berrangé - -Signed-off-by: Marc-André Lureau -Signed-off-by: Miroslav Rezanina ---- - default-configs/devices/ppc64-rh-devices.mak | 1 - - default-configs/devices/x86_64-rh-devices.mak | 1 - - 2 files changed, 2 deletions(-) - -diff --git a/default-configs/devices/ppc64-rh-devices.mak b/default-configs/devices/ppc64-rh-devices.mak -index 3ec5603ace..d6e424540e 100644 ---- a/default-configs/devices/ppc64-rh-devices.mak -+++ b/default-configs/devices/ppc64-rh-devices.mak -@@ -32,4 +32,3 @@ CONFIG_XICS=y - CONFIG_XIVE=y - CONFIG_TPM_SPAPR=y - CONFIG_TPM_EMULATOR=y --CONFIG_TPM_PASSTHROUGH=y -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index 81bda09f4c..c2dd112f81 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -98,4 +98,3 @@ CONFIG_XIO3130=y - CONFIG_TPM_CRB=y - CONFIG_TPM_TIS_ISA=y - CONFIG_TPM_EMULATOR=y --CONFIG_TPM_PASSTHROUGH=y --- -2.27.0 - diff --git a/SOURCES/kvm-Fix-for-ppc64le-build.patch b/SOURCES/kvm-Fix-for-ppc64le-build.patch new file mode 100644 index 0000000..263286c --- /dev/null +++ b/SOURCES/kvm-Fix-for-ppc64le-build.patch @@ -0,0 +1,73 @@ +From 81c5a3cec15194bf75366813274f63d596f04807 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Mon, 15 Nov 2021 05:46:15 -0500 +Subject: [PATCH 6/6] Fix for ppc64le build + +Although we do not support ppc64 build, there can be some custom builds running +it. Fix code so the ppc64le build is buildable. + +Signed-off-by: Miroslav Rezanina +--- + hw/ppc/spapr.c | 7 +++++-- + target/ppc/kvm.c | 5 ++--- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c +index 1386e45e70..8699cc3d0c 100644 +--- a/hw/ppc/spapr.c ++++ b/hw/ppc/spapr.c +@@ -4991,7 +4991,6 @@ DEFINE_SPAPR_MACHINE(2_8, "2.8", false); + /* + * pseries-2.7 + */ +-#endif + + static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index, + uint64_t *buid, hwaddr *pio, +@@ -5047,7 +5046,6 @@ static bool phb_placement_2_7(SpaprMachineState *spapr, uint32_t index, + return true; + } + +-#if 0 /* Disabled for Red Hat Enterprise Linux */ + static void spapr_machine_2_7_class_options(MachineClass *mc) + { + SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); +@@ -5372,4 +5370,9 @@ static void spapr_machine_rhel760sxxm_class_options(MachineClass *mc) + + DEFINE_SPAPR_MACHINE(rhel760sxxm, "rhel7.6.0-sxxm", false); + ++static void spapr_machine_register_types(void) ++{ ++ type_register_static(&spapr_machine_info); ++} ++ + type_init(spapr_machine_register_types) +diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c +index 0f4f072fbd..154888cce5 100644 +--- a/target/ppc/kvm.c ++++ b/target/ppc/kvm.c +@@ -2560,11 +2560,11 @@ int kvmppc_enable_cap_large_decr(PowerPCCPU *cpu, int enable) + return 0; + } + +-<<<<<<< HEAD + int kvmppc_has_cap_rpt_invalidate(void) + { + return cap_rpt_invalidate; +-======= ++} ++ + bool kvmppc_has_cap_secure_guest(void) + { + return !!cap_ppc_secure_guest; +@@ -2573,7 +2573,6 @@ bool kvmppc_has_cap_secure_guest(void) + int kvmppc_enable_cap_secure_guest(void) + { + return kvm_vm_enable_cap(kvm_state, KVM_CAP_PPC_SECURE_GUEST, 0, 1); +->>>>>>> 89c02f0e37... Add ppc64 machine types + } + + PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) +-- +2.27.0 + diff --git a/SOURCES/kvm-Remove-RHEL-7.0.0-machine-type.patch b/SOURCES/kvm-Remove-RHEL-7.0.0-machine-type.patch deleted file mode 100644 index 0e0ca56..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.0.0-machine-type.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 4fa7a78aa900988816d07034943be384d57117f0 Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 10:24:56 +0200 -Subject: [PATCH 03/39] Remove RHEL 7.0.0 machine type - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [1/6] f182af372d3c38c3c1960af0d5cd37aba7205848 (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -Everything is used elsewhere except for cve_2014_5263 fields. Remove those. - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/i386/pc.c | 35 ----------------------------------- - hw/i386/pc_piix.c | 34 ---------------------------------- - hw/usb/hcd-xhci.c | 20 -------------------- - hw/usb/hcd-xhci.h | 2 -- - include/hw/i386/pc.h | 3 --- - include/hw/usb.h | 3 --- - 6 files changed, 97 deletions(-) - -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index cdbfa84d2e..516ca50353 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -598,41 +598,6 @@ const size_t pc_rhel_7_1_compat_len = G_N_ELEMENTS(pc_rhel_7_1_compat); - * PC_RHEL_7_*_COMPAT apply both to i440fx and q35 types. - */ - --/* -- * RHEL-7 is based on QEMU 1.5.3, so this needs the PC_COMPAT_* -- * between our base and 1.5, less stuff backported to RHEL-7.0 -- * (usb-device.msos-desc), less stuff for devices we changed -- * (qemu64-x86_64-cpu) or don't support (hpet, pci-serial-2x, -- * pci-serial-4x) in 7.0. -- */ --GlobalProperty pc_rhel_7_0_compat[] = { -- { "virtio-scsi-pci", "any_layout", "off" }, -- { "PIIX4_PM", "memory-hotplug-support", "off" }, -- { "apic", "version", stringify(0x11) }, -- { "nec-usb-xhci", "superspeed-ports-first", "off" }, -- { "nec-usb-xhci", "force-pcie-endcap", "on" }, -- { "pci-serial", "prog_if", stringify(0) }, -- { "virtio-net-pci", "guest_announce", "off" }, -- { "ICH9-LPC", "memory-hotplug-support", "off" }, -- { "xio3130-downstream", COMPAT_PROP_PCP, "off" }, -- { "ioh3420", COMPAT_PROP_PCP, "off" }, -- { "PIIX4_PM", "acpi-pci-hotplug-with-bridge-support", "off" }, -- { "e1000", "mitigation", "off" }, -- { "virtio-net-pci", "ctrl_guest_offloads", "off" }, -- { "Conroe" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Penryn" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Nehalem" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Nehalem-IBRS" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Westmere" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Westmere-IBRS" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Opteron_G1" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Opteron_G2" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Opteron_G3" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Opteron_G4" "-" TYPE_X86_CPU, "x2apic", "on" }, -- { "Opteron_G5" "-" TYPE_X86_CPU, "x2apic", "on" }, --}; --const size_t pc_rhel_7_0_compat_len = G_N_ELEMENTS(pc_rhel_7_0_compat); -- - GSIState *pc_gsi_create(qemu_irq **irqs, bool pci_enabled) - { - GSIState *s; -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 5d61c9b833..b4e8034671 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -1116,37 +1116,3 @@ static void pc_machine_rhel710_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel710, "pc-i440fx-rhel7.1.0", pc_init_rhel710, - pc_machine_rhel710_options); -- --static void pc_compat_rhel700(MachineState *machine) --{ -- PCMachineState *pcms = PC_MACHINE(machine); -- PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); -- -- pc_compat_rhel710(machine); -- -- /* Upstream enables it for everyone, we're a little more selective */ -- x86_cpu_change_kvm_default("x2apic", NULL); -- x86_cpu_change_kvm_default("svm", NULL); -- pcmc->legacy_acpi_table_size = 6418; /* see pc_compat_2_0() */ -- pcmc->smbios_legacy_mode = true; -- pcmc->has_reserved_memory = false; -- migrate_cve_2014_5263_xhci_fields = true; --} -- --static void pc_init_rhel700(MachineState *machine) --{ -- pc_compat_rhel700(machine); -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel700_options(MachineClass *m) --{ -- pc_machine_rhel710_options(m); -- m->family = "pc_piix_Y"; -- m->desc = "RHEL 7.0.0 PC (i440FX + PIIX, 1996)"; -- compat_props_add(m->compat_props, pc_rhel_7_0_compat, pc_rhel_7_0_compat_len); --} -- --DEFINE_PC_MACHINE(rhel700, "pc-i440fx-rhel7.0.0", pc_init_rhel700, -- pc_machine_rhel700_options); -diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c -index 6d1f278aad..46212b1e69 100644 ---- a/hw/usb/hcd-xhci.c -+++ b/hw/usb/hcd-xhci.c -@@ -3490,27 +3490,9 @@ static const VMStateDescription vmstate_xhci_slot = { - } - }; - --static int xhci_event_pre_save(void *opaque) --{ -- XHCIEvent *s = opaque; -- -- s->cve_2014_5263_a = ((uint8_t *)&s->type)[0]; -- s->cve_2014_5263_b = ((uint8_t *)&s->type)[1]; -- -- return 0; --} -- --bool migrate_cve_2014_5263_xhci_fields; -- --static bool xhci_event_cve_2014_5263(void *opaque, int version_id) --{ -- return migrate_cve_2014_5263_xhci_fields; --} -- - static const VMStateDescription vmstate_xhci_event = { - .name = "xhci-event", - .version_id = 1, -- .pre_save = xhci_event_pre_save, - .fields = (VMStateField[]) { - VMSTATE_UINT32(type, XHCIEvent), - VMSTATE_UINT32(ccode, XHCIEvent), -@@ -3519,8 +3501,6 @@ static const VMStateDescription vmstate_xhci_event = { - VMSTATE_UINT32(flags, XHCIEvent), - VMSTATE_UINT8(slotid, XHCIEvent), - VMSTATE_UINT8(epid, XHCIEvent), -- VMSTATE_UINT8_TEST(cve_2014_5263_a, XHCIEvent, xhci_event_cve_2014_5263), -- VMSTATE_UINT8_TEST(cve_2014_5263_b, XHCIEvent, xhci_event_cve_2014_5263), - VMSTATE_END_OF_LIST() - } - }; -diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h -index f450ffd13b..7bba361f3b 100644 ---- a/hw/usb/hcd-xhci.h -+++ b/hw/usb/hcd-xhci.h -@@ -149,8 +149,6 @@ typedef struct XHCIEvent { - uint32_t flags; - uint8_t slotid; - uint8_t epid; -- uint8_t cve_2014_5263_a; -- uint8_t cve_2014_5263_b; - } XHCIEvent; - - typedef struct XHCIInterrupter { -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 1980c93f41..2d17daf71f 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -314,9 +314,6 @@ extern const size_t pc_rhel_7_2_compat_len; - extern GlobalProperty pc_rhel_7_1_compat[]; - extern const size_t pc_rhel_7_1_compat_len; - --extern GlobalProperty pc_rhel_7_0_compat[]; --extern const size_t pc_rhel_7_0_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ -diff --git a/include/hw/usb.h b/include/hw/usb.h -index edb2cd94b6..436e07b304 100644 ---- a/include/hw/usb.h -+++ b/include/hw/usb.h -@@ -577,7 +577,4 @@ void usb_pcap_init(FILE *fp); - void usb_pcap_ctrl(USBPacket *p, bool setup); - void usb_pcap_data(USBPacket *p, bool setup); - --/* hcd-xhci.c -- rhel7.0.0 machine type compatibility */ --extern bool migrate_cve_2014_5263_xhci_fields; -- - #endif --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-RHEL-7.1.0-machine-type.patch b/SOURCES/kvm-Remove-RHEL-7.1.0-machine-type.patch deleted file mode 100644 index d3552f5..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.1.0-machine-type.patch +++ /dev/null @@ -1,292 +0,0 @@ -From 224b28d337f36a937b34685519d7b657974a95d0 Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 10:46:56 +0200 -Subject: [PATCH 04/39] Remove RHEL 7.1.0 machine type - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [2/6] af1d8896d63756d1acc5af8658465808c4a13ca3 (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -migrate_pre_2_2 was a redhat artifact, removed. -broken_reserved_end is already fixed, nothing to do. - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/char/serial.c | 12 ---------- - hw/core/machine.c | 23 ------------------- - hw/i386/pc.c | 51 ------------------------------------------- - hw/i386/pc_piix.c | 41 ---------------------------------- - hw/rtc/mc146818rtc.c | 4 ---- - include/hw/boards.h | 3 --- - include/hw/i386/pc.h | 3 --- - migration/migration.c | 2 -- - migration/migration.h | 5 ----- - 9 files changed, 144 deletions(-) - -diff --git a/hw/char/serial.c b/hw/char/serial.c -index cc378142a3..3e4344cb2a 100644 ---- a/hw/char/serial.c -+++ b/hw/char/serial.c -@@ -690,9 +690,6 @@ static int serial_post_load(void *opaque, int version_id) - static bool serial_thr_ipending_needed(void *opaque) - { - SerialState *s = opaque; -- if (migrate_pre_2_2) { -- return false; -- } - - if (s->ier & UART_IER_THRI) { - bool expected_value = ((s->iir & UART_IIR_ID) == UART_IIR_THRI); -@@ -774,9 +771,6 @@ static const VMStateDescription vmstate_serial_xmit_fifo = { - static bool serial_fifo_timeout_timer_needed(void *opaque) - { - SerialState *s = (SerialState *)opaque; -- if (migrate_pre_2_2) { -- return false; -- } - - return timer_pending(s->fifo_timeout_timer); - } -@@ -795,9 +789,6 @@ static const VMStateDescription vmstate_serial_fifo_timeout_timer = { - static bool serial_timeout_ipending_needed(void *opaque) - { - SerialState *s = (SerialState *)opaque; -- if (migrate_pre_2_2) { -- return false; -- } - - return s->timeout_ipending != 0; - } -@@ -816,9 +807,6 @@ static const VMStateDescription vmstate_serial_timeout_ipending = { - static bool serial_poll_needed(void *opaque) - { - SerialState *s = (SerialState *)opaque; -- if (migrate_pre_2_2) { -- return false; -- } - - return s->poll_msl >= 0; - } -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 6c534e14fa..cc7c826593 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -270,29 +270,6 @@ GlobalProperty hw_compat_rhel_7_2[] = { - }; - const size_t hw_compat_rhel_7_2_len = G_N_ELEMENTS(hw_compat_rhel_7_2); - --/* Mostly like hw_compat_2_1 but: -- * we don't need virtio-scsi-pci since 7.0 already had that on -- * -- * RH: Note, qemu-extended-regs should have been enabled in the 7.1 -- * machine type, but was accidentally turned off in 7.2 onwards. -- */ --GlobalProperty hw_compat_rhel_7_1[] = { -- { "intel-hda-generic", "old_msi_addr", "on" }, -- { "VGA", "qemu-extended-regs", "off" }, -- { "secondary-vga", "qemu-extended-regs", "off" }, -- { "usb-mouse", "usb_version", stringify(1) }, -- { "usb-kbd", "usb_version", stringify(1) }, -- { "virtio-pci", "virtio-pci-bus-master-bug-migration", "on" }, -- { "virtio-blk-pci", "any_layout", "off" }, -- { "virtio-balloon-pci", "any_layout", "off" }, -- { "virtio-serial-pci", "any_layout", "off" }, -- { "virtio-9p-pci", "any_layout", "off" }, -- { "virtio-rng-pci", "any_layout", "off" }, -- /* HW_COMPAT_RHEL7_1 - introduced with 2.10.0 */ -- { "migration", "send-configuration", "off" }, --}; --const size_t hw_compat_rhel_7_1_len = G_N_ELEMENTS(hw_compat_rhel_7_1); -- - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 516ca50353..3c1f5be4fa 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -541,57 +541,6 @@ GlobalProperty pc_rhel_7_2_compat[] = { - }; - const size_t pc_rhel_7_2_compat_len = G_N_ELEMENTS(pc_rhel_7_2_compat); - --GlobalProperty pc_rhel_7_1_compat[] = { -- { "kvm64" "-" TYPE_X86_CPU, "vme", "off" }, -- { "kvm32" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Conroe" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Penryn" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Nehalem" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Nehalem-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Westmere" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Westmere-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -- { "SandyBridge" "-" TYPE_X86_CPU, "vme", "off" }, -- { "SandyBridge-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Haswell" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Haswell-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Broadwell" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Broadwell-IBRS" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Opteron_G1" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Opteron_G2" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Opteron_G3" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Opteron_G4" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Opteron_G5" "-" TYPE_X86_CPU, "vme", "off" }, -- { "Haswell" "-" TYPE_X86_CPU, "f16c", "off" }, -- { "Haswell-IBRS" "-" TYPE_X86_CPU, "f16c", "off" }, -- { "Haswell" "-" TYPE_X86_CPU, "rdrand", "off" }, -- { "Haswell-IBRS" "-" TYPE_X86_CPU, "rdrand", "off" }, -- { "Broadwell" "-" TYPE_X86_CPU, "f16c", "off" }, -- { "Broadwell-IBRS" "-" TYPE_X86_CPU, "f16c", "off" }, -- { "Broadwell" "-" TYPE_X86_CPU, "rdrand", "off" }, -- { "Broadwell-IBRS" "-" TYPE_X86_CPU, "rdrand", "off" }, -- { "coreduo" "-" TYPE_X86_CPU, "vmx", "on" }, -- { "core2duo" "-" TYPE_X86_CPU, "vmx", "on" }, -- { "qemu64" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -- { "kvm64" "-" TYPE_X86_CPU, "min-level", stringify(5) }, -- { "pentium3" "-" TYPE_X86_CPU, "min-level", stringify(2) }, -- { "n270" "-" TYPE_X86_CPU, "min-level", stringify(5) }, -- { "Conroe" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -- { "Penryn" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -- { "Nehalem" "-" TYPE_X86_CPU, "min-level", stringify(4) }, -- { "n270" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Penryn" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Conroe" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Nehalem" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Westmere" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "SandyBridge" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "IvyBridge" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Haswell" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Haswell-noTSX" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Broadwell" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, -- { "Broadwell-noTSX" "-" TYPE_X86_CPU, "min-xlevel", stringify(0x8000000a) }, --}; --const size_t pc_rhel_7_1_compat_len = G_N_ELEMENTS(pc_rhel_7_1_compat); -- - /* - * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine - * types as the PC_COMPAT_* do for upstream types. -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index b4e8034671..2a6a28f1e5 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -1075,44 +1075,3 @@ static void pc_machine_rhel720_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel720, "pc-i440fx-rhel7.2.0", pc_init_rhel720, - pc_machine_rhel720_options); -- --static void pc_compat_rhel710(MachineState *machine) --{ -- PCMachineState *pcms = PC_MACHINE(machine); -- PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); -- -- /* From pc_compat_2_2 */ -- pcmc->rsdp_in_ram = false; -- machine->suppress_vmdesc = true; -- -- /* From pc_compat_2_1 */ -- pcmc->smbios_uuid_encoded = false; -- x86_cpu_change_kvm_default("svm", NULL); -- pcmc->enforce_aligned_dimm = false; -- -- /* Disable all the extra subsections that were added in 2.2 */ -- migrate_pre_2_2 = true; -- -- /* From pc_i440fx_2_4_machine_options */ -- pcmc->broken_reserved_end = true; --} -- --static void pc_init_rhel710(MachineState *machine) --{ -- pc_compat_rhel710(machine); -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel710_options(MachineClass *m) --{ -- pc_machine_rhel720_options(m); -- m->family = "pc_piix_Y"; -- m->desc = "RHEL 7.1.0 PC (i440FX + PIIX, 1996)"; -- m->default_display = "cirrus"; -- compat_props_add(m->compat_props, hw_compat_rhel_7_1, hw_compat_rhel_7_1_len); -- compat_props_add(m->compat_props, pc_rhel_7_1_compat, pc_rhel_7_1_compat_len); --} -- --DEFINE_PC_MACHINE(rhel710, "pc-i440fx-rhel7.1.0", pc_init_rhel710, -- pc_machine_rhel710_options); -diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c -index 4a2e52031b..3a70a988e1 100644 ---- a/hw/rtc/mc146818rtc.c -+++ b/hw/rtc/mc146818rtc.c -@@ -824,10 +824,6 @@ static bool rtc_irq_reinject_on_ack_count_needed(void *opaque) - { - RTCState *s = (RTCState *)opaque; - -- if (migrate_pre_2_2) { -- return false; -- } -- - return s->irq_reinject_on_ack_count != 0; - } - -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 90ae100bfc..070db0b9b1 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -445,7 +445,4 @@ extern const size_t hw_compat_rhel_7_3_len; - extern GlobalProperty hw_compat_rhel_7_2[]; - extern const size_t hw_compat_rhel_7_2_len; - --extern GlobalProperty hw_compat_rhel_7_1[]; --extern const size_t hw_compat_rhel_7_1_len; -- - #endif -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 2d17daf71f..84d985f57c 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -311,9 +311,6 @@ extern const size_t pc_rhel_7_3_compat_len; - extern GlobalProperty pc_rhel_7_2_compat[]; - extern const size_t pc_rhel_7_2_compat_len; - --extern GlobalProperty pc_rhel_7_1_compat[]; --extern const size_t pc_rhel_7_1_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ -diff --git a/migration/migration.c b/migration/migration.c -index 9d185f0e28..9cf1cde39d 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -167,8 +167,6 @@ INITIALIZE_MIGRATE_CAPS_SET(check_caps_background_snapshot, - MIGRATION_CAPABILITY_X_COLO, - MIGRATION_CAPABILITY_VALIDATE_UUID); - --bool migrate_pre_2_2; -- - /* When we add fault tolerance, we could have several - migrations at once. For now we don't need to add - dynamic creation of migration */ -diff --git a/migration/migration.h b/migration/migration.h -index 1b6c69751c..db6708326b 100644 ---- a/migration/migration.h -+++ b/migration/migration.h -@@ -368,11 +368,6 @@ bool check_dirty_bitmap_mig_alias_map(const BitmapMigrationNodeAliasList *bbm, - void migrate_add_address(SocketAddress *address); - - int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque); --/* -- * Disables a load of subsections that were added in 2.2/rh7.2 for backwards -- * migration compatibility. -- */ --extern bool migrate_pre_2_2; - - #define qemu_ram_foreach_block \ - #warning "Use foreach_not_ignored_block in migration code" --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-RHEL-7.2.0-machine-type.patch b/SOURCES/kvm-Remove-RHEL-7.2.0-machine-type.patch deleted file mode 100644 index d014be6..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.2.0-machine-type.patch +++ /dev/null @@ -1,192 +0,0 @@ -From 999b28683394c2939ca8bd6b692ed2169860ced9 Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 11:02:24 +0200 -Subject: [PATCH 05/39] Remove RHEL 7.2.0 machine type - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [3/6] 575f0fe16c1928a41628f1f704a4d5d370679a82 (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/core/machine.c | 24 ------------------------ - hw/i386/pc.c | 22 ---------------------- - hw/i386/pc_piix.c | 26 -------------------------- - hw/ppc/spapr.c | 26 -------------------------- - include/hw/boards.h | 3 --- - include/hw/i386/pc.h | 3 --- - 6 files changed, 104 deletions(-) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index cc7c826593..54eb8376a7 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -246,30 +246,6 @@ GlobalProperty hw_compat_rhel_7_3[] = { - }; - const size_t hw_compat_rhel_7_3_len = G_N_ELEMENTS(hw_compat_rhel_7_3); - --/* Mostly like hw_compat_2_4 + 2_3 but: -- * we don't need "any_layout" as it has been backported to 7.2 -- */ --GlobalProperty hw_compat_rhel_7_2[] = { -- { "virtio-blk-device", "scsi", "true" }, -- { "e1000-82540em", "extra_mac_registers", "off" }, -- { "virtio-pci", "x-disable-pcie", "on" }, -- { "virtio-pci", "migrate-extra", "off" }, -- { "fw_cfg_mem", "dma_enabled", "off" }, -- { "fw_cfg_io", "dma_enabled", "off" }, -- { "isa-fdc", "fallback", "144" }, -- /* Optional because not all virtio-pci devices support legacy mode */ -- { "virtio-pci", "disable-modern", "on", .optional = true }, -- { "virtio-pci", "disable-legacy", "off", .optional = true }, -- { TYPE_PCI_DEVICE, "x-pcie-lnksta-dllla", "off" }, -- { "virtio-pci", "page-per-vq", "on" }, -- /* hw_compat_rhel_7_2 - introduced with 2.10.0 */ -- { "migration", "send-section-footer", "off" }, -- /* hw_compat_rhel_7_2 - introduced with 2.10.0 */ -- { "migration", "store-global-state", "off", -- }, --}; --const size_t hw_compat_rhel_7_2_len = G_N_ELEMENTS(hw_compat_rhel_7_2); -- - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 3c1f5be4fa..938cb82818 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -519,28 +519,6 @@ GlobalProperty pc_rhel_7_3_compat[] = { - }; - const size_t pc_rhel_7_3_compat_len = G_N_ELEMENTS(pc_rhel_7_3_compat); - --GlobalProperty pc_rhel_7_2_compat[] = { -- { "phenom" "-" TYPE_X86_CPU, "rdtscp", "off"}, -- { "qemu64" "-" TYPE_X86_CPU, "sse4a", "on" }, -- { "qemu64" "-" TYPE_X86_CPU, "abm", "on" }, -- { "Haswell-" TYPE_X86_CPU, "abm", "off" }, -- { "Haswell-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -- { "Haswell-noTSX-" TYPE_X86_CPU, "abm", "off" }, -- { "Haswell-noTSX-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -- { "Broadwell-" TYPE_X86_CPU, "abm", "off" }, -- { "Broadwell-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -- { "Broadwell-noTSX-" TYPE_X86_CPU, "abm", "off" }, -- { "Broadwell-noTSX-IBRS" "-" TYPE_X86_CPU, "abm", "off" }, -- { "host" "-" TYPE_X86_CPU, "host-cache-info", "on" }, -- { TYPE_X86_CPU, "check", "off" }, -- { "qemu32" "-" TYPE_X86_CPU, "popcnt", "on" }, -- { TYPE_X86_CPU, "arat", "off" }, -- { "usb-redir", "streams", "off" }, -- { TYPE_X86_CPU, "fill-mtrr-mask", "off" }, -- { "apic-common", "legacy-instance-id", "on" }, --}; --const size_t pc_rhel_7_2_compat_len = G_N_ELEMENTS(pc_rhel_7_2_compat); -- - /* - * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine - * types as the PC_COMPAT_* do for upstream types. -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 2a6a28f1e5..201cbbdb01 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -1049,29 +1049,3 @@ static void pc_machine_rhel730_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel730, "pc-i440fx-rhel7.3.0", pc_init_rhel730, - pc_machine_rhel730_options); -- -- --static void pc_init_rhel720(MachineState *machine) --{ -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel720_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- X86MachineClass *x86mc = X86_MACHINE_CLASS(m); -- pc_machine_rhel730_options(m); -- m->desc = "RHEL 7.2.0 PC (i440FX + PIIX, 1996)"; -- /* From pc_i440fx_2_5_machine_options */ -- x86mc->save_tsc_khz = false; -- m->legacy_fw_cfg_order = 1; -- /* Note: broken_reserved_end was already in 7.2 */ -- /* From pc_i440fx_2_6_machine_options */ -- pcmc->legacy_cpu_hotplug = true; -- compat_props_add(m->compat_props, hw_compat_rhel_7_2, hw_compat_rhel_7_2_len); -- compat_props_add(m->compat_props, pc_rhel_7_2_compat, pc_rhel_7_2_compat_len); --} -- --DEFINE_PC_MACHINE(rhel720, "pc-i440fx-rhel7.2.0", pc_init_rhel720, -- pc_machine_rhel720_options); -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index 11db32c537..0bc558e0b7 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -5397,32 +5397,6 @@ static void spapr_machine_rhel730sxxm_class_options(MachineClass *mc) - - DEFINE_SPAPR_MACHINE(rhel730sxxm, "rhel7.3.0-sxxm", false); - --/* -- * pseries-rhel7.2.0 -- */ --/* Should be like spapr_compat_2_5 + 2_4 + 2_3, but "dynamic-reconfiguration" -- * has been backported to RHEL7_2 so we don't need it here. -- */ -- --GlobalProperty spapr_compat_rhel7_2[] = { -- { "spapr-vlan", "use-rx-buffer-pools", "off" }, -- { TYPE_SPAPR_PCI_HOST_BRIDGE, "ddw", "off" }, --}; --const size_t spapr_compat_rhel7_2_len = G_N_ELEMENTS(spapr_compat_rhel7_2); -- --static void spapr_machine_rhel720_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel730_class_options(mc); -- smc->use_ohci_by_default = true; -- mc->has_hotpluggable_cpus = NULL; -- compat_props_add(mc->compat_props, hw_compat_rhel_7_2, hw_compat_rhel_7_2_len); -- compat_props_add(mc->compat_props, spapr_compat_rhel7_2, spapr_compat_rhel7_2_len); --} -- --DEFINE_SPAPR_MACHINE(rhel720, "rhel7.2.0", false); -- - static void spapr_machine_register_types(void) - { - type_register_static(&spapr_machine_info); -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 070db0b9b1..43eb868ceb 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -442,7 +442,4 @@ extern const size_t hw_compat_rhel_7_4_len; - extern GlobalProperty hw_compat_rhel_7_3[]; - extern const size_t hw_compat_rhel_7_3_len; - --extern GlobalProperty hw_compat_rhel_7_2[]; --extern const size_t hw_compat_rhel_7_2_len; -- - #endif -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 84d985f57c..c26c6dcc72 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -308,9 +308,6 @@ extern const size_t pc_rhel_7_4_compat_len; - extern GlobalProperty pc_rhel_7_3_compat[]; - extern const size_t pc_rhel_7_3_compat_len; - --extern GlobalProperty pc_rhel_7_2_compat[]; --extern const size_t pc_rhel_7_2_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-RHEL-7.3.0-machine-types.patch b/SOURCES/kvm-Remove-RHEL-7.3.0-machine-types.patch deleted file mode 100644 index dbf9b49..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.3.0-machine-types.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 1610bd2ce98e3d93296fd3bc4d2c24e905428a4a Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 11:24:26 +0200 -Subject: [PATCH 06/39] Remove RHEL 7.3.0 machine types - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [4/6] 7a674496dd29a7a87843770fd0459b85831cc866 (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -Only thing to remove with care was __redhat_e1000e_7_3_intr_state. - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/core/machine.c | 22 --------------------- - hw/i386/pc.c | 28 --------------------------- - hw/i386/pc_piix.c | 19 ------------------ - hw/i386/pc_q35.c | 19 ------------------ - hw/net/e1000e.c | 22 --------------------- - hw/ppc/spapr.c | 46 -------------------------------------------- - include/hw/boards.h | 3 --- - include/hw/i386/pc.h | 3 --- - 8 files changed, 162 deletions(-) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 54eb8376a7..0bcaabd8a9 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -224,28 +224,6 @@ GlobalProperty hw_compat_rhel_7_4[] = { - }; - - const size_t hw_compat_rhel_7_4_len = G_N_ELEMENTS(hw_compat_rhel_7_4); --/* Mostly like HW_COMPAT_2_6 + HW_COMPAT_2_7 + HW_COMPAT_2_8 except -- * disable-modern, disable-legacy, page-per-vq have already been -- * backported to RHEL7.3 -- */ --GlobalProperty hw_compat_rhel_7_3[] = { -- { "virtio-mmio", "format_transport_address", "off" }, -- { "virtio-serial-device", "emergency-write", "off" }, -- { "ioapic", "version", "0x11" }, -- { "intel-iommu", "x-buggy-eim", "true" }, -- { "virtio-pci", "x-ignore-backend-features", "on" }, -- { "fw_cfg_mem", "x-file-slots", stringify(0x10) }, -- { "fw_cfg_io", "x-file-slots", stringify(0x10) }, -- { "pflash_cfi01", "old-multiple-chip-handling", "on" }, -- { TYPE_PCI_DEVICE, "x-pcie-extcap-init", "off" }, -- { "virtio-pci", "x-pcie-deverr-init", "off" }, -- { "virtio-pci", "x-pcie-lnkctl-init", "off" }, -- { "virtio-pci", "x-pcie-pm-init", "off" }, -- { "virtio-net-device", "x-mtu-bypass-backend", "off" }, -- { "e1000e", "__redhat_e1000e_7_3_intr_state", "on" }, --}; --const size_t hw_compat_rhel_7_3_len = G_N_ELEMENTS(hw_compat_rhel_7_3); -- - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 938cb82818..75abe0acc2 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -491,34 +491,6 @@ GlobalProperty pc_rhel_7_4_compat[] = { - }; - const size_t pc_rhel_7_4_compat_len = G_N_ELEMENTS(pc_rhel_7_4_compat); - --GlobalProperty pc_rhel_7_3_compat[] = { -- /* pc_rhel_7_3_compat from pc_compat_2_8 */ -- { "kvmclock", "x-mach-use-reliable-get-clock", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { TYPE_X86_CPU, "l3-cache", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { TYPE_X86_CPU, "full-cpuid-auto-level", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { "Opteron_G3" "-" TYPE_X86_CPU, "family", "15" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { "Opteron_G3" "-" TYPE_X86_CPU, "model", "6" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { "Opteron_G3" "-" TYPE_X86_CPU, "stepping", "1" }, -- /* pc_rhel_7_3_compat from pc_compat_2_7 */ -- { "isa-pcspk", "migrate", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_6 */ -- { TYPE_X86_CPU, "cpuid-0xb", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_8 */ -- { "ICH9-LPC", "x-smi-broadcast", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_8 */ -- { TYPE_X86_CPU, "vmware-cpuid-freq", "off" }, -- /* pc_rhel_7_3_compat from pc_compat_2_8 */ -- { "Haswell-" TYPE_X86_CPU, "stepping", "1" }, -- /* pc_rhel_7_3_compat from pc_compat_2_3 added in 2.9*/ -- { TYPE_X86_CPU, "kvm-no-smi-migration", "on" }, --}; --const size_t pc_rhel_7_3_compat_len = G_N_ELEMENTS(pc_rhel_7_3_compat); -- - /* - * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine - * types as the PC_COMPAT_* do for upstream types. -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 201cbbdb01..64662cc3d5 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -1030,22 +1030,3 @@ static void pc_machine_rhel740_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel740, "pc-i440fx-rhel7.4.0", pc_init_rhel740, - pc_machine_rhel740_options); -- --static void pc_init_rhel730(MachineState *machine) --{ -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel730_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_machine_rhel740_options(m); -- m->desc = "RHEL 7.3.0 PC (i440FX + PIIX, 1996)"; -- pcmc->linuxboot_dma_enabled = false; -- compat_props_add(m->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -- compat_props_add(m->compat_props, pc_rhel_7_3_compat, pc_rhel_7_3_compat_len); --} -- --DEFINE_PC_MACHINE(rhel730, "pc-i440fx-rhel7.3.0", pc_init_rhel730, -- pc_machine_rhel730_options); -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 01ff3e0544..bf49a943dc 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -792,22 +792,3 @@ static void pc_q35_machine_rhel740_options(MachineClass *m) - - DEFINE_PC_MACHINE(q35_rhel740, "pc-q35-rhel7.4.0", pc_q35_init_rhel740, - pc_q35_machine_rhel740_options); -- --static void pc_q35_init_rhel730(MachineState *machine) --{ -- pc_q35_init(machine); --} -- --static void pc_q35_machine_rhel730_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel740_options(m); -- m->desc = "RHEL-7.3.0 PC (Q35 + ICH9, 2009)"; -- m->max_cpus = 255; -- pcmc->linuxboot_dma_enabled = false; -- compat_props_add(m->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -- compat_props_add(m->compat_props, pc_rhel_7_3_compat, pc_rhel_7_3_compat_len); --} -- --DEFINE_PC_MACHINE(q35_rhel730, "pc-q35-rhel7.3.0", pc_q35_init_rhel730, -- pc_q35_machine_rhel730_options); -diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c -index 6d39c1f1c4..b22f232863 100644 ---- a/hw/net/e1000e.c -+++ b/hw/net/e1000e.c -@@ -79,12 +79,6 @@ struct E1000EState { - bool disable_vnet; - - E1000ECore core; -- -- /* 7.3 had the intr_state field that was in the original e1000e code -- * but that was removed prior to 2.7's release -- */ -- bool redhat_7_3_intr_state_enable; -- uint32_t redhat_7_3_intr_state; - }; - - #define E1000E_MMIO_IDX 0 -@@ -100,10 +94,6 @@ struct E1000EState { - #define E1000E_MSIX_TABLE (0x0000) - #define E1000E_MSIX_PBA (0x2000) - --/* Values as in RHEL 7.3 build and original upstream */ --#define RH_E1000E_USE_MSI BIT(0) --#define RH_E1000E_USE_MSIX BIT(1) -- - static uint64_t - e1000e_mmio_read(void *opaque, hwaddr addr, unsigned size) - { -@@ -315,8 +305,6 @@ e1000e_init_msix(E1000EState *s) - } else { - if (!e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM)) { - msix_uninit(d, &s->msix, &s->msix); -- } else { -- s->redhat_7_3_intr_state |= RH_E1000E_USE_MSIX; - } - } - } -@@ -488,8 +476,6 @@ static void e1000e_pci_realize(PCIDevice *pci_dev, Error **errp) - ret = msi_init(PCI_DEVICE(s), 0xD0, 1, true, false, NULL); - if (ret) { - trace_e1000e_msi_init_fail(ret); -- } else { -- s->redhat_7_3_intr_state |= RH_E1000E_USE_MSI; - } - - if (e1000e_add_pm_capability(pci_dev, e1000e_pmrb_offset, -@@ -613,11 +599,6 @@ static const VMStateDescription e1000e_vmstate_intr_timer = { - VMSTATE_STRUCT_ARRAY(_f, _s, _num, 0, \ - e1000e_vmstate_intr_timer, E1000IntrDelayTimer) - --static bool rhel_7_3_check(void *opaque, int version_id) --{ -- return ((E1000EState *)opaque)->redhat_7_3_intr_state_enable; --} -- - static const VMStateDescription e1000e_vmstate = { - .name = "e1000e", - .version_id = 1, -@@ -629,7 +610,6 @@ static const VMStateDescription e1000e_vmstate = { - VMSTATE_MSIX(parent_obj, E1000EState), - - VMSTATE_UINT32(ioaddr, E1000EState), -- VMSTATE_UINT32_TEST(redhat_7_3_intr_state, E1000EState, rhel_7_3_check), - VMSTATE_UINT32(core.rxbuf_min_shift, E1000EState), - VMSTATE_UINT8(core.rx_desc_len, E1000EState), - VMSTATE_UINT32_ARRAY(core.rxbuf_sizes, E1000EState, -@@ -678,8 +658,6 @@ static PropertyInfo e1000e_prop_disable_vnet, - - static Property e1000e_properties[] = { - DEFINE_NIC_PROPERTIES(E1000EState, conf), -- DEFINE_PROP_BOOL("__redhat_e1000e_7_3_intr_state", E1000EState, -- redhat_7_3_intr_state_enable, false), - DEFINE_PROP_SIGNED("disable_vnet_hdr", E1000EState, disable_vnet, false, - e1000e_prop_disable_vnet, bool), - DEFINE_PROP_SIGNED("subsys_ven", E1000EState, subsys_ven, -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index 0bc558e0b7..ca0b99403e 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -5351,52 +5351,6 @@ static void spapr_machine_rhel740sxxm_class_options(MachineClass *mc) - - DEFINE_SPAPR_MACHINE(rhel740sxxm, "rhel7.4.0-sxxm", false); - --/* -- * pseries-rhel7.3.0 -- * like spapr_compat_2_6/_2_7/_2_8 but "ddw" has been backported to RHEL7_3 -- */ --GlobalProperty spapr_compat_rhel7_3[] = { -- { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem_win_size", "0xf80000000" }, -- { TYPE_SPAPR_PCI_HOST_BRIDGE, "mem64_win_size", "0" }, -- { TYPE_POWERPC_CPU, "pre-2.8-migration", "on" }, -- { TYPE_SPAPR_PCI_HOST_BRIDGE, "pre-2.8-migration", "on" }, -- { TYPE_SPAPR_PCI_HOST_BRIDGE, "pcie-extended-configuration-space", "off" }, --}; --const size_t spapr_compat_rhel7_3_len = G_N_ELEMENTS(spapr_compat_rhel7_3); -- --static void spapr_machine_rhel730_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel740_class_options(mc); -- mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3"); -- mc->default_machine_opts = "modern-hotplug-events=off"; -- compat_props_add(mc->compat_props, hw_compat_rhel_7_3, hw_compat_rhel_7_3_len); -- compat_props_add(mc->compat_props, spapr_compat_rhel7_3, spapr_compat_rhel7_3_len); -- -- smc->phb_placement = phb_placement_2_7; --} -- --DEFINE_SPAPR_MACHINE(rhel730, "rhel7.3.0", false); -- --/* -- * pseries-rhel7.3.0-sxxm -- * -- * pseries-rhel7.3.0 with speculative execution exploit mitigations enabled by default -- */ -- --static void spapr_machine_rhel730sxxm_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel730_class_options(mc); -- smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; --} -- --DEFINE_SPAPR_MACHINE(rhel730sxxm, "rhel7.3.0-sxxm", false); -- - static void spapr_machine_register_types(void) - { - type_register_static(&spapr_machine_info); -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 43eb868ceb..24d4d726d8 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -439,7 +439,4 @@ extern const size_t hw_compat_rhel_7_5_len; - extern GlobalProperty hw_compat_rhel_7_4[]; - extern const size_t hw_compat_rhel_7_4_len; - --extern GlobalProperty hw_compat_rhel_7_3[]; --extern const size_t hw_compat_rhel_7_3_len; -- - #endif -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index c26c6dcc72..820fb3f577 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -305,9 +305,6 @@ extern const size_t pc_rhel_7_5_compat_len; - extern GlobalProperty pc_rhel_7_4_compat[]; - extern const size_t pc_rhel_7_4_compat_len; - --extern GlobalProperty pc_rhel_7_3_compat[]; --extern const size_t pc_rhel_7_3_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-RHEL-7.4.0-machine-types.patch b/SOURCES/kvm-Remove-RHEL-7.4.0-machine-types.patch deleted file mode 100644 index 9484fc1..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.4.0-machine-types.patch +++ /dev/null @@ -1,301 +0,0 @@ -From b64f8848efe610c52791587ec41301b73ec9165a Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 11:53:07 +0200 -Subject: [PATCH 07/39] Remove RHEL 7.4.0 machine types - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [5/6] a1940ac35591cebff52379f85656caf6a03328dd (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -Revert pc_rom_ro hack. -Remove force_rev1_fadt hack, it is not needed anymore. - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/acpi/ich9.c | 15 --------------- - hw/core/machine.c | 9 --------- - hw/i386/acpi-build.c | 3 --- - hw/i386/pc.c | 18 +----------------- - hw/i386/pc_piix.c | 19 ------------------- - hw/i386/pc_q35.c | 18 ------------------ - hw/ppc/spapr.c | 43 ------------------------------------------ - include/hw/acpi/ich9.h | 3 --- - include/hw/boards.h | 3 --- - include/hw/i386/pc.h | 6 ------ - 10 files changed, 1 insertion(+), 136 deletions(-) - -diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c -index 33b0c6e33c..7f01fad64c 100644 ---- a/hw/acpi/ich9.c -+++ b/hw/acpi/ich9.c -@@ -369,18 +369,6 @@ static void ich9_pm_set_enable_tco(Object *obj, bool value, Error **errp) - s->pm.enable_tco = value; - } - --static bool ich9_pm_get_force_rev1_fadt(Object *obj, Error **errp) --{ -- ICH9LPCState *s = ICH9_LPC_DEVICE(obj); -- return s->pm.force_rev1_fadt; --} -- --static void ich9_pm_set_force_rev1_fadt(Object *obj, bool value, Error **errp) --{ -- ICH9LPCState *s = ICH9_LPC_DEVICE(obj); -- s->pm.force_rev1_fadt = value; --} -- - void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) - { - static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN; -@@ -403,9 +391,6 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm) - object_property_add_bool(obj, "cpu-hotplug-legacy", - ich9_pm_get_cpu_hotplug_legacy, - ich9_pm_set_cpu_hotplug_legacy); -- object_property_add_bool(obj, "__com.redhat_force-rev1-fadt", -- ich9_pm_get_force_rev1_fadt, -- ich9_pm_set_force_rev1_fadt); - object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S3_DISABLED, - &pm->disable_s3, OBJ_PROP_FLAG_READWRITE); - object_property_add_uint8_ptr(obj, ACPI_PM_PROP_S4_DISABLED, -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 0bcaabd8a9..6dc2651d73 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -215,15 +215,6 @@ GlobalProperty hw_compat_rhel_7_5[] = { - }; - const size_t hw_compat_rhel_7_5_len = G_N_ELEMENTS(hw_compat_rhel_7_5); - --/* Mostly like hw_compat_2_9 except -- * x-mtu-bypass-backend, x-migrate-msix has already been -- * backported to RHEL7.4. shpc was already on in 7.4. -- */ --GlobalProperty hw_compat_rhel_7_4[] = { -- { "intel-iommu", "pt", "off" }, --}; -- --const size_t hw_compat_rhel_7_4_len = G_N_ELEMENTS(hw_compat_rhel_7_4); - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, -diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c -index 7bd67f7877..de98750aef 100644 ---- a/hw/i386/acpi-build.c -+++ b/hw/i386/acpi-build.c -@@ -231,9 +231,6 @@ static void acpi_get_pm_info(MachineState *machine, AcpiPmInfo *pm) - pm->fadt.reset_reg = r; - pm->fadt.reset_val = 0xf; - pm->fadt.flags |= 1 << ACPI_FADT_F_RESET_REG_SUP; -- if (object_property_get_bool(lpc, -- "__com.redhat_force-rev1-fadt", NULL)) -- pm->fadt.rev = 1; - pm->cpu_hp_io_base = ICH9_CPU_HOTPLUG_IO_BASE; - pm->smi_on_cpuhp = - !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT)); -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 75abe0acc2..6b39abce02 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -477,20 +477,6 @@ GlobalProperty pc_rhel_7_5_compat[] = { - }; - const size_t pc_rhel_7_5_compat_len = G_N_ELEMENTS(pc_rhel_7_5_compat); - --GlobalProperty pc_rhel_7_4_compat[] = { -- /* pc_rhel_7_4_compat from pc_compat_2_9 */ -- { "mch", "extended-tseg-mbytes", stringify(0) }, -- /* bz 1489800 */ -- { "ICH9-LPC", "__com.redhat_force-rev1-fadt", "on" }, -- /* pc_rhel_7_4_compat from pc_compat_2_10 */ -- { "i440FX-pcihost", "x-pci-hole64-fix", "off" }, -- /* pc_rhel_7_4_compat from pc_compat_2_10 */ -- { "q35-pcihost", "x-pci-hole64-fix", "off" }, -- /* pc_rhel_7_4_compat from pc_compat_2_10 */ -- { TYPE_X86_CPU, "x-hv-max-vps", "0x40" }, --}; --const size_t pc_rhel_7_4_compat_len = G_N_ELEMENTS(pc_rhel_7_4_compat); -- - /* - * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine - * types as the PC_COMPAT_* do for upstream types. -@@ -1094,8 +1080,7 @@ void pc_memory_init(PCMachineState *pcms, - option_rom_mr = g_malloc(sizeof(*option_rom_mr)); - memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE, - &error_fatal); -- /* RH difference: See bz 1489800, explicitly make ROM ro */ -- if (pcmc->pc_rom_ro) { -+ if (pcmc->pci_enabled) { - memory_region_set_readonly(option_rom_mr, true); - } - memory_region_add_subregion_overlap(rom_memory, -@@ -1845,7 +1830,6 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) - pcmc->pvh_enabled = true; - pcmc->kvmclock_create_always = true; - assert(!mc->get_hotplug_handler); -- pcmc->pc_rom_ro = true; - mc->async_pf_vmexit_disable = false; - mc->get_hotplug_handler = pc_get_hotplug_handler; - mc->hotplug_allowed = pc_hotplug_allowed; -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index 64662cc3d5..fe2ac7593a 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -1011,22 +1011,3 @@ static void pc_machine_rhel750_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel750, "pc-i440fx-rhel7.5.0", pc_init_rhel750, - pc_machine_rhel750_options); -- --static void pc_init_rhel740(MachineState *machine) --{ -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel740_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_machine_rhel750_options(m); -- m->desc = "RHEL 7.4.0 PC (i440FX + PIIX, 1996)"; -- pcmc->pc_rom_ro = false; -- compat_props_add(m->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -- compat_props_add(m->compat_props, pc_rhel_7_4_compat, pc_rhel_7_4_compat_len); --} -- --DEFINE_PC_MACHINE(rhel740, "pc-i440fx-rhel7.4.0", pc_init_rhel740, -- pc_machine_rhel740_options); -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index bf49a943dc..9958ed9184 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -774,21 +774,3 @@ static void pc_q35_machine_rhel750_options(MachineClass *m) - - DEFINE_PC_MACHINE(q35_rhel750, "pc-q35-rhel7.5.0", pc_q35_init_rhel750, - pc_q35_machine_rhel750_options); -- --static void pc_q35_init_rhel740(MachineState *machine) --{ -- pc_q35_init(machine); --} -- --static void pc_q35_machine_rhel740_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel750_options(m); -- m->desc = "RHEL-7.4.0 PC (Q35 + ICH9, 2009)"; -- pcmc->pc_rom_ro = false; -- compat_props_add(m->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -- compat_props_add(m->compat_props, pc_rhel_7_4_compat, pc_rhel_7_4_compat_len); --} -- --DEFINE_PC_MACHINE(q35_rhel740, "pc-q35-rhel7.4.0", pc_q35_init_rhel740, -- pc_q35_machine_rhel740_options); -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index ca0b99403e..bdabbf8b81 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -5308,49 +5308,6 @@ static void spapr_machine_rhel750sxxm_class_options(MachineClass *mc) - } - - DEFINE_SPAPR_MACHINE(rhel750sxxm, "rhel7.5.0-sxxm", false); -- --/* -- * pseries-rhel7.4.0 -- * like spapr_compat_2_9 -- */ --GlobalProperty spapr_compat_rhel7_4[] = { -- { TYPE_POWERPC_CPU, "pre-2.10-migration", "on" }, --}; --const size_t spapr_compat_rhel7_4_len = G_N_ELEMENTS(spapr_compat_rhel7_4); -- --static void spapr_machine_rhel740_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel750_class_options(mc); -- compat_props_add(mc->compat_props, hw_compat_rhel_7_4, hw_compat_rhel_7_4_len); -- compat_props_add(mc->compat_props, spapr_compat_rhel7_4, spapr_compat_rhel7_4_len); -- smc->has_power9_support = false; -- smc->pre_2_10_has_unused_icps = true; -- smc->resize_hpt_default = SPAPR_RESIZE_HPT_DISABLED; -- smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_ON; --} -- --DEFINE_SPAPR_MACHINE(rhel740, "rhel7.4.0", false); -- --/* -- * pseries-rhel7.4.0-sxxm -- * -- * pseries-rhel7.4.0 with speculative execution exploit mitigations enabled by default -- */ -- --static void spapr_machine_rhel740sxxm_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel740_class_options(mc); -- smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; --} -- --DEFINE_SPAPR_MACHINE(rhel740sxxm, "rhel7.4.0-sxxm", false); -- - static void spapr_machine_register_types(void) - { - type_register_static(&spapr_machine_info); -diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h -index e1ecfbaf1f..df519e40b5 100644 ---- a/include/hw/acpi/ich9.h -+++ b/include/hw/acpi/ich9.h -@@ -62,9 +62,6 @@ typedef struct ICH9LPCPMRegs { - bool smm_compat; - bool enable_tco; - TCOIORegs tco_regs; -- -- /* RH addition, see bz 1489800 */ -- bool force_rev1_fadt; - } ICH9LPCPMRegs; - - #define ACPI_PM_PROP_TCO_ENABLED "enable_tco" -diff --git a/include/hw/boards.h b/include/hw/boards.h -index 24d4d726d8..f27170b6fb 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -436,7 +436,4 @@ extern const size_t hw_compat_rhel_7_6_len; - extern GlobalProperty hw_compat_rhel_7_5[]; - extern const size_t hw_compat_rhel_7_5_len; - --extern GlobalProperty hw_compat_rhel_7_4[]; --extern const size_t hw_compat_rhel_7_4_len; -- - #endif -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 820fb3f577..ff93dfb372 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -128,9 +128,6 @@ struct PCMachineClass { - - /* create kvmclock device even when KVM PV features are not exposed */ - bool kvmclock_create_always; -- -- /* RH only, see bz 1489800 */ -- bool pc_rom_ro; - }; - - #define TYPE_PC_MACHINE "generic-pc-machine" -@@ -302,9 +299,6 @@ extern const size_t pc_rhel_7_6_compat_len; - extern GlobalProperty pc_rhel_7_5_compat[]; - extern const size_t pc_rhel_7_5_compat_len; - --extern GlobalProperty pc_rhel_7_4_compat[]; --extern const size_t pc_rhel_7_4_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-RHEL-7.5.0-machine-types.patch b/SOURCES/kvm-Remove-RHEL-7.5.0-machine-types.patch deleted file mode 100644 index ed51c11..0000000 --- a/SOURCES/kvm-Remove-RHEL-7.5.0-machine-types.patch +++ /dev/null @@ -1,210 +0,0 @@ -From 6de2502ef6f2ee68842bed7d09b0a2c7ac57b11b Mon Sep 17 00:00:00 2001 -From: Juan Quintela -Date: Tue, 3 Aug 2021 12:24:36 +0200 -Subject: [PATCH 08/39] Remove RHEL 7.5.0 machine types - -RH-Author: quintela1 -RH-MergeRequest: 30: Remove RHEL 7.x.0 machine types -RH-Commit: [6/6] a4a72853fda905fe5036520f6095032e308cb51f (juan.quintela/qemu-kvm) -RH-Bugzilla: 1968519 -RH-Acked-by: Cornelia Huck -RH-Acked-by: Thomas Huth -RH-Acked-by: Miroslav Rezanina - -Signed-off-by: Juan Quintela -Signed-off-by: Miroslav Rezanina ---- - hw/core/machine.c | 20 -------------------- - hw/i386/pc.c | 18 ------------------ - hw/i386/pc_piix.c | 20 -------------------- - hw/i386/pc_q35.c | 20 -------------------- - hw/ppc/spapr.c | 31 ------------------------------- - include/hw/boards.h | 3 --- - include/hw/i386/pc.h | 3 --- - 7 files changed, 115 deletions(-) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 6dc2651d73..b271389681 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -195,26 +195,6 @@ GlobalProperty hw_compat_rhel_7_6[] = { - }; - const size_t hw_compat_rhel_7_6_len = G_N_ELEMENTS(hw_compat_rhel_7_6); - --/* The same as hw_compat_2_11 + hw_compat_2_10 */ --GlobalProperty hw_compat_rhel_7_5[] = { -- /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -- { "hpet", "hpet-offset-saved", "false" }, -- /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -- { "virtio-blk-pci", "vectors", "2" }, -- /* hw_compat_rhel_7_5 from hw_compat_2_11 */ -- { "vhost-user-blk-pci", "vectors", "2" }, -- /* hw_compat_rhel_7_5 from hw_compat_2_11 -- bz 1608778 modified for our naming */ -- { "e1000-82540em", "migrate_tso_props", "off" }, -- /* hw_compat_rhel_7_5 from hw_compat_2_10 */ -- { "virtio-mouse-device", "wheel-axis", "false" }, -- /* hw_compat_rhel_7_5 from hw_compat_2_10 */ -- { "virtio-tablet-device", "wheel-axis", "false" }, -- { "cirrus-vga", "vgamem_mb", "16" }, -- { "migration", "decompress-error-check", "off" }, --}; --const size_t hw_compat_rhel_7_5_len = G_N_ELEMENTS(hw_compat_rhel_7_5); -- - GlobalProperty hw_compat_5_2[] = { - { "ICH9-LPC", "smm-compat", "on"}, - { "PIIX4_PM", "smm-compat", "on"}, -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 6b39abce02..88972dc3e6 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -459,24 +459,6 @@ GlobalProperty pc_rhel_7_6_compat[] = { - }; - const size_t pc_rhel_7_6_compat_len = G_N_ELEMENTS(pc_rhel_7_6_compat); - --/* Similar to PC_COMPAT_2_11 + PC_COMPAT_2_10, but: -- * - x-hv-max-vps was backported to 7.5 -- * - x-pci-hole64-fix was backported to 7.5 -- */ --GlobalProperty pc_rhel_7_5_compat[] = { -- /* pc_rhel_7_5_compat from pc_compat_2_11 */ -- { "Skylake-Server" "-" TYPE_X86_CPU, "clflushopt", "off" }, -- /* pc_rhel_7_5_compat from pc_compat_2_12 */ -- { TYPE_X86_CPU, "legacy-cache", "on" }, -- /* pc_rhel_7_5_compat from pc_compat_2_12 */ -- { TYPE_X86_CPU, "topoext", "off" }, -- /* pc_rhel_7_5_compat from pc_compat_2_12 */ -- { "EPYC-" TYPE_X86_CPU, "xlevel", stringify(0x8000000a) }, -- /* pc_rhel_7_5_compat from pc_compat_2_12 */ -- { "EPYC-IBPB-" TYPE_X86_CPU, "xlevel", stringify(0x8000000a) }, --}; --const size_t pc_rhel_7_5_compat_len = G_N_ELEMENTS(pc_rhel_7_5_compat); -- - /* - * The PC_RHEL_*_COMPAT serve the same purpose for RHEL-7 machine - * types as the PC_COMPAT_* do for upstream types. -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index fe2ac7593a..ba7926cfae 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -991,23 +991,3 @@ static void pc_machine_rhel760_options(MachineClass *m) - - DEFINE_PC_MACHINE(rhel760, "pc-i440fx-rhel7.6.0", pc_init_rhel760, - pc_machine_rhel760_options); -- --static void pc_init_rhel750(MachineState *machine) --{ -- pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, \ -- TYPE_I440FX_PCI_DEVICE); --} -- --static void pc_machine_rhel750_options(MachineClass *m) --{ -- pc_machine_rhel760_options(m); -- m->alias = NULL; -- m->is_default = 0; -- m->desc = "RHEL 7.5.0 PC (i440FX + PIIX, 1996)"; -- m->auto_enable_numa_with_memhp = false; -- compat_props_add(m->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -- compat_props_add(m->compat_props, pc_rhel_7_5_compat, pc_rhel_7_5_compat_len); --} -- --DEFINE_PC_MACHINE(rhel750, "pc-i440fx-rhel7.5.0", pc_init_rhel750, -- pc_machine_rhel750_options); -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 9958ed9184..f93825d603 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -754,23 +754,3 @@ static void pc_q35_machine_rhel760_options(MachineClass *m) - - DEFINE_PC_MACHINE(q35_rhel760, "pc-q35-rhel7.6.0", pc_q35_init_rhel760, - pc_q35_machine_rhel760_options); -- --static void pc_q35_init_rhel750(MachineState *machine) --{ -- pc_q35_init(machine); --} -- --static void pc_q35_machine_rhel750_options(MachineClass *m) --{ -- PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel760_options(m); -- m->alias = NULL; -- m->desc = "RHEL-7.5.0 PC (Q35 + ICH9, 2009)"; -- m->auto_enable_numa_with_memhp = false; -- pcmc->default_nic_model = "e1000"; -- compat_props_add(m->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -- compat_props_add(m->compat_props, pc_rhel_7_5_compat, pc_rhel_7_5_compat_len); --} -- --DEFINE_PC_MACHINE(q35_rhel750, "pc-q35-rhel7.5.0", pc_q35_init_rhel750, -- pc_q35_machine_rhel750_options); -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index bdabbf8b81..cda75a8cfe 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -5282,35 +5282,4 @@ static void spapr_machine_rhel760sxxm_class_options(MachineClass *mc) - - DEFINE_SPAPR_MACHINE(rhel760sxxm, "rhel7.6.0-sxxm", false); - --static void spapr_machine_rhel750_class_options(MachineClass *mc) --{ -- spapr_machine_rhel760_class_options(mc); -- compat_props_add(mc->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -- --} -- --DEFINE_SPAPR_MACHINE(rhel750, "rhel7.5.0", false); -- --/* -- * pseries-rhel7.5.0-sxxm -- * -- * pseries-rhel7.5.0 with speculative execution exploit mitigations enabled by default -- */ -- --static void spapr_machine_rhel750sxxm_class_options(MachineClass *mc) --{ -- SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc); -- -- spapr_machine_rhel750_class_options(mc); -- smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND; -- smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_FIXED_CCD; --} -- --DEFINE_SPAPR_MACHINE(rhel750sxxm, "rhel7.5.0-sxxm", false); --static void spapr_machine_register_types(void) --{ -- type_register_static(&spapr_machine_info); --} -- - type_init(spapr_machine_register_types) -diff --git a/include/hw/boards.h b/include/hw/boards.h -index f27170b6fb..73f7dcdb35 100644 ---- a/include/hw/boards.h -+++ b/include/hw/boards.h -@@ -433,7 +433,4 @@ 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 GlobalProperty hw_compat_rhel_7_5[]; --extern const size_t hw_compat_rhel_7_5_len; -- - #endif -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index ff93dfb372..549e581a98 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -296,9 +296,6 @@ extern const size_t pc_rhel_8_0_compat_len; - extern GlobalProperty pc_rhel_7_6_compat[]; - extern const size_t pc_rhel_7_6_compat_len; - --extern GlobalProperty pc_rhel_7_5_compat[]; --extern const size_t pc_rhel_7_5_compat_len; -- - /* Helper for setting model-id for CPU models that changed model-id - * depending on QEMU versions up to QEMU 2.4. - */ --- -2.27.0 - diff --git a/SOURCES/kvm-Remove-SPICE-and-QXL-from-x86_64-rh-devices.mak.patch b/SOURCES/kvm-Remove-SPICE-and-QXL-from-x86_64-rh-devices.mak.patch deleted file mode 100644 index 7fdb392..0000000 --- a/SOURCES/kvm-Remove-SPICE-and-QXL-from-x86_64-rh-devices.mak.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c51bf45304812b4da010bdd3db1b1d59c44af4ee Mon Sep 17 00:00:00 2001 -From: Uri Lublin -Date: Tue, 27 Apr 2021 18:37:09 +0300 -Subject: [PATCH 2/4] Remove SPICE and QXL from x86_64-rh-devices.mak -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Uri Lublin (uril) -RH-MergeRequest: 3: Build qemu-kvm without SPICE and QXL -RH-Commit: [1/3] 8f6186049d22c3a6e1bfb1cf2bfe88a8fc8c2271 -RH-Bugzilla: 1906168 -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Danilo de Paula -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Daniel P. Berrangé ---- - default-configs/devices/x86_64-rh-devices.mak | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index 9f41400530..d09c138fc6 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -60,7 +60,6 @@ CONFIG_PFLASH_CFI01=y - CONFIG_PVPANIC_ISA=y - CONFIG_PXB=y - CONFIG_Q35=y --CONFIG_QXL=y - CONFIG_RTL8139_PCI=y - CONFIG_SCSI=y - CONFIG_SERIAL=y -@@ -70,7 +69,6 @@ CONFIG_SEV=y - CONFIG_SGA=y - CONFIG_SMBIOS=y - CONFIG_SMBUS_EEPROM=y --CONFIG_SPICE=y - CONFIG_TEST_DEVICES=y - CONFIG_USB=y - CONFIG_USB_EHCI=y --- -2.27.0 - diff --git a/SOURCES/kvm-Revert-disable-sga-device.patch b/SOURCES/kvm-Revert-disable-sga-device.patch deleted file mode 100644 index 96b4ead..0000000 --- a/SOURCES/kvm-Revert-disable-sga-device.patch +++ /dev/null @@ -1,42 +0,0 @@ -From d9a64fbf2de6b0ffdc96b2818495b211fd21411b Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Fri, 17 Sep 2021 09:34:21 +0200 -Subject: [PATCH 1/2] Revert "disable sga device" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 38: Revert "disable sga device" -RH-Commit: [1/2] f69f0fb209301e73b3ddbe59c5a7f407beeb368f -RH-Bugzilla: 2002993 -RH-Acked-by: Michal Prívozník -RH-Acked-by: Laszlo Ersek -RH-Acked-by: Richard W.M. Jones - -This reverts commit 86338b2497c47ec6e7175197f6a2ed6af0fcfe73. - -Do it later (for GA) as it depends on libvirt changes. - -RH-Bugzilla: 2002993 - -Signed-off-by: Gerd Hoffmann ---- - default-configs/devices/x86_64-rh-devices.mak | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index 31c290d02d..8ae2747bf6 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -65,6 +65,7 @@ CONFIG_SERIAL=y - CONFIG_SERIAL_ISA=y - CONFIG_SERIAL_PCI=y - CONFIG_SEV=y -+CONFIG_SGA=y - CONFIG_SMBIOS=y - CONFIG_SMBUS_EEPROM=y - CONFIG_TEST_DEVICES=y --- -2.27.0 - diff --git a/SOURCES/kvm-Update-Linux-headers-to-5.13-rc4.patch b/SOURCES/kvm-Update-Linux-headers-to-5.13-rc4.patch deleted file mode 100644 index a06d102..0000000 --- a/SOURCES/kvm-Update-Linux-headers-to-5.13-rc4.patch +++ /dev/null @@ -1,5465 +0,0 @@ -From 5df5b2094167f0bc6c728933b990982fe012e33d Mon Sep 17 00:00:00 2001 -From: "plai@redhat.com" -Date: Thu, 29 Jul 2021 07:42:25 -0400 -Subject: [PATCH 15/39] Update Linux headers to 5.13-rc4 - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [7/15] 2e8a71b8e0d02d2a16cd6dd2234895a9db59fa0d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Signed-off-by: Eduardo Habkost -Message-Id: <20210603191541.2862286-1-ehabkost@redhat.com> -Signed-off-by: Eduardo Habkost -(cherry picked from commit 278f064e452468d66ee15c3f453826e697ec6832) -Signed-off-by: Paul Lai -Signed-off-by: Miroslav Rezanina ---- - .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h | 35 - - include/standard-headers/drm/drm_fourcc.h | 23 +- - include/standard-headers/linux/ethtool.h | 109 ++- - include/standard-headers/linux/fuse.h | 17 +- - include/standard-headers/linux/input.h | 2 +- - include/standard-headers/linux/virtio_bt.h | 31 + - include/standard-headers/linux/virtio_ids.h | 2 + - include/standard-headers/linux/virtio_snd.h | 334 +++++++ - .../standard-headers/rdma/vmw_pvrdma-abi.h | 7 + - linux-headers/asm-generic/unistd.h | 13 +- - linux-headers/asm-mips/unistd_n32.h | 751 +++++++-------- - linux-headers/asm-mips/unistd_n64.h | 703 +++++++------- - linux-headers/asm-mips/unistd_o32.h | 843 ++++++++--------- - linux-headers/asm-powerpc/kvm.h | 2 + - linux-headers/asm-powerpc/unistd_32.h | 856 +++++++++--------- - linux-headers/asm-powerpc/unistd_64.h | 800 ++++++++-------- - linux-headers/asm-s390/unistd_32.h | 4 + - linux-headers/asm-s390/unistd_64.h | 4 + - linux-headers/asm-x86/kvm.h | 3 + - linux-headers/asm-x86/unistd_32.h | 4 + - linux-headers/asm-x86/unistd_64.h | 4 + - linux-headers/asm-x86/unistd_x32.h | 4 + - linux-headers/linux/kvm.h | 131 ++- - linux-headers/linux/userfaultfd.h | 36 +- - linux-headers/linux/vfio.h | 35 + - 25 files changed, 2707 insertions(+), 2046 deletions(-) - create mode 100644 include/standard-headers/linux/virtio_bt.h - create mode 100644 include/standard-headers/linux/virtio_snd.h - -diff --git a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h -index 1677208a41..94d41b202c 100644 ---- a/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h -+++ b/include/standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h -@@ -70,30 +70,6 @@ enum pvrdma_mtu { - PVRDMA_MTU_4096 = 5, - }; - --static inline int pvrdma_mtu_enum_to_int(enum pvrdma_mtu mtu) --{ -- switch (mtu) { -- case PVRDMA_MTU_256: return 256; -- case PVRDMA_MTU_512: return 512; -- case PVRDMA_MTU_1024: return 1024; -- case PVRDMA_MTU_2048: return 2048; -- case PVRDMA_MTU_4096: return 4096; -- default: return -1; -- } --} -- --static inline enum pvrdma_mtu pvrdma_mtu_int_to_enum(int mtu) --{ -- switch (mtu) { -- case 256: return PVRDMA_MTU_256; -- case 512: return PVRDMA_MTU_512; -- case 1024: return PVRDMA_MTU_1024; -- case 2048: return PVRDMA_MTU_2048; -- case 4096: -- default: return PVRDMA_MTU_4096; -- } --} -- - enum pvrdma_port_state { - PVRDMA_PORT_NOP = 0, - PVRDMA_PORT_DOWN = 1, -@@ -138,17 +114,6 @@ enum pvrdma_port_width { - PVRDMA_WIDTH_12X = 8, - }; - --static inline int pvrdma_width_enum_to_int(enum pvrdma_port_width width) --{ -- switch (width) { -- case PVRDMA_WIDTH_1X: return 1; -- case PVRDMA_WIDTH_4X: return 4; -- case PVRDMA_WIDTH_8X: return 8; -- case PVRDMA_WIDTH_12X: return 12; -- default: return -1; -- } --} -- - enum pvrdma_port_speed { - PVRDMA_SPEED_SDR = 1, - PVRDMA_SPEED_DDR = 2, -diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h -index c47e19810c..a61ae520c2 100644 ---- a/include/standard-headers/drm/drm_fourcc.h -+++ b/include/standard-headers/drm/drm_fourcc.h -@@ -526,6 +526,25 @@ extern "C" { - */ - #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7) - -+/* -+ * Intel Color Control Surface with Clear Color (CCS) for Gen-12 render -+ * compression. -+ * -+ * The main surface is Y-tiled and is at plane index 0 whereas CCS is linear -+ * and at index 1. The clear color is stored at index 2, and the pitch should -+ * be ignored. The clear color structure is 256 bits. The first 128 bits -+ * represents Raw Clear Color Red, Green, Blue and Alpha color each represented -+ * by 32 bits. The raw clear color is consumed by the 3d engine and generates -+ * the converted clear color of size 64 bits. The first 32 bits store the Lower -+ * Converted Clear Color value and the next 32 bits store the Higher Converted -+ * Clear Color value when applicable. The Converted Clear Color values are -+ * consumed by the DE. The last 64 bits are used to store Color Discard Enable -+ * and Depth Clear Value Valid which are ignored by the DE. A CCS cache line -+ * corresponds to an area of 4x1 tiles in the main surface. The main surface -+ * pitch is required to be a multiple of 4 tile widths. -+ */ -+#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8) -+ - /* - * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks - * -@@ -1035,9 +1054,9 @@ drm_fourcc_canonicalize_nvidia_format_mod(uint64_t modifier) - * Not all combinations are valid, and different SoCs may support different - * combinations of layout and options. - */ --#define __fourcc_mod_amlogic_layout_mask 0xf -+#define __fourcc_mod_amlogic_layout_mask 0xff - #define __fourcc_mod_amlogic_options_shift 8 --#define __fourcc_mod_amlogic_options_mask 0xf -+#define __fourcc_mod_amlogic_options_mask 0xff - - #define DRM_FORMAT_MOD_AMLOGIC_FBC(__layout, __options) \ - fourcc_mod_code(AMLOGIC, \ -diff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h -index 8bfd01d230..218d944a17 100644 ---- a/include/standard-headers/linux/ethtool.h -+++ b/include/standard-headers/linux/ethtool.h -@@ -26,6 +26,14 @@ - * have the same layout for 32-bit and 64-bit userland. - */ - -+/* Note on reserved space. -+ * Reserved fields must not be accessed directly by user space because -+ * they may be replaced by a different field in the future. They must -+ * be initialized to zero before making the request, e.g. via memset -+ * of the entire structure or implicitly by not being set in a structure -+ * initializer. -+ */ -+ - /** - * struct ethtool_cmd - DEPRECATED, link control and status - * This structure is DEPRECATED, please use struct ethtool_link_settings. -@@ -67,6 +75,7 @@ - * and other link features that the link partner advertised - * through autonegotiation; 0 if unknown or not applicable. - * Read-only. -+ * @reserved: Reserved for future use; see the note on reserved space. - * - * The link speed in Mbps is split between @speed and @speed_hi. Use - * the ethtool_cmd_speed() and ethtool_cmd_speed_set() functions to -@@ -155,6 +164,7 @@ static inline uint32_t ethtool_cmd_speed(const struct ethtool_cmd *ep) - * @bus_info: Device bus address. This should match the dev_name() - * string for the underlying bus device, if there is one. May be - * an empty string. -+ * @reserved2: Reserved for future use; see the note on reserved space. - * @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and - * %ETHTOOL_SPFLAGS commands; also the number of strings in the - * %ETH_SS_PRIV_FLAGS set -@@ -356,6 +366,7 @@ struct ethtool_eeprom { - * @tx_lpi_timer: Time in microseconds the interface delays prior to asserting - * its tx lpi (after reaching 'idle' state). Effective only when eee - * was negotiated and tx_lpi_enabled was set. -+ * @reserved: Reserved for future use; see the note on reserved space. - */ - struct ethtool_eee { - uint32_t cmd; -@@ -374,6 +385,7 @@ struct ethtool_eee { - * @cmd: %ETHTOOL_GMODULEINFO - * @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx - * @eeprom_len: Length of the eeprom -+ * @reserved: Reserved for future use; see the note on reserved space. - * - * This structure is used to return the information to - * properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM. -@@ -579,9 +591,7 @@ struct ethtool_pauseparam { - uint32_t tx_pause; - }; - --/** -- * enum ethtool_link_ext_state - link extended state -- */ -+/* Link extended state */ - enum ethtool_link_ext_state { - ETHTOOL_LINK_EXT_STATE_AUTONEG, - ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE, -@@ -595,10 +605,7 @@ enum ethtool_link_ext_state { - ETHTOOL_LINK_EXT_STATE_OVERHEAT, - }; - --/** -- * enum ethtool_link_ext_substate_autoneg - more information in addition to -- * ETHTOOL_LINK_EXT_STATE_AUTONEG. -- */ -+/* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */ - enum ethtool_link_ext_substate_autoneg { - ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1, - ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED, -@@ -608,9 +615,7 @@ enum ethtool_link_ext_substate_autoneg { - ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD, - }; - --/** -- * enum ethtool_link_ext_substate_link_training - more information in addition to -- * ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE. -+/* More information in addition to ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE. - */ - enum ethtool_link_ext_substate_link_training { - ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1, -@@ -619,9 +624,7 @@ enum ethtool_link_ext_substate_link_training { - ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT, - }; - --/** -- * enum ethtool_link_ext_substate_logical_mismatch - more information in addition -- * to ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH. -+/* More information in addition to ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH. - */ - enum ethtool_link_ext_substate_link_logical_mismatch { - ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1, -@@ -631,19 +634,14 @@ enum ethtool_link_ext_substate_link_logical_mismatch { - ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED, - }; - --/** -- * enum ethtool_link_ext_substate_bad_signal_integrity - more information in -- * addition to ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY. -+/* More information in addition to ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY. - */ - enum ethtool_link_ext_substate_bad_signal_integrity { - ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1, - ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE, - }; - --/** -- * enum ethtool_link_ext_substate_cable_issue - more information in -- * addition to ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE. -- */ -+/* More information in addition to ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE. */ - enum ethtool_link_ext_substate_cable_issue { - ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1, - ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE, -@@ -661,6 +659,7 @@ enum ethtool_link_ext_substate_cable_issue { - * now deprecated - * @ETH_SS_FEATURES: Device feature names - * @ETH_SS_RSS_HASH_FUNCS: RSS hush function names -+ * @ETH_SS_TUNABLES: tunable names - * @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS - * @ETH_SS_PHY_TUNABLES: PHY tunable names - * @ETH_SS_LINK_MODES: link mode names -@@ -670,6 +669,13 @@ enum ethtool_link_ext_substate_cable_issue { - * @ETH_SS_TS_TX_TYPES: timestamping Tx types - * @ETH_SS_TS_RX_FILTERS: timestamping Rx filters - * @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types -+ * @ETH_SS_STATS_STD: standardized stats -+ * @ETH_SS_STATS_ETH_PHY: names of IEEE 802.3 PHY statistics -+ * @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics -+ * @ETH_SS_STATS_ETH_CTRL: names of IEEE 802.3 MAC Control statistics -+ * @ETH_SS_STATS_RMON: names of RMON statistics -+ * -+ * @ETH_SS_COUNT: number of defined string sets - */ - enum ethtool_stringset { - ETH_SS_TEST = 0, -@@ -688,6 +694,11 @@ enum ethtool_stringset { - ETH_SS_TS_TX_TYPES, - ETH_SS_TS_RX_FILTERS, - ETH_SS_UDP_TUNNEL_TYPES, -+ ETH_SS_STATS_STD, -+ ETH_SS_STATS_ETH_PHY, -+ ETH_SS_STATS_ETH_MAC, -+ ETH_SS_STATS_ETH_CTRL, -+ ETH_SS_STATS_RMON, - - /* add new constants above here */ - ETH_SS_COUNT -@@ -715,6 +726,7 @@ struct ethtool_gstrings { - /** - * struct ethtool_sset_info - string set information - * @cmd: Command number = %ETHTOOL_GSSET_INFO -+ * @reserved: Reserved for future use; see the note on reserved space. - * @sset_mask: On entry, a bitmask of string sets to query, with bits - * numbered according to &enum ethtool_stringset. On return, a - * bitmask of those string sets queried that are supported. -@@ -759,6 +771,7 @@ enum ethtool_test_flags { - * @flags: A bitmask of flags from &enum ethtool_test_flags. Some - * flags may be set by the user on entry; others may be set by - * the driver on return. -+ * @reserved: Reserved for future use; see the note on reserved space. - * @len: On return, the number of test results - * @data: Array of test results - * -@@ -959,6 +972,7 @@ union ethtool_flow_union { - * @vlan_etype: VLAN EtherType - * @vlan_tci: VLAN tag control information - * @data: user defined data -+ * @padding: Reserved for future use; see the note on reserved space. - * - * Note, @vlan_etype, @vlan_tci, and @data are only valid if %FLOW_EXT - * is set in &struct ethtool_rx_flow_spec @flow_type. -@@ -1134,7 +1148,8 @@ struct ethtool_rxfh_indir { - * hardware hash key. - * @hfunc: Defines the current RSS hash function used by HW (or to be set to). - * Valid values are one of the %ETH_RSS_HASH_*. -- * @rsvd: Reserved for future extensions. -+ * @rsvd8: Reserved for future use; see the note on reserved space. -+ * @rsvd32: Reserved for future use; see the note on reserved space. - * @rss_config: RX ring/queue index for each hash value i.e., indirection table - * of @indir_size uint32_t elements, followed by hash key of @key_size - * bytes. -@@ -1302,7 +1317,9 @@ struct ethtool_sfeatures { - * @so_timestamping: bit mask of the sum of the supported SO_TIMESTAMPING flags - * @phc_index: device index of the associated PHC, or -1 if there is none - * @tx_types: bit mask of the supported hwtstamp_tx_types enumeration values -+ * @tx_reserved: Reserved for future use; see the note on reserved space. - * @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values -+ * @rx_reserved: Reserved for future use; see the note on reserved space. - * - * The bits in the 'tx_types' and 'rx_filters' fields correspond to - * the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values, -@@ -1376,15 +1393,33 @@ struct ethtool_per_queue_op { - }; - - /** -- * struct ethtool_fecparam - Ethernet forward error correction(fec) parameters -+ * struct ethtool_fecparam - Ethernet Forward Error Correction parameters - * @cmd: Command number = %ETHTOOL_GFECPARAM or %ETHTOOL_SFECPARAM -- * @active_fec: FEC mode which is active on porte -- * @fec: Bitmask of supported/configured FEC modes -- * @rsvd: Reserved for future extensions. i.e FEC bypass feature. -+ * @active_fec: FEC mode which is active on the port, single bit set, GET only. -+ * @fec: Bitmask of configured FEC modes. -+ * @reserved: Reserved for future extensions, ignore on GET, write 0 for SET. - * -- * Drivers should reject a non-zero setting of @autoneg when -- * autoneogotiation is disabled (or not supported) for the link. -+ * Note that @reserved was never validated on input and ethtool user space -+ * left it uninitialized when calling SET. Hence going forward it can only be -+ * used to return a value to userspace with GET. -+ * -+ * FEC modes supported by the device can be read via %ETHTOOL_GLINKSETTINGS. -+ * FEC settings are configured by link autonegotiation whenever it's enabled. -+ * With autoneg on %ETHTOOL_GFECPARAM can be used to read the current mode. -+ * -+ * When autoneg is disabled %ETHTOOL_SFECPARAM controls the FEC settings. -+ * It is recommended that drivers only accept a single bit set in @fec. -+ * When multiple bits are set in @fec drivers may pick mode in an implementation -+ * dependent way. Drivers should reject mixing %ETHTOOL_FEC_AUTO_BIT with other -+ * FEC modes, because it's unclear whether in this case other modes constrain -+ * AUTO or are independent choices. -+ * Drivers must reject SET requests if they support none of the requested modes. -+ * -+ * If device does not support FEC drivers may use %ETHTOOL_FEC_NONE instead -+ * of returning %EOPNOTSUPP from %ETHTOOL_GFECPARAM. - * -+ * See enum ethtool_fec_config_bits for definition of valid bits for both -+ * @fec and @active_fec. - */ - struct ethtool_fecparam { - uint32_t cmd; -@@ -1396,11 +1431,16 @@ struct ethtool_fecparam { - - /** - * enum ethtool_fec_config_bits - flags definition of ethtool_fec_configuration -- * @ETHTOOL_FEC_NONE: FEC mode configuration is not supported -- * @ETHTOOL_FEC_AUTO: Default/Best FEC mode provided by driver -- * @ETHTOOL_FEC_OFF: No FEC Mode -- * @ETHTOOL_FEC_RS: Reed-Solomon Forward Error Detection mode -- * @ETHTOOL_FEC_BASER: Base-R/Reed-Solomon Forward Error Detection mode -+ * @ETHTOOL_FEC_NONE_BIT: FEC mode configuration is not supported. Should not -+ * be used together with other bits. GET only. -+ * @ETHTOOL_FEC_AUTO_BIT: Select default/best FEC mode automatically, usually -+ * based link mode and SFP parameters read from module's -+ * EEPROM. This bit does _not_ mean autonegotiation. -+ * @ETHTOOL_FEC_OFF_BIT: No FEC Mode -+ * @ETHTOOL_FEC_RS_BIT: Reed-Solomon FEC Mode -+ * @ETHTOOL_FEC_BASER_BIT: Base-R/Reed-Solomon FEC Mode -+ * @ETHTOOL_FEC_LLRS_BIT: Low Latency Reed Solomon FEC Mode (25G/50G Ethernet -+ * Consortium) - */ - enum ethtool_fec_config_bits { - ETHTOOL_FEC_NONE_BIT, -@@ -1958,6 +1998,11 @@ enum ethtool_reset_flags { - * autonegotiation; 0 if unknown or not applicable. Read-only. - * @transceiver: Used to distinguish different possible PHY types, - * reported consistently by PHYLIB. Read-only. -+ * @master_slave_cfg: Master/slave port mode. -+ * @master_slave_state: Master/slave port state. -+ * @reserved: Reserved for future use; see the note on reserved space. -+ * @reserved1: Reserved for future use; see the note on reserved space. -+ * @link_mode_masks: Variable length bitmaps. - * - * If autonegotiation is disabled, the speed and @duplex represent the - * fixed link mode and are writable if the driver supports multiple -diff --git a/include/standard-headers/linux/fuse.h b/include/standard-headers/linux/fuse.h -index 950d7edb7e..cce105bfba 100644 ---- a/include/standard-headers/linux/fuse.h -+++ b/include/standard-headers/linux/fuse.h -@@ -179,6 +179,8 @@ - * 7.33 - * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID - * - add FUSE_OPEN_KILL_SUIDGID -+ * - extend fuse_setxattr_in, add FUSE_SETXATTR_EXT -+ * - add FUSE_SETXATTR_ACL_KILL_SGID - */ - - #ifndef _LINUX_FUSE_H -@@ -326,6 +328,7 @@ struct fuse_file_lock { - * does not have CAP_FSETID. Additionally upon - * write/truncate sgid is killed only if file has group - * execute permission. (Same as Linux VFS behavior). -+ * FUSE_SETXATTR_EXT: Server supports extended struct fuse_setxattr_in - */ - #define FUSE_ASYNC_READ (1 << 0) - #define FUSE_POSIX_LOCKS (1 << 1) -@@ -356,6 +359,7 @@ struct fuse_file_lock { - #define FUSE_MAP_ALIGNMENT (1 << 26) - #define FUSE_SUBMOUNTS (1 << 27) - #define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) -+#define FUSE_SETXATTR_EXT (1 << 29) - - /** - * CUSE INIT request/reply flags -@@ -447,6 +451,12 @@ struct fuse_file_lock { - */ - #define FUSE_OPEN_KILL_SUIDGID (1 << 0) - -+/** -+ * setxattr flags -+ * FUSE_SETXATTR_ACL_KILL_SGID: Clear SGID when system.posix_acl_access is set -+ */ -+#define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0) -+ - enum fuse_opcode { - FUSE_LOOKUP = 1, - FUSE_FORGET = 2, /* no reply */ -@@ -677,9 +687,13 @@ struct fuse_fsync_in { - uint32_t padding; - }; - -+#define FUSE_COMPAT_SETXATTR_IN_SIZE 8 -+ - struct fuse_setxattr_in { - uint32_t size; - uint32_t flags; -+ uint32_t setxattr_flags; -+ uint32_t padding; - }; - - struct fuse_getxattr_in { -@@ -899,7 +913,8 @@ struct fuse_notify_retrieve_in { - }; - - /* Device ioctls: */ --#define FUSE_DEV_IOC_CLONE _IOR(229, 0, uint32_t) -+#define FUSE_DEV_IOC_MAGIC 229 -+#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t) - - struct fuse_lseek_in { - uint64_t fh; -diff --git a/include/standard-headers/linux/input.h b/include/standard-headers/linux/input.h -index f89c986190..7822c24178 100644 ---- a/include/standard-headers/linux/input.h -+++ b/include/standard-headers/linux/input.h -@@ -81,7 +81,7 @@ struct input_id { - * in units per radian. - * When INPUT_PROP_ACCELEROMETER is set the resolution changes. - * The main axes (ABS_X, ABS_Y, ABS_Z) are then reported in -- * in units per g (units/g) and in units per degree per second -+ * units per g (units/g) and in units per degree per second - * (units/deg/s) for rotational axes (ABS_RX, ABS_RY, ABS_RZ). - */ - struct input_absinfo { -diff --git a/include/standard-headers/linux/virtio_bt.h b/include/standard-headers/linux/virtio_bt.h -new file mode 100644 -index 0000000000..245e1eff4b ---- /dev/null -+++ b/include/standard-headers/linux/virtio_bt.h -@@ -0,0 +1,31 @@ -+/* SPDX-License-Identifier: BSD-3-Clause */ -+ -+#ifndef _LINUX_VIRTIO_BT_H -+#define _LINUX_VIRTIO_BT_H -+ -+#include "standard-headers/linux/virtio_types.h" -+ -+/* Feature bits */ -+#define VIRTIO_BT_F_VND_HCI 0 /* Indicates vendor command support */ -+#define VIRTIO_BT_F_MSFT_EXT 1 /* Indicates MSFT vendor support */ -+#define VIRTIO_BT_F_AOSP_EXT 2 /* Indicates AOSP vendor support */ -+ -+enum virtio_bt_config_type { -+ VIRTIO_BT_CONFIG_TYPE_PRIMARY = 0, -+ VIRTIO_BT_CONFIG_TYPE_AMP = 1, -+}; -+ -+enum virtio_bt_config_vendor { -+ VIRTIO_BT_CONFIG_VENDOR_NONE = 0, -+ VIRTIO_BT_CONFIG_VENDOR_ZEPHYR = 1, -+ VIRTIO_BT_CONFIG_VENDOR_INTEL = 2, -+ VIRTIO_BT_CONFIG_VENDOR_REALTEK = 3, -+}; -+ -+struct virtio_bt_config { -+ uint8_t type; -+ uint16_t vendor; -+ uint16_t msft_opcode; -+} QEMU_PACKED; -+ -+#endif /* _LINUX_VIRTIO_BT_H */ -diff --git a/include/standard-headers/linux/virtio_ids.h b/include/standard-headers/linux/virtio_ids.h -index bc1c0621f5..f0c35ce862 100644 ---- a/include/standard-headers/linux/virtio_ids.h -+++ b/include/standard-headers/linux/virtio_ids.h -@@ -51,8 +51,10 @@ - #define VIRTIO_ID_PSTORE 22 /* virtio pstore device */ - #define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ - #define VIRTIO_ID_MEM 24 /* virtio mem */ -+#define VIRTIO_ID_SOUND 25 /* virtio sound */ - #define VIRTIO_ID_FS 26 /* virtio filesystem */ - #define VIRTIO_ID_PMEM 27 /* virtio pmem */ -+#define VIRTIO_ID_BT 28 /* virtio bluetooth */ - #define VIRTIO_ID_MAC80211_HWSIM 29 /* virtio mac80211-hwsim */ - - #endif /* _LINUX_VIRTIO_IDS_H */ -diff --git a/include/standard-headers/linux/virtio_snd.h b/include/standard-headers/linux/virtio_snd.h -new file mode 100644 -index 0000000000..1af96b9fc6 ---- /dev/null -+++ b/include/standard-headers/linux/virtio_snd.h -@@ -0,0 +1,334 @@ -+/* SPDX-License-Identifier: BSD-3-Clause */ -+/* -+ * Copyright (C) 2021 OpenSynergy GmbH -+ */ -+#ifndef VIRTIO_SND_IF_H -+#define VIRTIO_SND_IF_H -+ -+#include "standard-headers/linux/virtio_types.h" -+ -+/******************************************************************************* -+ * CONFIGURATION SPACE -+ */ -+struct virtio_snd_config { -+ /* # of available physical jacks */ -+ uint32_t jacks; -+ /* # of available PCM streams */ -+ uint32_t streams; -+ /* # of available channel maps */ -+ uint32_t chmaps; -+}; -+ -+enum { -+ /* device virtqueue indexes */ -+ VIRTIO_SND_VQ_CONTROL = 0, -+ VIRTIO_SND_VQ_EVENT, -+ VIRTIO_SND_VQ_TX, -+ VIRTIO_SND_VQ_RX, -+ /* # of device virtqueues */ -+ VIRTIO_SND_VQ_MAX -+}; -+ -+/******************************************************************************* -+ * COMMON DEFINITIONS -+ */ -+ -+/* supported dataflow directions */ -+enum { -+ VIRTIO_SND_D_OUTPUT = 0, -+ VIRTIO_SND_D_INPUT -+}; -+ -+enum { -+ /* jack control request types */ -+ VIRTIO_SND_R_JACK_INFO = 1, -+ VIRTIO_SND_R_JACK_REMAP, -+ -+ /* PCM control request types */ -+ VIRTIO_SND_R_PCM_INFO = 0x0100, -+ VIRTIO_SND_R_PCM_SET_PARAMS, -+ VIRTIO_SND_R_PCM_PREPARE, -+ VIRTIO_SND_R_PCM_RELEASE, -+ VIRTIO_SND_R_PCM_START, -+ VIRTIO_SND_R_PCM_STOP, -+ -+ /* channel map control request types */ -+ VIRTIO_SND_R_CHMAP_INFO = 0x0200, -+ -+ /* jack event types */ -+ VIRTIO_SND_EVT_JACK_CONNECTED = 0x1000, -+ VIRTIO_SND_EVT_JACK_DISCONNECTED, -+ -+ /* PCM event types */ -+ VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED = 0x1100, -+ VIRTIO_SND_EVT_PCM_XRUN, -+ -+ /* common status codes */ -+ VIRTIO_SND_S_OK = 0x8000, -+ VIRTIO_SND_S_BAD_MSG, -+ VIRTIO_SND_S_NOT_SUPP, -+ VIRTIO_SND_S_IO_ERR -+}; -+ -+/* common header */ -+struct virtio_snd_hdr { -+ uint32_t code; -+}; -+ -+/* event notification */ -+struct virtio_snd_event { -+ /* VIRTIO_SND_EVT_XXX */ -+ struct virtio_snd_hdr hdr; -+ /* optional event data */ -+ uint32_t data; -+}; -+ -+/* common control request to query an item information */ -+struct virtio_snd_query_info { -+ /* VIRTIO_SND_R_XXX_INFO */ -+ struct virtio_snd_hdr hdr; -+ /* item start identifier */ -+ uint32_t start_id; -+ /* item count to query */ -+ uint32_t count; -+ /* item information size in bytes */ -+ uint32_t size; -+}; -+ -+/* common item information header */ -+struct virtio_snd_info { -+ /* function group node id (High Definition Audio Specification 7.1.2) */ -+ uint32_t hda_fn_nid; -+}; -+ -+/******************************************************************************* -+ * JACK CONTROL MESSAGES -+ */ -+struct virtio_snd_jack_hdr { -+ /* VIRTIO_SND_R_JACK_XXX */ -+ struct virtio_snd_hdr hdr; -+ /* 0 ... virtio_snd_config::jacks - 1 */ -+ uint32_t jack_id; -+}; -+ -+/* supported jack features */ -+enum { -+ VIRTIO_SND_JACK_F_REMAP = 0 -+}; -+ -+struct virtio_snd_jack_info { -+ /* common header */ -+ struct virtio_snd_info hdr; -+ /* supported feature bit map (1 << VIRTIO_SND_JACK_F_XXX) */ -+ uint32_t features; -+ /* pin configuration (High Definition Audio Specification 7.3.3.31) */ -+ uint32_t hda_reg_defconf; -+ /* pin capabilities (High Definition Audio Specification 7.3.4.9) */ -+ uint32_t hda_reg_caps; -+ /* current jack connection status (0: disconnected, 1: connected) */ -+ uint8_t connected; -+ -+ uint8_t padding[7]; -+}; -+ -+/* jack remapping control request */ -+struct virtio_snd_jack_remap { -+ /* .code = VIRTIO_SND_R_JACK_REMAP */ -+ struct virtio_snd_jack_hdr hdr; -+ /* selected association number */ -+ uint32_t association; -+ /* selected sequence number */ -+ uint32_t sequence; -+}; -+ -+/******************************************************************************* -+ * PCM CONTROL MESSAGES -+ */ -+struct virtio_snd_pcm_hdr { -+ /* VIRTIO_SND_R_PCM_XXX */ -+ struct virtio_snd_hdr hdr; -+ /* 0 ... virtio_snd_config::streams - 1 */ -+ uint32_t stream_id; -+}; -+ -+/* supported PCM stream features */ -+enum { -+ VIRTIO_SND_PCM_F_SHMEM_HOST = 0, -+ VIRTIO_SND_PCM_F_SHMEM_GUEST, -+ VIRTIO_SND_PCM_F_MSG_POLLING, -+ VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS, -+ VIRTIO_SND_PCM_F_EVT_XRUNS -+}; -+ -+/* supported PCM sample formats */ -+enum { -+ /* analog formats (width / physical width) */ -+ VIRTIO_SND_PCM_FMT_IMA_ADPCM = 0, /* 4 / 4 bits */ -+ VIRTIO_SND_PCM_FMT_MU_LAW, /* 8 / 8 bits */ -+ VIRTIO_SND_PCM_FMT_A_LAW, /* 8 / 8 bits */ -+ VIRTIO_SND_PCM_FMT_S8, /* 8 / 8 bits */ -+ VIRTIO_SND_PCM_FMT_U8, /* 8 / 8 bits */ -+ VIRTIO_SND_PCM_FMT_S16, /* 16 / 16 bits */ -+ VIRTIO_SND_PCM_FMT_U16, /* 16 / 16 bits */ -+ VIRTIO_SND_PCM_FMT_S18_3, /* 18 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_U18_3, /* 18 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_S20_3, /* 20 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_U20_3, /* 20 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_S24_3, /* 24 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_U24_3, /* 24 / 24 bits */ -+ VIRTIO_SND_PCM_FMT_S20, /* 20 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_U20, /* 20 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_S24, /* 24 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_U24, /* 24 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_S32, /* 32 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_U32, /* 32 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_FLOAT, /* 32 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_FLOAT64, /* 64 / 64 bits */ -+ /* digital formats (width / physical width) */ -+ VIRTIO_SND_PCM_FMT_DSD_U8, /* 8 / 8 bits */ -+ VIRTIO_SND_PCM_FMT_DSD_U16, /* 16 / 16 bits */ -+ VIRTIO_SND_PCM_FMT_DSD_U32, /* 32 / 32 bits */ -+ VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME /* 32 / 32 bits */ -+}; -+ -+/* supported PCM frame rates */ -+enum { -+ VIRTIO_SND_PCM_RATE_5512 = 0, -+ VIRTIO_SND_PCM_RATE_8000, -+ VIRTIO_SND_PCM_RATE_11025, -+ VIRTIO_SND_PCM_RATE_16000, -+ VIRTIO_SND_PCM_RATE_22050, -+ VIRTIO_SND_PCM_RATE_32000, -+ VIRTIO_SND_PCM_RATE_44100, -+ VIRTIO_SND_PCM_RATE_48000, -+ VIRTIO_SND_PCM_RATE_64000, -+ VIRTIO_SND_PCM_RATE_88200, -+ VIRTIO_SND_PCM_RATE_96000, -+ VIRTIO_SND_PCM_RATE_176400, -+ VIRTIO_SND_PCM_RATE_192000, -+ VIRTIO_SND_PCM_RATE_384000 -+}; -+ -+struct virtio_snd_pcm_info { -+ /* common header */ -+ struct virtio_snd_info hdr; -+ /* supported feature bit map (1 << VIRTIO_SND_PCM_F_XXX) */ -+ uint32_t features; -+ /* supported sample format bit map (1 << VIRTIO_SND_PCM_FMT_XXX) */ -+ uint64_t formats; -+ /* supported frame rate bit map (1 << VIRTIO_SND_PCM_RATE_XXX) */ -+ uint64_t rates; -+ /* dataflow direction (VIRTIO_SND_D_XXX) */ -+ uint8_t direction; -+ /* minimum # of supported channels */ -+ uint8_t channels_min; -+ /* maximum # of supported channels */ -+ uint8_t channels_max; -+ -+ uint8_t padding[5]; -+}; -+ -+/* set PCM stream format */ -+struct virtio_snd_pcm_set_params { -+ /* .code = VIRTIO_SND_R_PCM_SET_PARAMS */ -+ struct virtio_snd_pcm_hdr hdr; -+ /* size of the hardware buffer */ -+ uint32_t buffer_bytes; -+ /* size of the hardware period */ -+ uint32_t period_bytes; -+ /* selected feature bit map (1 << VIRTIO_SND_PCM_F_XXX) */ -+ uint32_t features; -+ /* selected # of channels */ -+ uint8_t channels; -+ /* selected sample format (VIRTIO_SND_PCM_FMT_XXX) */ -+ uint8_t format; -+ /* selected frame rate (VIRTIO_SND_PCM_RATE_XXX) */ -+ uint8_t rate; -+ -+ uint8_t padding; -+}; -+ -+/******************************************************************************* -+ * PCM I/O MESSAGES -+ */ -+ -+/* I/O request header */ -+struct virtio_snd_pcm_xfer { -+ /* 0 ... virtio_snd_config::streams - 1 */ -+ uint32_t stream_id; -+}; -+ -+/* I/O request status */ -+struct virtio_snd_pcm_status { -+ /* VIRTIO_SND_S_XXX */ -+ uint32_t status; -+ /* current device latency */ -+ uint32_t latency_bytes; -+}; -+ -+/******************************************************************************* -+ * CHANNEL MAP CONTROL MESSAGES -+ */ -+struct virtio_snd_chmap_hdr { -+ /* VIRTIO_SND_R_CHMAP_XXX */ -+ struct virtio_snd_hdr hdr; -+ /* 0 ... virtio_snd_config::chmaps - 1 */ -+ uint32_t chmap_id; -+}; -+ -+/* standard channel position definition */ -+enum { -+ VIRTIO_SND_CHMAP_NONE = 0, /* undefined */ -+ VIRTIO_SND_CHMAP_NA, /* silent */ -+ VIRTIO_SND_CHMAP_MONO, /* mono stream */ -+ VIRTIO_SND_CHMAP_FL, /* front left */ -+ VIRTIO_SND_CHMAP_FR, /* front right */ -+ VIRTIO_SND_CHMAP_RL, /* rear left */ -+ VIRTIO_SND_CHMAP_RR, /* rear right */ -+ VIRTIO_SND_CHMAP_FC, /* front center */ -+ VIRTIO_SND_CHMAP_LFE, /* low frequency (LFE) */ -+ VIRTIO_SND_CHMAP_SL, /* side left */ -+ VIRTIO_SND_CHMAP_SR, /* side right */ -+ VIRTIO_SND_CHMAP_RC, /* rear center */ -+ VIRTIO_SND_CHMAP_FLC, /* front left center */ -+ VIRTIO_SND_CHMAP_FRC, /* front right center */ -+ VIRTIO_SND_CHMAP_RLC, /* rear left center */ -+ VIRTIO_SND_CHMAP_RRC, /* rear right center */ -+ VIRTIO_SND_CHMAP_FLW, /* front left wide */ -+ VIRTIO_SND_CHMAP_FRW, /* front right wide */ -+ VIRTIO_SND_CHMAP_FLH, /* front left high */ -+ VIRTIO_SND_CHMAP_FCH, /* front center high */ -+ VIRTIO_SND_CHMAP_FRH, /* front right high */ -+ VIRTIO_SND_CHMAP_TC, /* top center */ -+ VIRTIO_SND_CHMAP_TFL, /* top front left */ -+ VIRTIO_SND_CHMAP_TFR, /* top front right */ -+ VIRTIO_SND_CHMAP_TFC, /* top front center */ -+ VIRTIO_SND_CHMAP_TRL, /* top rear left */ -+ VIRTIO_SND_CHMAP_TRR, /* top rear right */ -+ VIRTIO_SND_CHMAP_TRC, /* top rear center */ -+ VIRTIO_SND_CHMAP_TFLC, /* top front left center */ -+ VIRTIO_SND_CHMAP_TFRC, /* top front right center */ -+ VIRTIO_SND_CHMAP_TSL, /* top side left */ -+ VIRTIO_SND_CHMAP_TSR, /* top side right */ -+ VIRTIO_SND_CHMAP_LLFE, /* left LFE */ -+ VIRTIO_SND_CHMAP_RLFE, /* right LFE */ -+ VIRTIO_SND_CHMAP_BC, /* bottom center */ -+ VIRTIO_SND_CHMAP_BLC, /* bottom left center */ -+ VIRTIO_SND_CHMAP_BRC /* bottom right center */ -+}; -+ -+/* maximum possible number of channels */ -+#define VIRTIO_SND_CHMAP_MAX_SIZE 18 -+ -+struct virtio_snd_chmap_info { -+ /* common header */ -+ struct virtio_snd_info hdr; -+ /* dataflow direction (VIRTIO_SND_D_XXX) */ -+ uint8_t direction; -+ /* # of valid channel position values */ -+ uint8_t channels; -+ /* channel position values (VIRTIO_SND_CHMAP_XXX) */ -+ uint8_t positions[VIRTIO_SND_CHMAP_MAX_SIZE]; -+}; -+ -+#endif /* VIRTIO_SND_IF_H */ -diff --git a/include/standard-headers/rdma/vmw_pvrdma-abi.h b/include/standard-headers/rdma/vmw_pvrdma-abi.h -index 0989426a3f..c30182a7ae 100644 ---- a/include/standard-headers/rdma/vmw_pvrdma-abi.h -+++ b/include/standard-headers/rdma/vmw_pvrdma-abi.h -@@ -133,6 +133,13 @@ enum pvrdma_wc_flags { - PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_NETWORK_HDR_TYPE, - }; - -+enum pvrdma_network_type { -+ PVRDMA_NETWORK_IB, -+ PVRDMA_NETWORK_ROCE_V1 = PVRDMA_NETWORK_IB, -+ PVRDMA_NETWORK_IPV4, -+ PVRDMA_NETWORK_IPV6 -+}; -+ - struct pvrdma_alloc_ucontext_resp { - uint32_t qp_tab_size; - uint32_t reserved; -diff --git a/linux-headers/asm-generic/unistd.h b/linux-headers/asm-generic/unistd.h -index 7287529177..6de5a7fc06 100644 ---- a/linux-headers/asm-generic/unistd.h -+++ b/linux-headers/asm-generic/unistd.h -@@ -861,9 +861,20 @@ __SYSCALL(__NR_faccessat2, sys_faccessat2) - __SYSCALL(__NR_process_madvise, sys_process_madvise) - #define __NR_epoll_pwait2 441 - __SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2) -+#define __NR_mount_setattr 442 -+__SYSCALL(__NR_mount_setattr, sys_mount_setattr) -+#define __NR_quotactl_path 443 -+__SYSCALL(__NR_quotactl_path, sys_quotactl_path) -+ -+#define __NR_landlock_create_ruleset 444 -+__SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset) -+#define __NR_landlock_add_rule 445 -+__SYSCALL(__NR_landlock_add_rule, sys_landlock_add_rule) -+#define __NR_landlock_restrict_self 446 -+__SYSCALL(__NR_landlock_restrict_self, sys_landlock_restrict_self) - - #undef __NR_syscalls --#define __NR_syscalls 442 -+#define __NR_syscalls 447 - - /* - * 32 bit systems traditionally used different -diff --git a/linux-headers/asm-mips/unistd_n32.h b/linux-headers/asm-mips/unistd_n32.h -index 59e53b6e07..fce51fee09 100644 ---- a/linux-headers/asm-mips/unistd_n32.h -+++ b/linux-headers/asm-mips/unistd_n32.h -@@ -1,376 +1,379 @@ --#ifndef _ASM_MIPS_UNISTD_N32_H --#define _ASM_MIPS_UNISTD_N32_H -+#ifndef _ASM_UNISTD_N32_H -+#define _ASM_UNISTD_N32_H - --#define __NR_read (__NR_Linux + 0) --#define __NR_write (__NR_Linux + 1) --#define __NR_open (__NR_Linux + 2) --#define __NR_close (__NR_Linux + 3) --#define __NR_stat (__NR_Linux + 4) --#define __NR_fstat (__NR_Linux + 5) --#define __NR_lstat (__NR_Linux + 6) --#define __NR_poll (__NR_Linux + 7) --#define __NR_lseek (__NR_Linux + 8) --#define __NR_mmap (__NR_Linux + 9) --#define __NR_mprotect (__NR_Linux + 10) --#define __NR_munmap (__NR_Linux + 11) --#define __NR_brk (__NR_Linux + 12) --#define __NR_rt_sigaction (__NR_Linux + 13) --#define __NR_rt_sigprocmask (__NR_Linux + 14) --#define __NR_ioctl (__NR_Linux + 15) --#define __NR_pread64 (__NR_Linux + 16) --#define __NR_pwrite64 (__NR_Linux + 17) --#define __NR_readv (__NR_Linux + 18) --#define __NR_writev (__NR_Linux + 19) --#define __NR_access (__NR_Linux + 20) --#define __NR_pipe (__NR_Linux + 21) --#define __NR__newselect (__NR_Linux + 22) --#define __NR_sched_yield (__NR_Linux + 23) --#define __NR_mremap (__NR_Linux + 24) --#define __NR_msync (__NR_Linux + 25) --#define __NR_mincore (__NR_Linux + 26) --#define __NR_madvise (__NR_Linux + 27) --#define __NR_shmget (__NR_Linux + 28) --#define __NR_shmat (__NR_Linux + 29) --#define __NR_shmctl (__NR_Linux + 30) --#define __NR_dup (__NR_Linux + 31) --#define __NR_dup2 (__NR_Linux + 32) --#define __NR_pause (__NR_Linux + 33) --#define __NR_nanosleep (__NR_Linux + 34) --#define __NR_getitimer (__NR_Linux + 35) --#define __NR_setitimer (__NR_Linux + 36) --#define __NR_alarm (__NR_Linux + 37) --#define __NR_getpid (__NR_Linux + 38) --#define __NR_sendfile (__NR_Linux + 39) --#define __NR_socket (__NR_Linux + 40) --#define __NR_connect (__NR_Linux + 41) --#define __NR_accept (__NR_Linux + 42) --#define __NR_sendto (__NR_Linux + 43) --#define __NR_recvfrom (__NR_Linux + 44) --#define __NR_sendmsg (__NR_Linux + 45) --#define __NR_recvmsg (__NR_Linux + 46) --#define __NR_shutdown (__NR_Linux + 47) --#define __NR_bind (__NR_Linux + 48) --#define __NR_listen (__NR_Linux + 49) --#define __NR_getsockname (__NR_Linux + 50) --#define __NR_getpeername (__NR_Linux + 51) --#define __NR_socketpair (__NR_Linux + 52) --#define __NR_setsockopt (__NR_Linux + 53) --#define __NR_getsockopt (__NR_Linux + 54) --#define __NR_clone (__NR_Linux + 55) --#define __NR_fork (__NR_Linux + 56) --#define __NR_execve (__NR_Linux + 57) --#define __NR_exit (__NR_Linux + 58) --#define __NR_wait4 (__NR_Linux + 59) --#define __NR_kill (__NR_Linux + 60) --#define __NR_uname (__NR_Linux + 61) --#define __NR_semget (__NR_Linux + 62) --#define __NR_semop (__NR_Linux + 63) --#define __NR_semctl (__NR_Linux + 64) --#define __NR_shmdt (__NR_Linux + 65) --#define __NR_msgget (__NR_Linux + 66) --#define __NR_msgsnd (__NR_Linux + 67) --#define __NR_msgrcv (__NR_Linux + 68) --#define __NR_msgctl (__NR_Linux + 69) --#define __NR_fcntl (__NR_Linux + 70) --#define __NR_flock (__NR_Linux + 71) --#define __NR_fsync (__NR_Linux + 72) --#define __NR_fdatasync (__NR_Linux + 73) --#define __NR_truncate (__NR_Linux + 74) --#define __NR_ftruncate (__NR_Linux + 75) --#define __NR_getdents (__NR_Linux + 76) --#define __NR_getcwd (__NR_Linux + 77) --#define __NR_chdir (__NR_Linux + 78) --#define __NR_fchdir (__NR_Linux + 79) --#define __NR_rename (__NR_Linux + 80) --#define __NR_mkdir (__NR_Linux + 81) --#define __NR_rmdir (__NR_Linux + 82) --#define __NR_creat (__NR_Linux + 83) --#define __NR_link (__NR_Linux + 84) --#define __NR_unlink (__NR_Linux + 85) --#define __NR_symlink (__NR_Linux + 86) --#define __NR_readlink (__NR_Linux + 87) --#define __NR_chmod (__NR_Linux + 88) --#define __NR_fchmod (__NR_Linux + 89) --#define __NR_chown (__NR_Linux + 90) --#define __NR_fchown (__NR_Linux + 91) --#define __NR_lchown (__NR_Linux + 92) --#define __NR_umask (__NR_Linux + 93) --#define __NR_gettimeofday (__NR_Linux + 94) --#define __NR_getrlimit (__NR_Linux + 95) --#define __NR_getrusage (__NR_Linux + 96) --#define __NR_sysinfo (__NR_Linux + 97) --#define __NR_times (__NR_Linux + 98) --#define __NR_ptrace (__NR_Linux + 99) --#define __NR_getuid (__NR_Linux + 100) --#define __NR_syslog (__NR_Linux + 101) --#define __NR_getgid (__NR_Linux + 102) --#define __NR_setuid (__NR_Linux + 103) --#define __NR_setgid (__NR_Linux + 104) --#define __NR_geteuid (__NR_Linux + 105) --#define __NR_getegid (__NR_Linux + 106) --#define __NR_setpgid (__NR_Linux + 107) --#define __NR_getppid (__NR_Linux + 108) --#define __NR_getpgrp (__NR_Linux + 109) --#define __NR_setsid (__NR_Linux + 110) --#define __NR_setreuid (__NR_Linux + 111) --#define __NR_setregid (__NR_Linux + 112) --#define __NR_getgroups (__NR_Linux + 113) --#define __NR_setgroups (__NR_Linux + 114) --#define __NR_setresuid (__NR_Linux + 115) --#define __NR_getresuid (__NR_Linux + 116) --#define __NR_setresgid (__NR_Linux + 117) --#define __NR_getresgid (__NR_Linux + 118) --#define __NR_getpgid (__NR_Linux + 119) --#define __NR_setfsuid (__NR_Linux + 120) --#define __NR_setfsgid (__NR_Linux + 121) --#define __NR_getsid (__NR_Linux + 122) --#define __NR_capget (__NR_Linux + 123) --#define __NR_capset (__NR_Linux + 124) --#define __NR_rt_sigpending (__NR_Linux + 125) --#define __NR_rt_sigtimedwait (__NR_Linux + 126) --#define __NR_rt_sigqueueinfo (__NR_Linux + 127) --#define __NR_rt_sigsuspend (__NR_Linux + 128) --#define __NR_sigaltstack (__NR_Linux + 129) --#define __NR_utime (__NR_Linux + 130) --#define __NR_mknod (__NR_Linux + 131) --#define __NR_personality (__NR_Linux + 132) --#define __NR_ustat (__NR_Linux + 133) --#define __NR_statfs (__NR_Linux + 134) --#define __NR_fstatfs (__NR_Linux + 135) --#define __NR_sysfs (__NR_Linux + 136) --#define __NR_getpriority (__NR_Linux + 137) --#define __NR_setpriority (__NR_Linux + 138) --#define __NR_sched_setparam (__NR_Linux + 139) --#define __NR_sched_getparam (__NR_Linux + 140) --#define __NR_sched_setscheduler (__NR_Linux + 141) --#define __NR_sched_getscheduler (__NR_Linux + 142) --#define __NR_sched_get_priority_max (__NR_Linux + 143) --#define __NR_sched_get_priority_min (__NR_Linux + 144) --#define __NR_sched_rr_get_interval (__NR_Linux + 145) --#define __NR_mlock (__NR_Linux + 146) --#define __NR_munlock (__NR_Linux + 147) --#define __NR_mlockall (__NR_Linux + 148) --#define __NR_munlockall (__NR_Linux + 149) --#define __NR_vhangup (__NR_Linux + 150) --#define __NR_pivot_root (__NR_Linux + 151) --#define __NR__sysctl (__NR_Linux + 152) --#define __NR_prctl (__NR_Linux + 153) --#define __NR_adjtimex (__NR_Linux + 154) --#define __NR_setrlimit (__NR_Linux + 155) --#define __NR_chroot (__NR_Linux + 156) --#define __NR_sync (__NR_Linux + 157) --#define __NR_acct (__NR_Linux + 158) --#define __NR_settimeofday (__NR_Linux + 159) --#define __NR_mount (__NR_Linux + 160) --#define __NR_umount2 (__NR_Linux + 161) --#define __NR_swapon (__NR_Linux + 162) --#define __NR_swapoff (__NR_Linux + 163) --#define __NR_reboot (__NR_Linux + 164) --#define __NR_sethostname (__NR_Linux + 165) --#define __NR_setdomainname (__NR_Linux + 166) --#define __NR_create_module (__NR_Linux + 167) --#define __NR_init_module (__NR_Linux + 168) --#define __NR_delete_module (__NR_Linux + 169) --#define __NR_get_kernel_syms (__NR_Linux + 170) --#define __NR_query_module (__NR_Linux + 171) --#define __NR_quotactl (__NR_Linux + 172) --#define __NR_nfsservctl (__NR_Linux + 173) --#define __NR_getpmsg (__NR_Linux + 174) --#define __NR_putpmsg (__NR_Linux + 175) --#define __NR_afs_syscall (__NR_Linux + 176) --#define __NR_reserved177 (__NR_Linux + 177) --#define __NR_gettid (__NR_Linux + 178) --#define __NR_readahead (__NR_Linux + 179) --#define __NR_setxattr (__NR_Linux + 180) --#define __NR_lsetxattr (__NR_Linux + 181) --#define __NR_fsetxattr (__NR_Linux + 182) --#define __NR_getxattr (__NR_Linux + 183) --#define __NR_lgetxattr (__NR_Linux + 184) --#define __NR_fgetxattr (__NR_Linux + 185) --#define __NR_listxattr (__NR_Linux + 186) --#define __NR_llistxattr (__NR_Linux + 187) --#define __NR_flistxattr (__NR_Linux + 188) --#define __NR_removexattr (__NR_Linux + 189) --#define __NR_lremovexattr (__NR_Linux + 190) --#define __NR_fremovexattr (__NR_Linux + 191) --#define __NR_tkill (__NR_Linux + 192) --#define __NR_reserved193 (__NR_Linux + 193) --#define __NR_futex (__NR_Linux + 194) --#define __NR_sched_setaffinity (__NR_Linux + 195) --#define __NR_sched_getaffinity (__NR_Linux + 196) --#define __NR_cacheflush (__NR_Linux + 197) --#define __NR_cachectl (__NR_Linux + 198) --#define __NR_sysmips (__NR_Linux + 199) --#define __NR_io_setup (__NR_Linux + 200) --#define __NR_io_destroy (__NR_Linux + 201) --#define __NR_io_getevents (__NR_Linux + 202) --#define __NR_io_submit (__NR_Linux + 203) --#define __NR_io_cancel (__NR_Linux + 204) --#define __NR_exit_group (__NR_Linux + 205) --#define __NR_lookup_dcookie (__NR_Linux + 206) --#define __NR_epoll_create (__NR_Linux + 207) --#define __NR_epoll_ctl (__NR_Linux + 208) --#define __NR_epoll_wait (__NR_Linux + 209) --#define __NR_remap_file_pages (__NR_Linux + 210) --#define __NR_rt_sigreturn (__NR_Linux + 211) --#define __NR_fcntl64 (__NR_Linux + 212) --#define __NR_set_tid_address (__NR_Linux + 213) --#define __NR_restart_syscall (__NR_Linux + 214) --#define __NR_semtimedop (__NR_Linux + 215) --#define __NR_fadvise64 (__NR_Linux + 216) --#define __NR_statfs64 (__NR_Linux + 217) --#define __NR_fstatfs64 (__NR_Linux + 218) --#define __NR_sendfile64 (__NR_Linux + 219) --#define __NR_timer_create (__NR_Linux + 220) --#define __NR_timer_settime (__NR_Linux + 221) --#define __NR_timer_gettime (__NR_Linux + 222) --#define __NR_timer_getoverrun (__NR_Linux + 223) --#define __NR_timer_delete (__NR_Linux + 224) --#define __NR_clock_settime (__NR_Linux + 225) --#define __NR_clock_gettime (__NR_Linux + 226) --#define __NR_clock_getres (__NR_Linux + 227) --#define __NR_clock_nanosleep (__NR_Linux + 228) --#define __NR_tgkill (__NR_Linux + 229) --#define __NR_utimes (__NR_Linux + 230) --#define __NR_mbind (__NR_Linux + 231) --#define __NR_get_mempolicy (__NR_Linux + 232) --#define __NR_set_mempolicy (__NR_Linux + 233) --#define __NR_mq_open (__NR_Linux + 234) --#define __NR_mq_unlink (__NR_Linux + 235) --#define __NR_mq_timedsend (__NR_Linux + 236) --#define __NR_mq_timedreceive (__NR_Linux + 237) --#define __NR_mq_notify (__NR_Linux + 238) --#define __NR_mq_getsetattr (__NR_Linux + 239) --#define __NR_vserver (__NR_Linux + 240) --#define __NR_waitid (__NR_Linux + 241) --#define __NR_add_key (__NR_Linux + 243) --#define __NR_request_key (__NR_Linux + 244) --#define __NR_keyctl (__NR_Linux + 245) --#define __NR_set_thread_area (__NR_Linux + 246) --#define __NR_inotify_init (__NR_Linux + 247) --#define __NR_inotify_add_watch (__NR_Linux + 248) --#define __NR_inotify_rm_watch (__NR_Linux + 249) --#define __NR_migrate_pages (__NR_Linux + 250) --#define __NR_openat (__NR_Linux + 251) --#define __NR_mkdirat (__NR_Linux + 252) --#define __NR_mknodat (__NR_Linux + 253) --#define __NR_fchownat (__NR_Linux + 254) --#define __NR_futimesat (__NR_Linux + 255) --#define __NR_newfstatat (__NR_Linux + 256) --#define __NR_unlinkat (__NR_Linux + 257) --#define __NR_renameat (__NR_Linux + 258) --#define __NR_linkat (__NR_Linux + 259) --#define __NR_symlinkat (__NR_Linux + 260) --#define __NR_readlinkat (__NR_Linux + 261) --#define __NR_fchmodat (__NR_Linux + 262) --#define __NR_faccessat (__NR_Linux + 263) --#define __NR_pselect6 (__NR_Linux + 264) --#define __NR_ppoll (__NR_Linux + 265) --#define __NR_unshare (__NR_Linux + 266) --#define __NR_splice (__NR_Linux + 267) --#define __NR_sync_file_range (__NR_Linux + 268) --#define __NR_tee (__NR_Linux + 269) --#define __NR_vmsplice (__NR_Linux + 270) --#define __NR_move_pages (__NR_Linux + 271) --#define __NR_set_robust_list (__NR_Linux + 272) --#define __NR_get_robust_list (__NR_Linux + 273) --#define __NR_kexec_load (__NR_Linux + 274) --#define __NR_getcpu (__NR_Linux + 275) --#define __NR_epoll_pwait (__NR_Linux + 276) --#define __NR_ioprio_set (__NR_Linux + 277) --#define __NR_ioprio_get (__NR_Linux + 278) --#define __NR_utimensat (__NR_Linux + 279) --#define __NR_signalfd (__NR_Linux + 280) --#define __NR_timerfd (__NR_Linux + 281) --#define __NR_eventfd (__NR_Linux + 282) --#define __NR_fallocate (__NR_Linux + 283) --#define __NR_timerfd_create (__NR_Linux + 284) --#define __NR_timerfd_gettime (__NR_Linux + 285) --#define __NR_timerfd_settime (__NR_Linux + 286) --#define __NR_signalfd4 (__NR_Linux + 287) --#define __NR_eventfd2 (__NR_Linux + 288) --#define __NR_epoll_create1 (__NR_Linux + 289) --#define __NR_dup3 (__NR_Linux + 290) --#define __NR_pipe2 (__NR_Linux + 291) --#define __NR_inotify_init1 (__NR_Linux + 292) --#define __NR_preadv (__NR_Linux + 293) --#define __NR_pwritev (__NR_Linux + 294) --#define __NR_rt_tgsigqueueinfo (__NR_Linux + 295) --#define __NR_perf_event_open (__NR_Linux + 296) --#define __NR_accept4 (__NR_Linux + 297) --#define __NR_recvmmsg (__NR_Linux + 298) --#define __NR_getdents64 (__NR_Linux + 299) --#define __NR_fanotify_init (__NR_Linux + 300) --#define __NR_fanotify_mark (__NR_Linux + 301) --#define __NR_prlimit64 (__NR_Linux + 302) --#define __NR_name_to_handle_at (__NR_Linux + 303) --#define __NR_open_by_handle_at (__NR_Linux + 304) --#define __NR_clock_adjtime (__NR_Linux + 305) --#define __NR_syncfs (__NR_Linux + 306) --#define __NR_sendmmsg (__NR_Linux + 307) --#define __NR_setns (__NR_Linux + 308) --#define __NR_process_vm_readv (__NR_Linux + 309) --#define __NR_process_vm_writev (__NR_Linux + 310) --#define __NR_kcmp (__NR_Linux + 311) --#define __NR_finit_module (__NR_Linux + 312) --#define __NR_sched_setattr (__NR_Linux + 313) --#define __NR_sched_getattr (__NR_Linux + 314) --#define __NR_renameat2 (__NR_Linux + 315) --#define __NR_seccomp (__NR_Linux + 316) --#define __NR_getrandom (__NR_Linux + 317) --#define __NR_memfd_create (__NR_Linux + 318) --#define __NR_bpf (__NR_Linux + 319) --#define __NR_execveat (__NR_Linux + 320) --#define __NR_userfaultfd (__NR_Linux + 321) --#define __NR_membarrier (__NR_Linux + 322) --#define __NR_mlock2 (__NR_Linux + 323) --#define __NR_copy_file_range (__NR_Linux + 324) --#define __NR_preadv2 (__NR_Linux + 325) --#define __NR_pwritev2 (__NR_Linux + 326) --#define __NR_pkey_mprotect (__NR_Linux + 327) --#define __NR_pkey_alloc (__NR_Linux + 328) --#define __NR_pkey_free (__NR_Linux + 329) --#define __NR_statx (__NR_Linux + 330) --#define __NR_rseq (__NR_Linux + 331) --#define __NR_io_pgetevents (__NR_Linux + 332) --#define __NR_clock_gettime64 (__NR_Linux + 403) --#define __NR_clock_settime64 (__NR_Linux + 404) --#define __NR_clock_adjtime64 (__NR_Linux + 405) --#define __NR_clock_getres_time64 (__NR_Linux + 406) --#define __NR_clock_nanosleep_time64 (__NR_Linux + 407) --#define __NR_timer_gettime64 (__NR_Linux + 408) --#define __NR_timer_settime64 (__NR_Linux + 409) --#define __NR_timerfd_gettime64 (__NR_Linux + 410) --#define __NR_timerfd_settime64 (__NR_Linux + 411) --#define __NR_utimensat_time64 (__NR_Linux + 412) --#define __NR_pselect6_time64 (__NR_Linux + 413) --#define __NR_ppoll_time64 (__NR_Linux + 414) --#define __NR_io_pgetevents_time64 (__NR_Linux + 416) --#define __NR_recvmmsg_time64 (__NR_Linux + 417) --#define __NR_mq_timedsend_time64 (__NR_Linux + 418) --#define __NR_mq_timedreceive_time64 (__NR_Linux + 419) --#define __NR_semtimedop_time64 (__NR_Linux + 420) --#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421) --#define __NR_futex_time64 (__NR_Linux + 422) --#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423) --#define __NR_pidfd_send_signal (__NR_Linux + 424) --#define __NR_io_uring_setup (__NR_Linux + 425) --#define __NR_io_uring_enter (__NR_Linux + 426) --#define __NR_io_uring_register (__NR_Linux + 427) --#define __NR_open_tree (__NR_Linux + 428) --#define __NR_move_mount (__NR_Linux + 429) --#define __NR_fsopen (__NR_Linux + 430) --#define __NR_fsconfig (__NR_Linux + 431) --#define __NR_fsmount (__NR_Linux + 432) --#define __NR_fspick (__NR_Linux + 433) --#define __NR_pidfd_open (__NR_Linux + 434) --#define __NR_clone3 (__NR_Linux + 435) --#define __NR_close_range (__NR_Linux + 436) --#define __NR_openat2 (__NR_Linux + 437) --#define __NR_pidfd_getfd (__NR_Linux + 438) --#define __NR_faccessat2 (__NR_Linux + 439) --#define __NR_process_madvise (__NR_Linux + 440) --#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_read (__NR_Linux + 0) -+#define __NR_write (__NR_Linux + 1) -+#define __NR_open (__NR_Linux + 2) -+#define __NR_close (__NR_Linux + 3) -+#define __NR_stat (__NR_Linux + 4) -+#define __NR_fstat (__NR_Linux + 5) -+#define __NR_lstat (__NR_Linux + 6) -+#define __NR_poll (__NR_Linux + 7) -+#define __NR_lseek (__NR_Linux + 8) -+#define __NR_mmap (__NR_Linux + 9) -+#define __NR_mprotect (__NR_Linux + 10) -+#define __NR_munmap (__NR_Linux + 11) -+#define __NR_brk (__NR_Linux + 12) -+#define __NR_rt_sigaction (__NR_Linux + 13) -+#define __NR_rt_sigprocmask (__NR_Linux + 14) -+#define __NR_ioctl (__NR_Linux + 15) -+#define __NR_pread64 (__NR_Linux + 16) -+#define __NR_pwrite64 (__NR_Linux + 17) -+#define __NR_readv (__NR_Linux + 18) -+#define __NR_writev (__NR_Linux + 19) -+#define __NR_access (__NR_Linux + 20) -+#define __NR_pipe (__NR_Linux + 21) -+#define __NR__newselect (__NR_Linux + 22) -+#define __NR_sched_yield (__NR_Linux + 23) -+#define __NR_mremap (__NR_Linux + 24) -+#define __NR_msync (__NR_Linux + 25) -+#define __NR_mincore (__NR_Linux + 26) -+#define __NR_madvise (__NR_Linux + 27) -+#define __NR_shmget (__NR_Linux + 28) -+#define __NR_shmat (__NR_Linux + 29) -+#define __NR_shmctl (__NR_Linux + 30) -+#define __NR_dup (__NR_Linux + 31) -+#define __NR_dup2 (__NR_Linux + 32) -+#define __NR_pause (__NR_Linux + 33) -+#define __NR_nanosleep (__NR_Linux + 34) -+#define __NR_getitimer (__NR_Linux + 35) -+#define __NR_setitimer (__NR_Linux + 36) -+#define __NR_alarm (__NR_Linux + 37) -+#define __NR_getpid (__NR_Linux + 38) -+#define __NR_sendfile (__NR_Linux + 39) -+#define __NR_socket (__NR_Linux + 40) -+#define __NR_connect (__NR_Linux + 41) -+#define __NR_accept (__NR_Linux + 42) -+#define __NR_sendto (__NR_Linux + 43) -+#define __NR_recvfrom (__NR_Linux + 44) -+#define __NR_sendmsg (__NR_Linux + 45) -+#define __NR_recvmsg (__NR_Linux + 46) -+#define __NR_shutdown (__NR_Linux + 47) -+#define __NR_bind (__NR_Linux + 48) -+#define __NR_listen (__NR_Linux + 49) -+#define __NR_getsockname (__NR_Linux + 50) -+#define __NR_getpeername (__NR_Linux + 51) -+#define __NR_socketpair (__NR_Linux + 52) -+#define __NR_setsockopt (__NR_Linux + 53) -+#define __NR_getsockopt (__NR_Linux + 54) -+#define __NR_clone (__NR_Linux + 55) -+#define __NR_fork (__NR_Linux + 56) -+#define __NR_execve (__NR_Linux + 57) -+#define __NR_exit (__NR_Linux + 58) -+#define __NR_wait4 (__NR_Linux + 59) -+#define __NR_kill (__NR_Linux + 60) -+#define __NR_uname (__NR_Linux + 61) -+#define __NR_semget (__NR_Linux + 62) -+#define __NR_semop (__NR_Linux + 63) -+#define __NR_semctl (__NR_Linux + 64) -+#define __NR_shmdt (__NR_Linux + 65) -+#define __NR_msgget (__NR_Linux + 66) -+#define __NR_msgsnd (__NR_Linux + 67) -+#define __NR_msgrcv (__NR_Linux + 68) -+#define __NR_msgctl (__NR_Linux + 69) -+#define __NR_fcntl (__NR_Linux + 70) -+#define __NR_flock (__NR_Linux + 71) -+#define __NR_fsync (__NR_Linux + 72) -+#define __NR_fdatasync (__NR_Linux + 73) -+#define __NR_truncate (__NR_Linux + 74) -+#define __NR_ftruncate (__NR_Linux + 75) -+#define __NR_getdents (__NR_Linux + 76) -+#define __NR_getcwd (__NR_Linux + 77) -+#define __NR_chdir (__NR_Linux + 78) -+#define __NR_fchdir (__NR_Linux + 79) -+#define __NR_rename (__NR_Linux + 80) -+#define __NR_mkdir (__NR_Linux + 81) -+#define __NR_rmdir (__NR_Linux + 82) -+#define __NR_creat (__NR_Linux + 83) -+#define __NR_link (__NR_Linux + 84) -+#define __NR_unlink (__NR_Linux + 85) -+#define __NR_symlink (__NR_Linux + 86) -+#define __NR_readlink (__NR_Linux + 87) -+#define __NR_chmod (__NR_Linux + 88) -+#define __NR_fchmod (__NR_Linux + 89) -+#define __NR_chown (__NR_Linux + 90) -+#define __NR_fchown (__NR_Linux + 91) -+#define __NR_lchown (__NR_Linux + 92) -+#define __NR_umask (__NR_Linux + 93) -+#define __NR_gettimeofday (__NR_Linux + 94) -+#define __NR_getrlimit (__NR_Linux + 95) -+#define __NR_getrusage (__NR_Linux + 96) -+#define __NR_sysinfo (__NR_Linux + 97) -+#define __NR_times (__NR_Linux + 98) -+#define __NR_ptrace (__NR_Linux + 99) -+#define __NR_getuid (__NR_Linux + 100) -+#define __NR_syslog (__NR_Linux + 101) -+#define __NR_getgid (__NR_Linux + 102) -+#define __NR_setuid (__NR_Linux + 103) -+#define __NR_setgid (__NR_Linux + 104) -+#define __NR_geteuid (__NR_Linux + 105) -+#define __NR_getegid (__NR_Linux + 106) -+#define __NR_setpgid (__NR_Linux + 107) -+#define __NR_getppid (__NR_Linux + 108) -+#define __NR_getpgrp (__NR_Linux + 109) -+#define __NR_setsid (__NR_Linux + 110) -+#define __NR_setreuid (__NR_Linux + 111) -+#define __NR_setregid (__NR_Linux + 112) -+#define __NR_getgroups (__NR_Linux + 113) -+#define __NR_setgroups (__NR_Linux + 114) -+#define __NR_setresuid (__NR_Linux + 115) -+#define __NR_getresuid (__NR_Linux + 116) -+#define __NR_setresgid (__NR_Linux + 117) -+#define __NR_getresgid (__NR_Linux + 118) -+#define __NR_getpgid (__NR_Linux + 119) -+#define __NR_setfsuid (__NR_Linux + 120) -+#define __NR_setfsgid (__NR_Linux + 121) -+#define __NR_getsid (__NR_Linux + 122) -+#define __NR_capget (__NR_Linux + 123) -+#define __NR_capset (__NR_Linux + 124) -+#define __NR_rt_sigpending (__NR_Linux + 125) -+#define __NR_rt_sigtimedwait (__NR_Linux + 126) -+#define __NR_rt_sigqueueinfo (__NR_Linux + 127) -+#define __NR_rt_sigsuspend (__NR_Linux + 128) -+#define __NR_sigaltstack (__NR_Linux + 129) -+#define __NR_utime (__NR_Linux + 130) -+#define __NR_mknod (__NR_Linux + 131) -+#define __NR_personality (__NR_Linux + 132) -+#define __NR_ustat (__NR_Linux + 133) -+#define __NR_statfs (__NR_Linux + 134) -+#define __NR_fstatfs (__NR_Linux + 135) -+#define __NR_sysfs (__NR_Linux + 136) -+#define __NR_getpriority (__NR_Linux + 137) -+#define __NR_setpriority (__NR_Linux + 138) -+#define __NR_sched_setparam (__NR_Linux + 139) -+#define __NR_sched_getparam (__NR_Linux + 140) -+#define __NR_sched_setscheduler (__NR_Linux + 141) -+#define __NR_sched_getscheduler (__NR_Linux + 142) -+#define __NR_sched_get_priority_max (__NR_Linux + 143) -+#define __NR_sched_get_priority_min (__NR_Linux + 144) -+#define __NR_sched_rr_get_interval (__NR_Linux + 145) -+#define __NR_mlock (__NR_Linux + 146) -+#define __NR_munlock (__NR_Linux + 147) -+#define __NR_mlockall (__NR_Linux + 148) -+#define __NR_munlockall (__NR_Linux + 149) -+#define __NR_vhangup (__NR_Linux + 150) -+#define __NR_pivot_root (__NR_Linux + 151) -+#define __NR__sysctl (__NR_Linux + 152) -+#define __NR_prctl (__NR_Linux + 153) -+#define __NR_adjtimex (__NR_Linux + 154) -+#define __NR_setrlimit (__NR_Linux + 155) -+#define __NR_chroot (__NR_Linux + 156) -+#define __NR_sync (__NR_Linux + 157) -+#define __NR_acct (__NR_Linux + 158) -+#define __NR_settimeofday (__NR_Linux + 159) -+#define __NR_mount (__NR_Linux + 160) -+#define __NR_umount2 (__NR_Linux + 161) -+#define __NR_swapon (__NR_Linux + 162) -+#define __NR_swapoff (__NR_Linux + 163) -+#define __NR_reboot (__NR_Linux + 164) -+#define __NR_sethostname (__NR_Linux + 165) -+#define __NR_setdomainname (__NR_Linux + 166) -+#define __NR_create_module (__NR_Linux + 167) -+#define __NR_init_module (__NR_Linux + 168) -+#define __NR_delete_module (__NR_Linux + 169) -+#define __NR_get_kernel_syms (__NR_Linux + 170) -+#define __NR_query_module (__NR_Linux + 171) -+#define __NR_quotactl (__NR_Linux + 172) -+#define __NR_nfsservctl (__NR_Linux + 173) -+#define __NR_getpmsg (__NR_Linux + 174) -+#define __NR_putpmsg (__NR_Linux + 175) -+#define __NR_afs_syscall (__NR_Linux + 176) -+#define __NR_reserved177 (__NR_Linux + 177) -+#define __NR_gettid (__NR_Linux + 178) -+#define __NR_readahead (__NR_Linux + 179) -+#define __NR_setxattr (__NR_Linux + 180) -+#define __NR_lsetxattr (__NR_Linux + 181) -+#define __NR_fsetxattr (__NR_Linux + 182) -+#define __NR_getxattr (__NR_Linux + 183) -+#define __NR_lgetxattr (__NR_Linux + 184) -+#define __NR_fgetxattr (__NR_Linux + 185) -+#define __NR_listxattr (__NR_Linux + 186) -+#define __NR_llistxattr (__NR_Linux + 187) -+#define __NR_flistxattr (__NR_Linux + 188) -+#define __NR_removexattr (__NR_Linux + 189) -+#define __NR_lremovexattr (__NR_Linux + 190) -+#define __NR_fremovexattr (__NR_Linux + 191) -+#define __NR_tkill (__NR_Linux + 192) -+#define __NR_reserved193 (__NR_Linux + 193) -+#define __NR_futex (__NR_Linux + 194) -+#define __NR_sched_setaffinity (__NR_Linux + 195) -+#define __NR_sched_getaffinity (__NR_Linux + 196) -+#define __NR_cacheflush (__NR_Linux + 197) -+#define __NR_cachectl (__NR_Linux + 198) -+#define __NR_sysmips (__NR_Linux + 199) -+#define __NR_io_setup (__NR_Linux + 200) -+#define __NR_io_destroy (__NR_Linux + 201) -+#define __NR_io_getevents (__NR_Linux + 202) -+#define __NR_io_submit (__NR_Linux + 203) -+#define __NR_io_cancel (__NR_Linux + 204) -+#define __NR_exit_group (__NR_Linux + 205) -+#define __NR_lookup_dcookie (__NR_Linux + 206) -+#define __NR_epoll_create (__NR_Linux + 207) -+#define __NR_epoll_ctl (__NR_Linux + 208) -+#define __NR_epoll_wait (__NR_Linux + 209) -+#define __NR_remap_file_pages (__NR_Linux + 210) -+#define __NR_rt_sigreturn (__NR_Linux + 211) -+#define __NR_fcntl64 (__NR_Linux + 212) -+#define __NR_set_tid_address (__NR_Linux + 213) -+#define __NR_restart_syscall (__NR_Linux + 214) -+#define __NR_semtimedop (__NR_Linux + 215) -+#define __NR_fadvise64 (__NR_Linux + 216) -+#define __NR_statfs64 (__NR_Linux + 217) -+#define __NR_fstatfs64 (__NR_Linux + 218) -+#define __NR_sendfile64 (__NR_Linux + 219) -+#define __NR_timer_create (__NR_Linux + 220) -+#define __NR_timer_settime (__NR_Linux + 221) -+#define __NR_timer_gettime (__NR_Linux + 222) -+#define __NR_timer_getoverrun (__NR_Linux + 223) -+#define __NR_timer_delete (__NR_Linux + 224) -+#define __NR_clock_settime (__NR_Linux + 225) -+#define __NR_clock_gettime (__NR_Linux + 226) -+#define __NR_clock_getres (__NR_Linux + 227) -+#define __NR_clock_nanosleep (__NR_Linux + 228) -+#define __NR_tgkill (__NR_Linux + 229) -+#define __NR_utimes (__NR_Linux + 230) -+#define __NR_mbind (__NR_Linux + 231) -+#define __NR_get_mempolicy (__NR_Linux + 232) -+#define __NR_set_mempolicy (__NR_Linux + 233) -+#define __NR_mq_open (__NR_Linux + 234) -+#define __NR_mq_unlink (__NR_Linux + 235) -+#define __NR_mq_timedsend (__NR_Linux + 236) -+#define __NR_mq_timedreceive (__NR_Linux + 237) -+#define __NR_mq_notify (__NR_Linux + 238) -+#define __NR_mq_getsetattr (__NR_Linux + 239) -+#define __NR_vserver (__NR_Linux + 240) -+#define __NR_waitid (__NR_Linux + 241) -+#define __NR_add_key (__NR_Linux + 243) -+#define __NR_request_key (__NR_Linux + 244) -+#define __NR_keyctl (__NR_Linux + 245) -+#define __NR_set_thread_area (__NR_Linux + 246) -+#define __NR_inotify_init (__NR_Linux + 247) -+#define __NR_inotify_add_watch (__NR_Linux + 248) -+#define __NR_inotify_rm_watch (__NR_Linux + 249) -+#define __NR_migrate_pages (__NR_Linux + 250) -+#define __NR_openat (__NR_Linux + 251) -+#define __NR_mkdirat (__NR_Linux + 252) -+#define __NR_mknodat (__NR_Linux + 253) -+#define __NR_fchownat (__NR_Linux + 254) -+#define __NR_futimesat (__NR_Linux + 255) -+#define __NR_newfstatat (__NR_Linux + 256) -+#define __NR_unlinkat (__NR_Linux + 257) -+#define __NR_renameat (__NR_Linux + 258) -+#define __NR_linkat (__NR_Linux + 259) -+#define __NR_symlinkat (__NR_Linux + 260) -+#define __NR_readlinkat (__NR_Linux + 261) -+#define __NR_fchmodat (__NR_Linux + 262) -+#define __NR_faccessat (__NR_Linux + 263) -+#define __NR_pselect6 (__NR_Linux + 264) -+#define __NR_ppoll (__NR_Linux + 265) -+#define __NR_unshare (__NR_Linux + 266) -+#define __NR_splice (__NR_Linux + 267) -+#define __NR_sync_file_range (__NR_Linux + 268) -+#define __NR_tee (__NR_Linux + 269) -+#define __NR_vmsplice (__NR_Linux + 270) -+#define __NR_move_pages (__NR_Linux + 271) -+#define __NR_set_robust_list (__NR_Linux + 272) -+#define __NR_get_robust_list (__NR_Linux + 273) -+#define __NR_kexec_load (__NR_Linux + 274) -+#define __NR_getcpu (__NR_Linux + 275) -+#define __NR_epoll_pwait (__NR_Linux + 276) -+#define __NR_ioprio_set (__NR_Linux + 277) -+#define __NR_ioprio_get (__NR_Linux + 278) -+#define __NR_utimensat (__NR_Linux + 279) -+#define __NR_signalfd (__NR_Linux + 280) -+#define __NR_timerfd (__NR_Linux + 281) -+#define __NR_eventfd (__NR_Linux + 282) -+#define __NR_fallocate (__NR_Linux + 283) -+#define __NR_timerfd_create (__NR_Linux + 284) -+#define __NR_timerfd_gettime (__NR_Linux + 285) -+#define __NR_timerfd_settime (__NR_Linux + 286) -+#define __NR_signalfd4 (__NR_Linux + 287) -+#define __NR_eventfd2 (__NR_Linux + 288) -+#define __NR_epoll_create1 (__NR_Linux + 289) -+#define __NR_dup3 (__NR_Linux + 290) -+#define __NR_pipe2 (__NR_Linux + 291) -+#define __NR_inotify_init1 (__NR_Linux + 292) -+#define __NR_preadv (__NR_Linux + 293) -+#define __NR_pwritev (__NR_Linux + 294) -+#define __NR_rt_tgsigqueueinfo (__NR_Linux + 295) -+#define __NR_perf_event_open (__NR_Linux + 296) -+#define __NR_accept4 (__NR_Linux + 297) -+#define __NR_recvmmsg (__NR_Linux + 298) -+#define __NR_getdents64 (__NR_Linux + 299) -+#define __NR_fanotify_init (__NR_Linux + 300) -+#define __NR_fanotify_mark (__NR_Linux + 301) -+#define __NR_prlimit64 (__NR_Linux + 302) -+#define __NR_name_to_handle_at (__NR_Linux + 303) -+#define __NR_open_by_handle_at (__NR_Linux + 304) -+#define __NR_clock_adjtime (__NR_Linux + 305) -+#define __NR_syncfs (__NR_Linux + 306) -+#define __NR_sendmmsg (__NR_Linux + 307) -+#define __NR_setns (__NR_Linux + 308) -+#define __NR_process_vm_readv (__NR_Linux + 309) -+#define __NR_process_vm_writev (__NR_Linux + 310) -+#define __NR_kcmp (__NR_Linux + 311) -+#define __NR_finit_module (__NR_Linux + 312) -+#define __NR_sched_setattr (__NR_Linux + 313) -+#define __NR_sched_getattr (__NR_Linux + 314) -+#define __NR_renameat2 (__NR_Linux + 315) -+#define __NR_seccomp (__NR_Linux + 316) -+#define __NR_getrandom (__NR_Linux + 317) -+#define __NR_memfd_create (__NR_Linux + 318) -+#define __NR_bpf (__NR_Linux + 319) -+#define __NR_execveat (__NR_Linux + 320) -+#define __NR_userfaultfd (__NR_Linux + 321) -+#define __NR_membarrier (__NR_Linux + 322) -+#define __NR_mlock2 (__NR_Linux + 323) -+#define __NR_copy_file_range (__NR_Linux + 324) -+#define __NR_preadv2 (__NR_Linux + 325) -+#define __NR_pwritev2 (__NR_Linux + 326) -+#define __NR_pkey_mprotect (__NR_Linux + 327) -+#define __NR_pkey_alloc (__NR_Linux + 328) -+#define __NR_pkey_free (__NR_Linux + 329) -+#define __NR_statx (__NR_Linux + 330) -+#define __NR_rseq (__NR_Linux + 331) -+#define __NR_io_pgetevents (__NR_Linux + 332) -+#define __NR_clock_gettime64 (__NR_Linux + 403) -+#define __NR_clock_settime64 (__NR_Linux + 404) -+#define __NR_clock_adjtime64 (__NR_Linux + 405) -+#define __NR_clock_getres_time64 (__NR_Linux + 406) -+#define __NR_clock_nanosleep_time64 (__NR_Linux + 407) -+#define __NR_timer_gettime64 (__NR_Linux + 408) -+#define __NR_timer_settime64 (__NR_Linux + 409) -+#define __NR_timerfd_gettime64 (__NR_Linux + 410) -+#define __NR_timerfd_settime64 (__NR_Linux + 411) -+#define __NR_utimensat_time64 (__NR_Linux + 412) -+#define __NR_pselect6_time64 (__NR_Linux + 413) -+#define __NR_ppoll_time64 (__NR_Linux + 414) -+#define __NR_io_pgetevents_time64 (__NR_Linux + 416) -+#define __NR_recvmmsg_time64 (__NR_Linux + 417) -+#define __NR_mq_timedsend_time64 (__NR_Linux + 418) -+#define __NR_mq_timedreceive_time64 (__NR_Linux + 419) -+#define __NR_semtimedop_time64 (__NR_Linux + 420) -+#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421) -+#define __NR_futex_time64 (__NR_Linux + 422) -+#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423) -+#define __NR_pidfd_send_signal (__NR_Linux + 424) -+#define __NR_io_uring_setup (__NR_Linux + 425) -+#define __NR_io_uring_enter (__NR_Linux + 426) -+#define __NR_io_uring_register (__NR_Linux + 427) -+#define __NR_open_tree (__NR_Linux + 428) -+#define __NR_move_mount (__NR_Linux + 429) -+#define __NR_fsopen (__NR_Linux + 430) -+#define __NR_fsconfig (__NR_Linux + 431) -+#define __NR_fsmount (__NR_Linux + 432) -+#define __NR_fspick (__NR_Linux + 433) -+#define __NR_pidfd_open (__NR_Linux + 434) -+#define __NR_clone3 (__NR_Linux + 435) -+#define __NR_close_range (__NR_Linux + 436) -+#define __NR_openat2 (__NR_Linux + 437) -+#define __NR_pidfd_getfd (__NR_Linux + 438) -+#define __NR_faccessat2 (__NR_Linux + 439) -+#define __NR_process_madvise (__NR_Linux + 440) -+#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_mount_setattr (__NR_Linux + 442) -+#define __NR_landlock_create_ruleset (__NR_Linux + 444) -+#define __NR_landlock_add_rule (__NR_Linux + 445) -+#define __NR_landlock_restrict_self (__NR_Linux + 446) - -- --#endif /* _ASM_MIPS_UNISTD_N32_H */ -+#endif /* _ASM_UNISTD_N32_H */ -diff --git a/linux-headers/asm-mips/unistd_n64.h b/linux-headers/asm-mips/unistd_n64.h -index 683558a7f8..0996001802 100644 ---- a/linux-headers/asm-mips/unistd_n64.h -+++ b/linux-headers/asm-mips/unistd_n64.h -@@ -1,352 +1,355 @@ --#ifndef _ASM_MIPS_UNISTD_N64_H --#define _ASM_MIPS_UNISTD_N64_H -+#ifndef _ASM_UNISTD_N64_H -+#define _ASM_UNISTD_N64_H - --#define __NR_read (__NR_Linux + 0) --#define __NR_write (__NR_Linux + 1) --#define __NR_open (__NR_Linux + 2) --#define __NR_close (__NR_Linux + 3) --#define __NR_stat (__NR_Linux + 4) --#define __NR_fstat (__NR_Linux + 5) --#define __NR_lstat (__NR_Linux + 6) --#define __NR_poll (__NR_Linux + 7) --#define __NR_lseek (__NR_Linux + 8) --#define __NR_mmap (__NR_Linux + 9) --#define __NR_mprotect (__NR_Linux + 10) --#define __NR_munmap (__NR_Linux + 11) --#define __NR_brk (__NR_Linux + 12) --#define __NR_rt_sigaction (__NR_Linux + 13) --#define __NR_rt_sigprocmask (__NR_Linux + 14) --#define __NR_ioctl (__NR_Linux + 15) --#define __NR_pread64 (__NR_Linux + 16) --#define __NR_pwrite64 (__NR_Linux + 17) --#define __NR_readv (__NR_Linux + 18) --#define __NR_writev (__NR_Linux + 19) --#define __NR_access (__NR_Linux + 20) --#define __NR_pipe (__NR_Linux + 21) --#define __NR__newselect (__NR_Linux + 22) --#define __NR_sched_yield (__NR_Linux + 23) --#define __NR_mremap (__NR_Linux + 24) --#define __NR_msync (__NR_Linux + 25) --#define __NR_mincore (__NR_Linux + 26) --#define __NR_madvise (__NR_Linux + 27) --#define __NR_shmget (__NR_Linux + 28) --#define __NR_shmat (__NR_Linux + 29) --#define __NR_shmctl (__NR_Linux + 30) --#define __NR_dup (__NR_Linux + 31) --#define __NR_dup2 (__NR_Linux + 32) --#define __NR_pause (__NR_Linux + 33) --#define __NR_nanosleep (__NR_Linux + 34) --#define __NR_getitimer (__NR_Linux + 35) --#define __NR_setitimer (__NR_Linux + 36) --#define __NR_alarm (__NR_Linux + 37) --#define __NR_getpid (__NR_Linux + 38) --#define __NR_sendfile (__NR_Linux + 39) --#define __NR_socket (__NR_Linux + 40) --#define __NR_connect (__NR_Linux + 41) --#define __NR_accept (__NR_Linux + 42) --#define __NR_sendto (__NR_Linux + 43) --#define __NR_recvfrom (__NR_Linux + 44) --#define __NR_sendmsg (__NR_Linux + 45) --#define __NR_recvmsg (__NR_Linux + 46) --#define __NR_shutdown (__NR_Linux + 47) --#define __NR_bind (__NR_Linux + 48) --#define __NR_listen (__NR_Linux + 49) --#define __NR_getsockname (__NR_Linux + 50) --#define __NR_getpeername (__NR_Linux + 51) --#define __NR_socketpair (__NR_Linux + 52) --#define __NR_setsockopt (__NR_Linux + 53) --#define __NR_getsockopt (__NR_Linux + 54) --#define __NR_clone (__NR_Linux + 55) --#define __NR_fork (__NR_Linux + 56) --#define __NR_execve (__NR_Linux + 57) --#define __NR_exit (__NR_Linux + 58) --#define __NR_wait4 (__NR_Linux + 59) --#define __NR_kill (__NR_Linux + 60) --#define __NR_uname (__NR_Linux + 61) --#define __NR_semget (__NR_Linux + 62) --#define __NR_semop (__NR_Linux + 63) --#define __NR_semctl (__NR_Linux + 64) --#define __NR_shmdt (__NR_Linux + 65) --#define __NR_msgget (__NR_Linux + 66) --#define __NR_msgsnd (__NR_Linux + 67) --#define __NR_msgrcv (__NR_Linux + 68) --#define __NR_msgctl (__NR_Linux + 69) --#define __NR_fcntl (__NR_Linux + 70) --#define __NR_flock (__NR_Linux + 71) --#define __NR_fsync (__NR_Linux + 72) --#define __NR_fdatasync (__NR_Linux + 73) --#define __NR_truncate (__NR_Linux + 74) --#define __NR_ftruncate (__NR_Linux + 75) --#define __NR_getdents (__NR_Linux + 76) --#define __NR_getcwd (__NR_Linux + 77) --#define __NR_chdir (__NR_Linux + 78) --#define __NR_fchdir (__NR_Linux + 79) --#define __NR_rename (__NR_Linux + 80) --#define __NR_mkdir (__NR_Linux + 81) --#define __NR_rmdir (__NR_Linux + 82) --#define __NR_creat (__NR_Linux + 83) --#define __NR_link (__NR_Linux + 84) --#define __NR_unlink (__NR_Linux + 85) --#define __NR_symlink (__NR_Linux + 86) --#define __NR_readlink (__NR_Linux + 87) --#define __NR_chmod (__NR_Linux + 88) --#define __NR_fchmod (__NR_Linux + 89) --#define __NR_chown (__NR_Linux + 90) --#define __NR_fchown (__NR_Linux + 91) --#define __NR_lchown (__NR_Linux + 92) --#define __NR_umask (__NR_Linux + 93) --#define __NR_gettimeofday (__NR_Linux + 94) --#define __NR_getrlimit (__NR_Linux + 95) --#define __NR_getrusage (__NR_Linux + 96) --#define __NR_sysinfo (__NR_Linux + 97) --#define __NR_times (__NR_Linux + 98) --#define __NR_ptrace (__NR_Linux + 99) --#define __NR_getuid (__NR_Linux + 100) --#define __NR_syslog (__NR_Linux + 101) --#define __NR_getgid (__NR_Linux + 102) --#define __NR_setuid (__NR_Linux + 103) --#define __NR_setgid (__NR_Linux + 104) --#define __NR_geteuid (__NR_Linux + 105) --#define __NR_getegid (__NR_Linux + 106) --#define __NR_setpgid (__NR_Linux + 107) --#define __NR_getppid (__NR_Linux + 108) --#define __NR_getpgrp (__NR_Linux + 109) --#define __NR_setsid (__NR_Linux + 110) --#define __NR_setreuid (__NR_Linux + 111) --#define __NR_setregid (__NR_Linux + 112) --#define __NR_getgroups (__NR_Linux + 113) --#define __NR_setgroups (__NR_Linux + 114) --#define __NR_setresuid (__NR_Linux + 115) --#define __NR_getresuid (__NR_Linux + 116) --#define __NR_setresgid (__NR_Linux + 117) --#define __NR_getresgid (__NR_Linux + 118) --#define __NR_getpgid (__NR_Linux + 119) --#define __NR_setfsuid (__NR_Linux + 120) --#define __NR_setfsgid (__NR_Linux + 121) --#define __NR_getsid (__NR_Linux + 122) --#define __NR_capget (__NR_Linux + 123) --#define __NR_capset (__NR_Linux + 124) --#define __NR_rt_sigpending (__NR_Linux + 125) --#define __NR_rt_sigtimedwait (__NR_Linux + 126) --#define __NR_rt_sigqueueinfo (__NR_Linux + 127) --#define __NR_rt_sigsuspend (__NR_Linux + 128) --#define __NR_sigaltstack (__NR_Linux + 129) --#define __NR_utime (__NR_Linux + 130) --#define __NR_mknod (__NR_Linux + 131) --#define __NR_personality (__NR_Linux + 132) --#define __NR_ustat (__NR_Linux + 133) --#define __NR_statfs (__NR_Linux + 134) --#define __NR_fstatfs (__NR_Linux + 135) --#define __NR_sysfs (__NR_Linux + 136) --#define __NR_getpriority (__NR_Linux + 137) --#define __NR_setpriority (__NR_Linux + 138) --#define __NR_sched_setparam (__NR_Linux + 139) --#define __NR_sched_getparam (__NR_Linux + 140) --#define __NR_sched_setscheduler (__NR_Linux + 141) --#define __NR_sched_getscheduler (__NR_Linux + 142) --#define __NR_sched_get_priority_max (__NR_Linux + 143) --#define __NR_sched_get_priority_min (__NR_Linux + 144) --#define __NR_sched_rr_get_interval (__NR_Linux + 145) --#define __NR_mlock (__NR_Linux + 146) --#define __NR_munlock (__NR_Linux + 147) --#define __NR_mlockall (__NR_Linux + 148) --#define __NR_munlockall (__NR_Linux + 149) --#define __NR_vhangup (__NR_Linux + 150) --#define __NR_pivot_root (__NR_Linux + 151) --#define __NR__sysctl (__NR_Linux + 152) --#define __NR_prctl (__NR_Linux + 153) --#define __NR_adjtimex (__NR_Linux + 154) --#define __NR_setrlimit (__NR_Linux + 155) --#define __NR_chroot (__NR_Linux + 156) --#define __NR_sync (__NR_Linux + 157) --#define __NR_acct (__NR_Linux + 158) --#define __NR_settimeofday (__NR_Linux + 159) --#define __NR_mount (__NR_Linux + 160) --#define __NR_umount2 (__NR_Linux + 161) --#define __NR_swapon (__NR_Linux + 162) --#define __NR_swapoff (__NR_Linux + 163) --#define __NR_reboot (__NR_Linux + 164) --#define __NR_sethostname (__NR_Linux + 165) --#define __NR_setdomainname (__NR_Linux + 166) --#define __NR_create_module (__NR_Linux + 167) --#define __NR_init_module (__NR_Linux + 168) --#define __NR_delete_module (__NR_Linux + 169) --#define __NR_get_kernel_syms (__NR_Linux + 170) --#define __NR_query_module (__NR_Linux + 171) --#define __NR_quotactl (__NR_Linux + 172) --#define __NR_nfsservctl (__NR_Linux + 173) --#define __NR_getpmsg (__NR_Linux + 174) --#define __NR_putpmsg (__NR_Linux + 175) --#define __NR_afs_syscall (__NR_Linux + 176) --#define __NR_reserved177 (__NR_Linux + 177) --#define __NR_gettid (__NR_Linux + 178) --#define __NR_readahead (__NR_Linux + 179) --#define __NR_setxattr (__NR_Linux + 180) --#define __NR_lsetxattr (__NR_Linux + 181) --#define __NR_fsetxattr (__NR_Linux + 182) --#define __NR_getxattr (__NR_Linux + 183) --#define __NR_lgetxattr (__NR_Linux + 184) --#define __NR_fgetxattr (__NR_Linux + 185) --#define __NR_listxattr (__NR_Linux + 186) --#define __NR_llistxattr (__NR_Linux + 187) --#define __NR_flistxattr (__NR_Linux + 188) --#define __NR_removexattr (__NR_Linux + 189) --#define __NR_lremovexattr (__NR_Linux + 190) --#define __NR_fremovexattr (__NR_Linux + 191) --#define __NR_tkill (__NR_Linux + 192) --#define __NR_reserved193 (__NR_Linux + 193) --#define __NR_futex (__NR_Linux + 194) --#define __NR_sched_setaffinity (__NR_Linux + 195) --#define __NR_sched_getaffinity (__NR_Linux + 196) --#define __NR_cacheflush (__NR_Linux + 197) --#define __NR_cachectl (__NR_Linux + 198) --#define __NR_sysmips (__NR_Linux + 199) --#define __NR_io_setup (__NR_Linux + 200) --#define __NR_io_destroy (__NR_Linux + 201) --#define __NR_io_getevents (__NR_Linux + 202) --#define __NR_io_submit (__NR_Linux + 203) --#define __NR_io_cancel (__NR_Linux + 204) --#define __NR_exit_group (__NR_Linux + 205) --#define __NR_lookup_dcookie (__NR_Linux + 206) --#define __NR_epoll_create (__NR_Linux + 207) --#define __NR_epoll_ctl (__NR_Linux + 208) --#define __NR_epoll_wait (__NR_Linux + 209) --#define __NR_remap_file_pages (__NR_Linux + 210) --#define __NR_rt_sigreturn (__NR_Linux + 211) --#define __NR_set_tid_address (__NR_Linux + 212) --#define __NR_restart_syscall (__NR_Linux + 213) --#define __NR_semtimedop (__NR_Linux + 214) --#define __NR_fadvise64 (__NR_Linux + 215) --#define __NR_timer_create (__NR_Linux + 216) --#define __NR_timer_settime (__NR_Linux + 217) --#define __NR_timer_gettime (__NR_Linux + 218) --#define __NR_timer_getoverrun (__NR_Linux + 219) --#define __NR_timer_delete (__NR_Linux + 220) --#define __NR_clock_settime (__NR_Linux + 221) --#define __NR_clock_gettime (__NR_Linux + 222) --#define __NR_clock_getres (__NR_Linux + 223) --#define __NR_clock_nanosleep (__NR_Linux + 224) --#define __NR_tgkill (__NR_Linux + 225) --#define __NR_utimes (__NR_Linux + 226) --#define __NR_mbind (__NR_Linux + 227) --#define __NR_get_mempolicy (__NR_Linux + 228) --#define __NR_set_mempolicy (__NR_Linux + 229) --#define __NR_mq_open (__NR_Linux + 230) --#define __NR_mq_unlink (__NR_Linux + 231) --#define __NR_mq_timedsend (__NR_Linux + 232) --#define __NR_mq_timedreceive (__NR_Linux + 233) --#define __NR_mq_notify (__NR_Linux + 234) --#define __NR_mq_getsetattr (__NR_Linux + 235) --#define __NR_vserver (__NR_Linux + 236) --#define __NR_waitid (__NR_Linux + 237) --#define __NR_add_key (__NR_Linux + 239) --#define __NR_request_key (__NR_Linux + 240) --#define __NR_keyctl (__NR_Linux + 241) --#define __NR_set_thread_area (__NR_Linux + 242) --#define __NR_inotify_init (__NR_Linux + 243) --#define __NR_inotify_add_watch (__NR_Linux + 244) --#define __NR_inotify_rm_watch (__NR_Linux + 245) --#define __NR_migrate_pages (__NR_Linux + 246) --#define __NR_openat (__NR_Linux + 247) --#define __NR_mkdirat (__NR_Linux + 248) --#define __NR_mknodat (__NR_Linux + 249) --#define __NR_fchownat (__NR_Linux + 250) --#define __NR_futimesat (__NR_Linux + 251) --#define __NR_newfstatat (__NR_Linux + 252) --#define __NR_unlinkat (__NR_Linux + 253) --#define __NR_renameat (__NR_Linux + 254) --#define __NR_linkat (__NR_Linux + 255) --#define __NR_symlinkat (__NR_Linux + 256) --#define __NR_readlinkat (__NR_Linux + 257) --#define __NR_fchmodat (__NR_Linux + 258) --#define __NR_faccessat (__NR_Linux + 259) --#define __NR_pselect6 (__NR_Linux + 260) --#define __NR_ppoll (__NR_Linux + 261) --#define __NR_unshare (__NR_Linux + 262) --#define __NR_splice (__NR_Linux + 263) --#define __NR_sync_file_range (__NR_Linux + 264) --#define __NR_tee (__NR_Linux + 265) --#define __NR_vmsplice (__NR_Linux + 266) --#define __NR_move_pages (__NR_Linux + 267) --#define __NR_set_robust_list (__NR_Linux + 268) --#define __NR_get_robust_list (__NR_Linux + 269) --#define __NR_kexec_load (__NR_Linux + 270) --#define __NR_getcpu (__NR_Linux + 271) --#define __NR_epoll_pwait (__NR_Linux + 272) --#define __NR_ioprio_set (__NR_Linux + 273) --#define __NR_ioprio_get (__NR_Linux + 274) --#define __NR_utimensat (__NR_Linux + 275) --#define __NR_signalfd (__NR_Linux + 276) --#define __NR_timerfd (__NR_Linux + 277) --#define __NR_eventfd (__NR_Linux + 278) --#define __NR_fallocate (__NR_Linux + 279) --#define __NR_timerfd_create (__NR_Linux + 280) --#define __NR_timerfd_gettime (__NR_Linux + 281) --#define __NR_timerfd_settime (__NR_Linux + 282) --#define __NR_signalfd4 (__NR_Linux + 283) --#define __NR_eventfd2 (__NR_Linux + 284) --#define __NR_epoll_create1 (__NR_Linux + 285) --#define __NR_dup3 (__NR_Linux + 286) --#define __NR_pipe2 (__NR_Linux + 287) --#define __NR_inotify_init1 (__NR_Linux + 288) --#define __NR_preadv (__NR_Linux + 289) --#define __NR_pwritev (__NR_Linux + 290) --#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291) --#define __NR_perf_event_open (__NR_Linux + 292) --#define __NR_accept4 (__NR_Linux + 293) --#define __NR_recvmmsg (__NR_Linux + 294) --#define __NR_fanotify_init (__NR_Linux + 295) --#define __NR_fanotify_mark (__NR_Linux + 296) --#define __NR_prlimit64 (__NR_Linux + 297) --#define __NR_name_to_handle_at (__NR_Linux + 298) --#define __NR_open_by_handle_at (__NR_Linux + 299) --#define __NR_clock_adjtime (__NR_Linux + 300) --#define __NR_syncfs (__NR_Linux + 301) --#define __NR_sendmmsg (__NR_Linux + 302) --#define __NR_setns (__NR_Linux + 303) --#define __NR_process_vm_readv (__NR_Linux + 304) --#define __NR_process_vm_writev (__NR_Linux + 305) --#define __NR_kcmp (__NR_Linux + 306) --#define __NR_finit_module (__NR_Linux + 307) --#define __NR_getdents64 (__NR_Linux + 308) --#define __NR_sched_setattr (__NR_Linux + 309) --#define __NR_sched_getattr (__NR_Linux + 310) --#define __NR_renameat2 (__NR_Linux + 311) --#define __NR_seccomp (__NR_Linux + 312) --#define __NR_getrandom (__NR_Linux + 313) --#define __NR_memfd_create (__NR_Linux + 314) --#define __NR_bpf (__NR_Linux + 315) --#define __NR_execveat (__NR_Linux + 316) --#define __NR_userfaultfd (__NR_Linux + 317) --#define __NR_membarrier (__NR_Linux + 318) --#define __NR_mlock2 (__NR_Linux + 319) --#define __NR_copy_file_range (__NR_Linux + 320) --#define __NR_preadv2 (__NR_Linux + 321) --#define __NR_pwritev2 (__NR_Linux + 322) --#define __NR_pkey_mprotect (__NR_Linux + 323) --#define __NR_pkey_alloc (__NR_Linux + 324) --#define __NR_pkey_free (__NR_Linux + 325) --#define __NR_statx (__NR_Linux + 326) --#define __NR_rseq (__NR_Linux + 327) --#define __NR_io_pgetevents (__NR_Linux + 328) --#define __NR_pidfd_send_signal (__NR_Linux + 424) --#define __NR_io_uring_setup (__NR_Linux + 425) --#define __NR_io_uring_enter (__NR_Linux + 426) --#define __NR_io_uring_register (__NR_Linux + 427) --#define __NR_open_tree (__NR_Linux + 428) --#define __NR_move_mount (__NR_Linux + 429) --#define __NR_fsopen (__NR_Linux + 430) --#define __NR_fsconfig (__NR_Linux + 431) --#define __NR_fsmount (__NR_Linux + 432) --#define __NR_fspick (__NR_Linux + 433) --#define __NR_pidfd_open (__NR_Linux + 434) --#define __NR_clone3 (__NR_Linux + 435) --#define __NR_close_range (__NR_Linux + 436) --#define __NR_openat2 (__NR_Linux + 437) --#define __NR_pidfd_getfd (__NR_Linux + 438) --#define __NR_faccessat2 (__NR_Linux + 439) --#define __NR_process_madvise (__NR_Linux + 440) --#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_read (__NR_Linux + 0) -+#define __NR_write (__NR_Linux + 1) -+#define __NR_open (__NR_Linux + 2) -+#define __NR_close (__NR_Linux + 3) -+#define __NR_stat (__NR_Linux + 4) -+#define __NR_fstat (__NR_Linux + 5) -+#define __NR_lstat (__NR_Linux + 6) -+#define __NR_poll (__NR_Linux + 7) -+#define __NR_lseek (__NR_Linux + 8) -+#define __NR_mmap (__NR_Linux + 9) -+#define __NR_mprotect (__NR_Linux + 10) -+#define __NR_munmap (__NR_Linux + 11) -+#define __NR_brk (__NR_Linux + 12) -+#define __NR_rt_sigaction (__NR_Linux + 13) -+#define __NR_rt_sigprocmask (__NR_Linux + 14) -+#define __NR_ioctl (__NR_Linux + 15) -+#define __NR_pread64 (__NR_Linux + 16) -+#define __NR_pwrite64 (__NR_Linux + 17) -+#define __NR_readv (__NR_Linux + 18) -+#define __NR_writev (__NR_Linux + 19) -+#define __NR_access (__NR_Linux + 20) -+#define __NR_pipe (__NR_Linux + 21) -+#define __NR__newselect (__NR_Linux + 22) -+#define __NR_sched_yield (__NR_Linux + 23) -+#define __NR_mremap (__NR_Linux + 24) -+#define __NR_msync (__NR_Linux + 25) -+#define __NR_mincore (__NR_Linux + 26) -+#define __NR_madvise (__NR_Linux + 27) -+#define __NR_shmget (__NR_Linux + 28) -+#define __NR_shmat (__NR_Linux + 29) -+#define __NR_shmctl (__NR_Linux + 30) -+#define __NR_dup (__NR_Linux + 31) -+#define __NR_dup2 (__NR_Linux + 32) -+#define __NR_pause (__NR_Linux + 33) -+#define __NR_nanosleep (__NR_Linux + 34) -+#define __NR_getitimer (__NR_Linux + 35) -+#define __NR_setitimer (__NR_Linux + 36) -+#define __NR_alarm (__NR_Linux + 37) -+#define __NR_getpid (__NR_Linux + 38) -+#define __NR_sendfile (__NR_Linux + 39) -+#define __NR_socket (__NR_Linux + 40) -+#define __NR_connect (__NR_Linux + 41) -+#define __NR_accept (__NR_Linux + 42) -+#define __NR_sendto (__NR_Linux + 43) -+#define __NR_recvfrom (__NR_Linux + 44) -+#define __NR_sendmsg (__NR_Linux + 45) -+#define __NR_recvmsg (__NR_Linux + 46) -+#define __NR_shutdown (__NR_Linux + 47) -+#define __NR_bind (__NR_Linux + 48) -+#define __NR_listen (__NR_Linux + 49) -+#define __NR_getsockname (__NR_Linux + 50) -+#define __NR_getpeername (__NR_Linux + 51) -+#define __NR_socketpair (__NR_Linux + 52) -+#define __NR_setsockopt (__NR_Linux + 53) -+#define __NR_getsockopt (__NR_Linux + 54) -+#define __NR_clone (__NR_Linux + 55) -+#define __NR_fork (__NR_Linux + 56) -+#define __NR_execve (__NR_Linux + 57) -+#define __NR_exit (__NR_Linux + 58) -+#define __NR_wait4 (__NR_Linux + 59) -+#define __NR_kill (__NR_Linux + 60) -+#define __NR_uname (__NR_Linux + 61) -+#define __NR_semget (__NR_Linux + 62) -+#define __NR_semop (__NR_Linux + 63) -+#define __NR_semctl (__NR_Linux + 64) -+#define __NR_shmdt (__NR_Linux + 65) -+#define __NR_msgget (__NR_Linux + 66) -+#define __NR_msgsnd (__NR_Linux + 67) -+#define __NR_msgrcv (__NR_Linux + 68) -+#define __NR_msgctl (__NR_Linux + 69) -+#define __NR_fcntl (__NR_Linux + 70) -+#define __NR_flock (__NR_Linux + 71) -+#define __NR_fsync (__NR_Linux + 72) -+#define __NR_fdatasync (__NR_Linux + 73) -+#define __NR_truncate (__NR_Linux + 74) -+#define __NR_ftruncate (__NR_Linux + 75) -+#define __NR_getdents (__NR_Linux + 76) -+#define __NR_getcwd (__NR_Linux + 77) -+#define __NR_chdir (__NR_Linux + 78) -+#define __NR_fchdir (__NR_Linux + 79) -+#define __NR_rename (__NR_Linux + 80) -+#define __NR_mkdir (__NR_Linux + 81) -+#define __NR_rmdir (__NR_Linux + 82) -+#define __NR_creat (__NR_Linux + 83) -+#define __NR_link (__NR_Linux + 84) -+#define __NR_unlink (__NR_Linux + 85) -+#define __NR_symlink (__NR_Linux + 86) -+#define __NR_readlink (__NR_Linux + 87) -+#define __NR_chmod (__NR_Linux + 88) -+#define __NR_fchmod (__NR_Linux + 89) -+#define __NR_chown (__NR_Linux + 90) -+#define __NR_fchown (__NR_Linux + 91) -+#define __NR_lchown (__NR_Linux + 92) -+#define __NR_umask (__NR_Linux + 93) -+#define __NR_gettimeofday (__NR_Linux + 94) -+#define __NR_getrlimit (__NR_Linux + 95) -+#define __NR_getrusage (__NR_Linux + 96) -+#define __NR_sysinfo (__NR_Linux + 97) -+#define __NR_times (__NR_Linux + 98) -+#define __NR_ptrace (__NR_Linux + 99) -+#define __NR_getuid (__NR_Linux + 100) -+#define __NR_syslog (__NR_Linux + 101) -+#define __NR_getgid (__NR_Linux + 102) -+#define __NR_setuid (__NR_Linux + 103) -+#define __NR_setgid (__NR_Linux + 104) -+#define __NR_geteuid (__NR_Linux + 105) -+#define __NR_getegid (__NR_Linux + 106) -+#define __NR_setpgid (__NR_Linux + 107) -+#define __NR_getppid (__NR_Linux + 108) -+#define __NR_getpgrp (__NR_Linux + 109) -+#define __NR_setsid (__NR_Linux + 110) -+#define __NR_setreuid (__NR_Linux + 111) -+#define __NR_setregid (__NR_Linux + 112) -+#define __NR_getgroups (__NR_Linux + 113) -+#define __NR_setgroups (__NR_Linux + 114) -+#define __NR_setresuid (__NR_Linux + 115) -+#define __NR_getresuid (__NR_Linux + 116) -+#define __NR_setresgid (__NR_Linux + 117) -+#define __NR_getresgid (__NR_Linux + 118) -+#define __NR_getpgid (__NR_Linux + 119) -+#define __NR_setfsuid (__NR_Linux + 120) -+#define __NR_setfsgid (__NR_Linux + 121) -+#define __NR_getsid (__NR_Linux + 122) -+#define __NR_capget (__NR_Linux + 123) -+#define __NR_capset (__NR_Linux + 124) -+#define __NR_rt_sigpending (__NR_Linux + 125) -+#define __NR_rt_sigtimedwait (__NR_Linux + 126) -+#define __NR_rt_sigqueueinfo (__NR_Linux + 127) -+#define __NR_rt_sigsuspend (__NR_Linux + 128) -+#define __NR_sigaltstack (__NR_Linux + 129) -+#define __NR_utime (__NR_Linux + 130) -+#define __NR_mknod (__NR_Linux + 131) -+#define __NR_personality (__NR_Linux + 132) -+#define __NR_ustat (__NR_Linux + 133) -+#define __NR_statfs (__NR_Linux + 134) -+#define __NR_fstatfs (__NR_Linux + 135) -+#define __NR_sysfs (__NR_Linux + 136) -+#define __NR_getpriority (__NR_Linux + 137) -+#define __NR_setpriority (__NR_Linux + 138) -+#define __NR_sched_setparam (__NR_Linux + 139) -+#define __NR_sched_getparam (__NR_Linux + 140) -+#define __NR_sched_setscheduler (__NR_Linux + 141) -+#define __NR_sched_getscheduler (__NR_Linux + 142) -+#define __NR_sched_get_priority_max (__NR_Linux + 143) -+#define __NR_sched_get_priority_min (__NR_Linux + 144) -+#define __NR_sched_rr_get_interval (__NR_Linux + 145) -+#define __NR_mlock (__NR_Linux + 146) -+#define __NR_munlock (__NR_Linux + 147) -+#define __NR_mlockall (__NR_Linux + 148) -+#define __NR_munlockall (__NR_Linux + 149) -+#define __NR_vhangup (__NR_Linux + 150) -+#define __NR_pivot_root (__NR_Linux + 151) -+#define __NR__sysctl (__NR_Linux + 152) -+#define __NR_prctl (__NR_Linux + 153) -+#define __NR_adjtimex (__NR_Linux + 154) -+#define __NR_setrlimit (__NR_Linux + 155) -+#define __NR_chroot (__NR_Linux + 156) -+#define __NR_sync (__NR_Linux + 157) -+#define __NR_acct (__NR_Linux + 158) -+#define __NR_settimeofday (__NR_Linux + 159) -+#define __NR_mount (__NR_Linux + 160) -+#define __NR_umount2 (__NR_Linux + 161) -+#define __NR_swapon (__NR_Linux + 162) -+#define __NR_swapoff (__NR_Linux + 163) -+#define __NR_reboot (__NR_Linux + 164) -+#define __NR_sethostname (__NR_Linux + 165) -+#define __NR_setdomainname (__NR_Linux + 166) -+#define __NR_create_module (__NR_Linux + 167) -+#define __NR_init_module (__NR_Linux + 168) -+#define __NR_delete_module (__NR_Linux + 169) -+#define __NR_get_kernel_syms (__NR_Linux + 170) -+#define __NR_query_module (__NR_Linux + 171) -+#define __NR_quotactl (__NR_Linux + 172) -+#define __NR_nfsservctl (__NR_Linux + 173) -+#define __NR_getpmsg (__NR_Linux + 174) -+#define __NR_putpmsg (__NR_Linux + 175) -+#define __NR_afs_syscall (__NR_Linux + 176) -+#define __NR_reserved177 (__NR_Linux + 177) -+#define __NR_gettid (__NR_Linux + 178) -+#define __NR_readahead (__NR_Linux + 179) -+#define __NR_setxattr (__NR_Linux + 180) -+#define __NR_lsetxattr (__NR_Linux + 181) -+#define __NR_fsetxattr (__NR_Linux + 182) -+#define __NR_getxattr (__NR_Linux + 183) -+#define __NR_lgetxattr (__NR_Linux + 184) -+#define __NR_fgetxattr (__NR_Linux + 185) -+#define __NR_listxattr (__NR_Linux + 186) -+#define __NR_llistxattr (__NR_Linux + 187) -+#define __NR_flistxattr (__NR_Linux + 188) -+#define __NR_removexattr (__NR_Linux + 189) -+#define __NR_lremovexattr (__NR_Linux + 190) -+#define __NR_fremovexattr (__NR_Linux + 191) -+#define __NR_tkill (__NR_Linux + 192) -+#define __NR_reserved193 (__NR_Linux + 193) -+#define __NR_futex (__NR_Linux + 194) -+#define __NR_sched_setaffinity (__NR_Linux + 195) -+#define __NR_sched_getaffinity (__NR_Linux + 196) -+#define __NR_cacheflush (__NR_Linux + 197) -+#define __NR_cachectl (__NR_Linux + 198) -+#define __NR_sysmips (__NR_Linux + 199) -+#define __NR_io_setup (__NR_Linux + 200) -+#define __NR_io_destroy (__NR_Linux + 201) -+#define __NR_io_getevents (__NR_Linux + 202) -+#define __NR_io_submit (__NR_Linux + 203) -+#define __NR_io_cancel (__NR_Linux + 204) -+#define __NR_exit_group (__NR_Linux + 205) -+#define __NR_lookup_dcookie (__NR_Linux + 206) -+#define __NR_epoll_create (__NR_Linux + 207) -+#define __NR_epoll_ctl (__NR_Linux + 208) -+#define __NR_epoll_wait (__NR_Linux + 209) -+#define __NR_remap_file_pages (__NR_Linux + 210) -+#define __NR_rt_sigreturn (__NR_Linux + 211) -+#define __NR_set_tid_address (__NR_Linux + 212) -+#define __NR_restart_syscall (__NR_Linux + 213) -+#define __NR_semtimedop (__NR_Linux + 214) -+#define __NR_fadvise64 (__NR_Linux + 215) -+#define __NR_timer_create (__NR_Linux + 216) -+#define __NR_timer_settime (__NR_Linux + 217) -+#define __NR_timer_gettime (__NR_Linux + 218) -+#define __NR_timer_getoverrun (__NR_Linux + 219) -+#define __NR_timer_delete (__NR_Linux + 220) -+#define __NR_clock_settime (__NR_Linux + 221) -+#define __NR_clock_gettime (__NR_Linux + 222) -+#define __NR_clock_getres (__NR_Linux + 223) -+#define __NR_clock_nanosleep (__NR_Linux + 224) -+#define __NR_tgkill (__NR_Linux + 225) -+#define __NR_utimes (__NR_Linux + 226) -+#define __NR_mbind (__NR_Linux + 227) -+#define __NR_get_mempolicy (__NR_Linux + 228) -+#define __NR_set_mempolicy (__NR_Linux + 229) -+#define __NR_mq_open (__NR_Linux + 230) -+#define __NR_mq_unlink (__NR_Linux + 231) -+#define __NR_mq_timedsend (__NR_Linux + 232) -+#define __NR_mq_timedreceive (__NR_Linux + 233) -+#define __NR_mq_notify (__NR_Linux + 234) -+#define __NR_mq_getsetattr (__NR_Linux + 235) -+#define __NR_vserver (__NR_Linux + 236) -+#define __NR_waitid (__NR_Linux + 237) -+#define __NR_add_key (__NR_Linux + 239) -+#define __NR_request_key (__NR_Linux + 240) -+#define __NR_keyctl (__NR_Linux + 241) -+#define __NR_set_thread_area (__NR_Linux + 242) -+#define __NR_inotify_init (__NR_Linux + 243) -+#define __NR_inotify_add_watch (__NR_Linux + 244) -+#define __NR_inotify_rm_watch (__NR_Linux + 245) -+#define __NR_migrate_pages (__NR_Linux + 246) -+#define __NR_openat (__NR_Linux + 247) -+#define __NR_mkdirat (__NR_Linux + 248) -+#define __NR_mknodat (__NR_Linux + 249) -+#define __NR_fchownat (__NR_Linux + 250) -+#define __NR_futimesat (__NR_Linux + 251) -+#define __NR_newfstatat (__NR_Linux + 252) -+#define __NR_unlinkat (__NR_Linux + 253) -+#define __NR_renameat (__NR_Linux + 254) -+#define __NR_linkat (__NR_Linux + 255) -+#define __NR_symlinkat (__NR_Linux + 256) -+#define __NR_readlinkat (__NR_Linux + 257) -+#define __NR_fchmodat (__NR_Linux + 258) -+#define __NR_faccessat (__NR_Linux + 259) -+#define __NR_pselect6 (__NR_Linux + 260) -+#define __NR_ppoll (__NR_Linux + 261) -+#define __NR_unshare (__NR_Linux + 262) -+#define __NR_splice (__NR_Linux + 263) -+#define __NR_sync_file_range (__NR_Linux + 264) -+#define __NR_tee (__NR_Linux + 265) -+#define __NR_vmsplice (__NR_Linux + 266) -+#define __NR_move_pages (__NR_Linux + 267) -+#define __NR_set_robust_list (__NR_Linux + 268) -+#define __NR_get_robust_list (__NR_Linux + 269) -+#define __NR_kexec_load (__NR_Linux + 270) -+#define __NR_getcpu (__NR_Linux + 271) -+#define __NR_epoll_pwait (__NR_Linux + 272) -+#define __NR_ioprio_set (__NR_Linux + 273) -+#define __NR_ioprio_get (__NR_Linux + 274) -+#define __NR_utimensat (__NR_Linux + 275) -+#define __NR_signalfd (__NR_Linux + 276) -+#define __NR_timerfd (__NR_Linux + 277) -+#define __NR_eventfd (__NR_Linux + 278) -+#define __NR_fallocate (__NR_Linux + 279) -+#define __NR_timerfd_create (__NR_Linux + 280) -+#define __NR_timerfd_gettime (__NR_Linux + 281) -+#define __NR_timerfd_settime (__NR_Linux + 282) -+#define __NR_signalfd4 (__NR_Linux + 283) -+#define __NR_eventfd2 (__NR_Linux + 284) -+#define __NR_epoll_create1 (__NR_Linux + 285) -+#define __NR_dup3 (__NR_Linux + 286) -+#define __NR_pipe2 (__NR_Linux + 287) -+#define __NR_inotify_init1 (__NR_Linux + 288) -+#define __NR_preadv (__NR_Linux + 289) -+#define __NR_pwritev (__NR_Linux + 290) -+#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291) -+#define __NR_perf_event_open (__NR_Linux + 292) -+#define __NR_accept4 (__NR_Linux + 293) -+#define __NR_recvmmsg (__NR_Linux + 294) -+#define __NR_fanotify_init (__NR_Linux + 295) -+#define __NR_fanotify_mark (__NR_Linux + 296) -+#define __NR_prlimit64 (__NR_Linux + 297) -+#define __NR_name_to_handle_at (__NR_Linux + 298) -+#define __NR_open_by_handle_at (__NR_Linux + 299) -+#define __NR_clock_adjtime (__NR_Linux + 300) -+#define __NR_syncfs (__NR_Linux + 301) -+#define __NR_sendmmsg (__NR_Linux + 302) -+#define __NR_setns (__NR_Linux + 303) -+#define __NR_process_vm_readv (__NR_Linux + 304) -+#define __NR_process_vm_writev (__NR_Linux + 305) -+#define __NR_kcmp (__NR_Linux + 306) -+#define __NR_finit_module (__NR_Linux + 307) -+#define __NR_getdents64 (__NR_Linux + 308) -+#define __NR_sched_setattr (__NR_Linux + 309) -+#define __NR_sched_getattr (__NR_Linux + 310) -+#define __NR_renameat2 (__NR_Linux + 311) -+#define __NR_seccomp (__NR_Linux + 312) -+#define __NR_getrandom (__NR_Linux + 313) -+#define __NR_memfd_create (__NR_Linux + 314) -+#define __NR_bpf (__NR_Linux + 315) -+#define __NR_execveat (__NR_Linux + 316) -+#define __NR_userfaultfd (__NR_Linux + 317) -+#define __NR_membarrier (__NR_Linux + 318) -+#define __NR_mlock2 (__NR_Linux + 319) -+#define __NR_copy_file_range (__NR_Linux + 320) -+#define __NR_preadv2 (__NR_Linux + 321) -+#define __NR_pwritev2 (__NR_Linux + 322) -+#define __NR_pkey_mprotect (__NR_Linux + 323) -+#define __NR_pkey_alloc (__NR_Linux + 324) -+#define __NR_pkey_free (__NR_Linux + 325) -+#define __NR_statx (__NR_Linux + 326) -+#define __NR_rseq (__NR_Linux + 327) -+#define __NR_io_pgetevents (__NR_Linux + 328) -+#define __NR_pidfd_send_signal (__NR_Linux + 424) -+#define __NR_io_uring_setup (__NR_Linux + 425) -+#define __NR_io_uring_enter (__NR_Linux + 426) -+#define __NR_io_uring_register (__NR_Linux + 427) -+#define __NR_open_tree (__NR_Linux + 428) -+#define __NR_move_mount (__NR_Linux + 429) -+#define __NR_fsopen (__NR_Linux + 430) -+#define __NR_fsconfig (__NR_Linux + 431) -+#define __NR_fsmount (__NR_Linux + 432) -+#define __NR_fspick (__NR_Linux + 433) -+#define __NR_pidfd_open (__NR_Linux + 434) -+#define __NR_clone3 (__NR_Linux + 435) -+#define __NR_close_range (__NR_Linux + 436) -+#define __NR_openat2 (__NR_Linux + 437) -+#define __NR_pidfd_getfd (__NR_Linux + 438) -+#define __NR_faccessat2 (__NR_Linux + 439) -+#define __NR_process_madvise (__NR_Linux + 440) -+#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_mount_setattr (__NR_Linux + 442) -+#define __NR_landlock_create_ruleset (__NR_Linux + 444) -+#define __NR_landlock_add_rule (__NR_Linux + 445) -+#define __NR_landlock_restrict_self (__NR_Linux + 446) - -- --#endif /* _ASM_MIPS_UNISTD_N64_H */ -+#endif /* _ASM_UNISTD_N64_H */ -diff --git a/linux-headers/asm-mips/unistd_o32.h b/linux-headers/asm-mips/unistd_o32.h -index ca6a7e5c0b..954303ad69 100644 ---- a/linux-headers/asm-mips/unistd_o32.h -+++ b/linux-headers/asm-mips/unistd_o32.h -@@ -1,422 +1,425 @@ --#ifndef _ASM_MIPS_UNISTD_O32_H --#define _ASM_MIPS_UNISTD_O32_H -+#ifndef _ASM_UNISTD_O32_H -+#define _ASM_UNISTD_O32_H - --#define __NR_syscall (__NR_Linux + 0) --#define __NR_exit (__NR_Linux + 1) --#define __NR_fork (__NR_Linux + 2) --#define __NR_read (__NR_Linux + 3) --#define __NR_write (__NR_Linux + 4) --#define __NR_open (__NR_Linux + 5) --#define __NR_close (__NR_Linux + 6) --#define __NR_waitpid (__NR_Linux + 7) --#define __NR_creat (__NR_Linux + 8) --#define __NR_link (__NR_Linux + 9) --#define __NR_unlink (__NR_Linux + 10) --#define __NR_execve (__NR_Linux + 11) --#define __NR_chdir (__NR_Linux + 12) --#define __NR_time (__NR_Linux + 13) --#define __NR_mknod (__NR_Linux + 14) --#define __NR_chmod (__NR_Linux + 15) --#define __NR_lchown (__NR_Linux + 16) --#define __NR_break (__NR_Linux + 17) --#define __NR_unused18 (__NR_Linux + 18) --#define __NR_lseek (__NR_Linux + 19) --#define __NR_getpid (__NR_Linux + 20) --#define __NR_mount (__NR_Linux + 21) --#define __NR_umount (__NR_Linux + 22) --#define __NR_setuid (__NR_Linux + 23) --#define __NR_getuid (__NR_Linux + 24) --#define __NR_stime (__NR_Linux + 25) --#define __NR_ptrace (__NR_Linux + 26) --#define __NR_alarm (__NR_Linux + 27) --#define __NR_unused28 (__NR_Linux + 28) --#define __NR_pause (__NR_Linux + 29) --#define __NR_utime (__NR_Linux + 30) --#define __NR_stty (__NR_Linux + 31) --#define __NR_gtty (__NR_Linux + 32) --#define __NR_access (__NR_Linux + 33) --#define __NR_nice (__NR_Linux + 34) --#define __NR_ftime (__NR_Linux + 35) --#define __NR_sync (__NR_Linux + 36) --#define __NR_kill (__NR_Linux + 37) --#define __NR_rename (__NR_Linux + 38) --#define __NR_mkdir (__NR_Linux + 39) --#define __NR_rmdir (__NR_Linux + 40) --#define __NR_dup (__NR_Linux + 41) --#define __NR_pipe (__NR_Linux + 42) --#define __NR_times (__NR_Linux + 43) --#define __NR_prof (__NR_Linux + 44) --#define __NR_brk (__NR_Linux + 45) --#define __NR_setgid (__NR_Linux + 46) --#define __NR_getgid (__NR_Linux + 47) --#define __NR_signal (__NR_Linux + 48) --#define __NR_geteuid (__NR_Linux + 49) --#define __NR_getegid (__NR_Linux + 50) --#define __NR_acct (__NR_Linux + 51) --#define __NR_umount2 (__NR_Linux + 52) --#define __NR_lock (__NR_Linux + 53) --#define __NR_ioctl (__NR_Linux + 54) --#define __NR_fcntl (__NR_Linux + 55) --#define __NR_mpx (__NR_Linux + 56) --#define __NR_setpgid (__NR_Linux + 57) --#define __NR_ulimit (__NR_Linux + 58) --#define __NR_unused59 (__NR_Linux + 59) --#define __NR_umask (__NR_Linux + 60) --#define __NR_chroot (__NR_Linux + 61) --#define __NR_ustat (__NR_Linux + 62) --#define __NR_dup2 (__NR_Linux + 63) --#define __NR_getppid (__NR_Linux + 64) --#define __NR_getpgrp (__NR_Linux + 65) --#define __NR_setsid (__NR_Linux + 66) --#define __NR_sigaction (__NR_Linux + 67) --#define __NR_sgetmask (__NR_Linux + 68) --#define __NR_ssetmask (__NR_Linux + 69) --#define __NR_setreuid (__NR_Linux + 70) --#define __NR_setregid (__NR_Linux + 71) --#define __NR_sigsuspend (__NR_Linux + 72) --#define __NR_sigpending (__NR_Linux + 73) --#define __NR_sethostname (__NR_Linux + 74) --#define __NR_setrlimit (__NR_Linux + 75) --#define __NR_getrlimit (__NR_Linux + 76) --#define __NR_getrusage (__NR_Linux + 77) --#define __NR_gettimeofday (__NR_Linux + 78) --#define __NR_settimeofday (__NR_Linux + 79) --#define __NR_getgroups (__NR_Linux + 80) --#define __NR_setgroups (__NR_Linux + 81) --#define __NR_reserved82 (__NR_Linux + 82) --#define __NR_symlink (__NR_Linux + 83) --#define __NR_unused84 (__NR_Linux + 84) --#define __NR_readlink (__NR_Linux + 85) --#define __NR_uselib (__NR_Linux + 86) --#define __NR_swapon (__NR_Linux + 87) --#define __NR_reboot (__NR_Linux + 88) --#define __NR_readdir (__NR_Linux + 89) --#define __NR_mmap (__NR_Linux + 90) --#define __NR_munmap (__NR_Linux + 91) --#define __NR_truncate (__NR_Linux + 92) --#define __NR_ftruncate (__NR_Linux + 93) --#define __NR_fchmod (__NR_Linux + 94) --#define __NR_fchown (__NR_Linux + 95) --#define __NR_getpriority (__NR_Linux + 96) --#define __NR_setpriority (__NR_Linux + 97) --#define __NR_profil (__NR_Linux + 98) --#define __NR_statfs (__NR_Linux + 99) --#define __NR_fstatfs (__NR_Linux + 100) --#define __NR_ioperm (__NR_Linux + 101) --#define __NR_socketcall (__NR_Linux + 102) --#define __NR_syslog (__NR_Linux + 103) --#define __NR_setitimer (__NR_Linux + 104) --#define __NR_getitimer (__NR_Linux + 105) --#define __NR_stat (__NR_Linux + 106) --#define __NR_lstat (__NR_Linux + 107) --#define __NR_fstat (__NR_Linux + 108) --#define __NR_unused109 (__NR_Linux + 109) --#define __NR_iopl (__NR_Linux + 110) --#define __NR_vhangup (__NR_Linux + 111) --#define __NR_idle (__NR_Linux + 112) --#define __NR_vm86 (__NR_Linux + 113) --#define __NR_wait4 (__NR_Linux + 114) --#define __NR_swapoff (__NR_Linux + 115) --#define __NR_sysinfo (__NR_Linux + 116) --#define __NR_ipc (__NR_Linux + 117) --#define __NR_fsync (__NR_Linux + 118) --#define __NR_sigreturn (__NR_Linux + 119) --#define __NR_clone (__NR_Linux + 120) --#define __NR_setdomainname (__NR_Linux + 121) --#define __NR_uname (__NR_Linux + 122) --#define __NR_modify_ldt (__NR_Linux + 123) --#define __NR_adjtimex (__NR_Linux + 124) --#define __NR_mprotect (__NR_Linux + 125) --#define __NR_sigprocmask (__NR_Linux + 126) --#define __NR_create_module (__NR_Linux + 127) --#define __NR_init_module (__NR_Linux + 128) --#define __NR_delete_module (__NR_Linux + 129) --#define __NR_get_kernel_syms (__NR_Linux + 130) --#define __NR_quotactl (__NR_Linux + 131) --#define __NR_getpgid (__NR_Linux + 132) --#define __NR_fchdir (__NR_Linux + 133) --#define __NR_bdflush (__NR_Linux + 134) --#define __NR_sysfs (__NR_Linux + 135) --#define __NR_personality (__NR_Linux + 136) --#define __NR_afs_syscall (__NR_Linux + 137) --#define __NR_setfsuid (__NR_Linux + 138) --#define __NR_setfsgid (__NR_Linux + 139) --#define __NR__llseek (__NR_Linux + 140) --#define __NR_getdents (__NR_Linux + 141) --#define __NR__newselect (__NR_Linux + 142) --#define __NR_flock (__NR_Linux + 143) --#define __NR_msync (__NR_Linux + 144) --#define __NR_readv (__NR_Linux + 145) --#define __NR_writev (__NR_Linux + 146) --#define __NR_cacheflush (__NR_Linux + 147) --#define __NR_cachectl (__NR_Linux + 148) --#define __NR_sysmips (__NR_Linux + 149) --#define __NR_unused150 (__NR_Linux + 150) --#define __NR_getsid (__NR_Linux + 151) --#define __NR_fdatasync (__NR_Linux + 152) --#define __NR__sysctl (__NR_Linux + 153) --#define __NR_mlock (__NR_Linux + 154) --#define __NR_munlock (__NR_Linux + 155) --#define __NR_mlockall (__NR_Linux + 156) --#define __NR_munlockall (__NR_Linux + 157) --#define __NR_sched_setparam (__NR_Linux + 158) --#define __NR_sched_getparam (__NR_Linux + 159) --#define __NR_sched_setscheduler (__NR_Linux + 160) --#define __NR_sched_getscheduler (__NR_Linux + 161) --#define __NR_sched_yield (__NR_Linux + 162) --#define __NR_sched_get_priority_max (__NR_Linux + 163) --#define __NR_sched_get_priority_min (__NR_Linux + 164) --#define __NR_sched_rr_get_interval (__NR_Linux + 165) --#define __NR_nanosleep (__NR_Linux + 166) --#define __NR_mremap (__NR_Linux + 167) --#define __NR_accept (__NR_Linux + 168) --#define __NR_bind (__NR_Linux + 169) --#define __NR_connect (__NR_Linux + 170) --#define __NR_getpeername (__NR_Linux + 171) --#define __NR_getsockname (__NR_Linux + 172) --#define __NR_getsockopt (__NR_Linux + 173) --#define __NR_listen (__NR_Linux + 174) --#define __NR_recv (__NR_Linux + 175) --#define __NR_recvfrom (__NR_Linux + 176) --#define __NR_recvmsg (__NR_Linux + 177) --#define __NR_send (__NR_Linux + 178) --#define __NR_sendmsg (__NR_Linux + 179) --#define __NR_sendto (__NR_Linux + 180) --#define __NR_setsockopt (__NR_Linux + 181) --#define __NR_shutdown (__NR_Linux + 182) --#define __NR_socket (__NR_Linux + 183) --#define __NR_socketpair (__NR_Linux + 184) --#define __NR_setresuid (__NR_Linux + 185) --#define __NR_getresuid (__NR_Linux + 186) --#define __NR_query_module (__NR_Linux + 187) --#define __NR_poll (__NR_Linux + 188) --#define __NR_nfsservctl (__NR_Linux + 189) --#define __NR_setresgid (__NR_Linux + 190) --#define __NR_getresgid (__NR_Linux + 191) --#define __NR_prctl (__NR_Linux + 192) --#define __NR_rt_sigreturn (__NR_Linux + 193) --#define __NR_rt_sigaction (__NR_Linux + 194) --#define __NR_rt_sigprocmask (__NR_Linux + 195) --#define __NR_rt_sigpending (__NR_Linux + 196) --#define __NR_rt_sigtimedwait (__NR_Linux + 197) --#define __NR_rt_sigqueueinfo (__NR_Linux + 198) --#define __NR_rt_sigsuspend (__NR_Linux + 199) --#define __NR_pread64 (__NR_Linux + 200) --#define __NR_pwrite64 (__NR_Linux + 201) --#define __NR_chown (__NR_Linux + 202) --#define __NR_getcwd (__NR_Linux + 203) --#define __NR_capget (__NR_Linux + 204) --#define __NR_capset (__NR_Linux + 205) --#define __NR_sigaltstack (__NR_Linux + 206) --#define __NR_sendfile (__NR_Linux + 207) --#define __NR_getpmsg (__NR_Linux + 208) --#define __NR_putpmsg (__NR_Linux + 209) --#define __NR_mmap2 (__NR_Linux + 210) --#define __NR_truncate64 (__NR_Linux + 211) --#define __NR_ftruncate64 (__NR_Linux + 212) --#define __NR_stat64 (__NR_Linux + 213) --#define __NR_lstat64 (__NR_Linux + 214) --#define __NR_fstat64 (__NR_Linux + 215) --#define __NR_pivot_root (__NR_Linux + 216) --#define __NR_mincore (__NR_Linux + 217) --#define __NR_madvise (__NR_Linux + 218) --#define __NR_getdents64 (__NR_Linux + 219) --#define __NR_fcntl64 (__NR_Linux + 220) --#define __NR_reserved221 (__NR_Linux + 221) --#define __NR_gettid (__NR_Linux + 222) --#define __NR_readahead (__NR_Linux + 223) --#define __NR_setxattr (__NR_Linux + 224) --#define __NR_lsetxattr (__NR_Linux + 225) --#define __NR_fsetxattr (__NR_Linux + 226) --#define __NR_getxattr (__NR_Linux + 227) --#define __NR_lgetxattr (__NR_Linux + 228) --#define __NR_fgetxattr (__NR_Linux + 229) --#define __NR_listxattr (__NR_Linux + 230) --#define __NR_llistxattr (__NR_Linux + 231) --#define __NR_flistxattr (__NR_Linux + 232) --#define __NR_removexattr (__NR_Linux + 233) --#define __NR_lremovexattr (__NR_Linux + 234) --#define __NR_fremovexattr (__NR_Linux + 235) --#define __NR_tkill (__NR_Linux + 236) --#define __NR_sendfile64 (__NR_Linux + 237) --#define __NR_futex (__NR_Linux + 238) --#define __NR_sched_setaffinity (__NR_Linux + 239) --#define __NR_sched_getaffinity (__NR_Linux + 240) --#define __NR_io_setup (__NR_Linux + 241) --#define __NR_io_destroy (__NR_Linux + 242) --#define __NR_io_getevents (__NR_Linux + 243) --#define __NR_io_submit (__NR_Linux + 244) --#define __NR_io_cancel (__NR_Linux + 245) --#define __NR_exit_group (__NR_Linux + 246) --#define __NR_lookup_dcookie (__NR_Linux + 247) --#define __NR_epoll_create (__NR_Linux + 248) --#define __NR_epoll_ctl (__NR_Linux + 249) --#define __NR_epoll_wait (__NR_Linux + 250) --#define __NR_remap_file_pages (__NR_Linux + 251) --#define __NR_set_tid_address (__NR_Linux + 252) --#define __NR_restart_syscall (__NR_Linux + 253) --#define __NR_fadvise64 (__NR_Linux + 254) --#define __NR_statfs64 (__NR_Linux + 255) --#define __NR_fstatfs64 (__NR_Linux + 256) --#define __NR_timer_create (__NR_Linux + 257) --#define __NR_timer_settime (__NR_Linux + 258) --#define __NR_timer_gettime (__NR_Linux + 259) --#define __NR_timer_getoverrun (__NR_Linux + 260) --#define __NR_timer_delete (__NR_Linux + 261) --#define __NR_clock_settime (__NR_Linux + 262) --#define __NR_clock_gettime (__NR_Linux + 263) --#define __NR_clock_getres (__NR_Linux + 264) --#define __NR_clock_nanosleep (__NR_Linux + 265) --#define __NR_tgkill (__NR_Linux + 266) --#define __NR_utimes (__NR_Linux + 267) --#define __NR_mbind (__NR_Linux + 268) --#define __NR_get_mempolicy (__NR_Linux + 269) --#define __NR_set_mempolicy (__NR_Linux + 270) --#define __NR_mq_open (__NR_Linux + 271) --#define __NR_mq_unlink (__NR_Linux + 272) --#define __NR_mq_timedsend (__NR_Linux + 273) --#define __NR_mq_timedreceive (__NR_Linux + 274) --#define __NR_mq_notify (__NR_Linux + 275) --#define __NR_mq_getsetattr (__NR_Linux + 276) --#define __NR_vserver (__NR_Linux + 277) --#define __NR_waitid (__NR_Linux + 278) --#define __NR_add_key (__NR_Linux + 280) --#define __NR_request_key (__NR_Linux + 281) --#define __NR_keyctl (__NR_Linux + 282) --#define __NR_set_thread_area (__NR_Linux + 283) --#define __NR_inotify_init (__NR_Linux + 284) --#define __NR_inotify_add_watch (__NR_Linux + 285) --#define __NR_inotify_rm_watch (__NR_Linux + 286) --#define __NR_migrate_pages (__NR_Linux + 287) --#define __NR_openat (__NR_Linux + 288) --#define __NR_mkdirat (__NR_Linux + 289) --#define __NR_mknodat (__NR_Linux + 290) --#define __NR_fchownat (__NR_Linux + 291) --#define __NR_futimesat (__NR_Linux + 292) --#define __NR_fstatat64 (__NR_Linux + 293) --#define __NR_unlinkat (__NR_Linux + 294) --#define __NR_renameat (__NR_Linux + 295) --#define __NR_linkat (__NR_Linux + 296) --#define __NR_symlinkat (__NR_Linux + 297) --#define __NR_readlinkat (__NR_Linux + 298) --#define __NR_fchmodat (__NR_Linux + 299) --#define __NR_faccessat (__NR_Linux + 300) --#define __NR_pselect6 (__NR_Linux + 301) --#define __NR_ppoll (__NR_Linux + 302) --#define __NR_unshare (__NR_Linux + 303) --#define __NR_splice (__NR_Linux + 304) --#define __NR_sync_file_range (__NR_Linux + 305) --#define __NR_tee (__NR_Linux + 306) --#define __NR_vmsplice (__NR_Linux + 307) --#define __NR_move_pages (__NR_Linux + 308) --#define __NR_set_robust_list (__NR_Linux + 309) --#define __NR_get_robust_list (__NR_Linux + 310) --#define __NR_kexec_load (__NR_Linux + 311) --#define __NR_getcpu (__NR_Linux + 312) --#define __NR_epoll_pwait (__NR_Linux + 313) --#define __NR_ioprio_set (__NR_Linux + 314) --#define __NR_ioprio_get (__NR_Linux + 315) --#define __NR_utimensat (__NR_Linux + 316) --#define __NR_signalfd (__NR_Linux + 317) --#define __NR_timerfd (__NR_Linux + 318) --#define __NR_eventfd (__NR_Linux + 319) --#define __NR_fallocate (__NR_Linux + 320) --#define __NR_timerfd_create (__NR_Linux + 321) --#define __NR_timerfd_gettime (__NR_Linux + 322) --#define __NR_timerfd_settime (__NR_Linux + 323) --#define __NR_signalfd4 (__NR_Linux + 324) --#define __NR_eventfd2 (__NR_Linux + 325) --#define __NR_epoll_create1 (__NR_Linux + 326) --#define __NR_dup3 (__NR_Linux + 327) --#define __NR_pipe2 (__NR_Linux + 328) --#define __NR_inotify_init1 (__NR_Linux + 329) --#define __NR_preadv (__NR_Linux + 330) --#define __NR_pwritev (__NR_Linux + 331) --#define __NR_rt_tgsigqueueinfo (__NR_Linux + 332) --#define __NR_perf_event_open (__NR_Linux + 333) --#define __NR_accept4 (__NR_Linux + 334) --#define __NR_recvmmsg (__NR_Linux + 335) --#define __NR_fanotify_init (__NR_Linux + 336) --#define __NR_fanotify_mark (__NR_Linux + 337) --#define __NR_prlimit64 (__NR_Linux + 338) --#define __NR_name_to_handle_at (__NR_Linux + 339) --#define __NR_open_by_handle_at (__NR_Linux + 340) --#define __NR_clock_adjtime (__NR_Linux + 341) --#define __NR_syncfs (__NR_Linux + 342) --#define __NR_sendmmsg (__NR_Linux + 343) --#define __NR_setns (__NR_Linux + 344) --#define __NR_process_vm_readv (__NR_Linux + 345) --#define __NR_process_vm_writev (__NR_Linux + 346) --#define __NR_kcmp (__NR_Linux + 347) --#define __NR_finit_module (__NR_Linux + 348) --#define __NR_sched_setattr (__NR_Linux + 349) --#define __NR_sched_getattr (__NR_Linux + 350) --#define __NR_renameat2 (__NR_Linux + 351) --#define __NR_seccomp (__NR_Linux + 352) --#define __NR_getrandom (__NR_Linux + 353) --#define __NR_memfd_create (__NR_Linux + 354) --#define __NR_bpf (__NR_Linux + 355) --#define __NR_execveat (__NR_Linux + 356) --#define __NR_userfaultfd (__NR_Linux + 357) --#define __NR_membarrier (__NR_Linux + 358) --#define __NR_mlock2 (__NR_Linux + 359) --#define __NR_copy_file_range (__NR_Linux + 360) --#define __NR_preadv2 (__NR_Linux + 361) --#define __NR_pwritev2 (__NR_Linux + 362) --#define __NR_pkey_mprotect (__NR_Linux + 363) --#define __NR_pkey_alloc (__NR_Linux + 364) --#define __NR_pkey_free (__NR_Linux + 365) --#define __NR_statx (__NR_Linux + 366) --#define __NR_rseq (__NR_Linux + 367) --#define __NR_io_pgetevents (__NR_Linux + 368) --#define __NR_semget (__NR_Linux + 393) --#define __NR_semctl (__NR_Linux + 394) --#define __NR_shmget (__NR_Linux + 395) --#define __NR_shmctl (__NR_Linux + 396) --#define __NR_shmat (__NR_Linux + 397) --#define __NR_shmdt (__NR_Linux + 398) --#define __NR_msgget (__NR_Linux + 399) --#define __NR_msgsnd (__NR_Linux + 400) --#define __NR_msgrcv (__NR_Linux + 401) --#define __NR_msgctl (__NR_Linux + 402) --#define __NR_clock_gettime64 (__NR_Linux + 403) --#define __NR_clock_settime64 (__NR_Linux + 404) --#define __NR_clock_adjtime64 (__NR_Linux + 405) --#define __NR_clock_getres_time64 (__NR_Linux + 406) --#define __NR_clock_nanosleep_time64 (__NR_Linux + 407) --#define __NR_timer_gettime64 (__NR_Linux + 408) --#define __NR_timer_settime64 (__NR_Linux + 409) --#define __NR_timerfd_gettime64 (__NR_Linux + 410) --#define __NR_timerfd_settime64 (__NR_Linux + 411) --#define __NR_utimensat_time64 (__NR_Linux + 412) --#define __NR_pselect6_time64 (__NR_Linux + 413) --#define __NR_ppoll_time64 (__NR_Linux + 414) --#define __NR_io_pgetevents_time64 (__NR_Linux + 416) --#define __NR_recvmmsg_time64 (__NR_Linux + 417) --#define __NR_mq_timedsend_time64 (__NR_Linux + 418) --#define __NR_mq_timedreceive_time64 (__NR_Linux + 419) --#define __NR_semtimedop_time64 (__NR_Linux + 420) --#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421) --#define __NR_futex_time64 (__NR_Linux + 422) --#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423) --#define __NR_pidfd_send_signal (__NR_Linux + 424) --#define __NR_io_uring_setup (__NR_Linux + 425) --#define __NR_io_uring_enter (__NR_Linux + 426) --#define __NR_io_uring_register (__NR_Linux + 427) --#define __NR_open_tree (__NR_Linux + 428) --#define __NR_move_mount (__NR_Linux + 429) --#define __NR_fsopen (__NR_Linux + 430) --#define __NR_fsconfig (__NR_Linux + 431) --#define __NR_fsmount (__NR_Linux + 432) --#define __NR_fspick (__NR_Linux + 433) --#define __NR_pidfd_open (__NR_Linux + 434) --#define __NR_clone3 (__NR_Linux + 435) --#define __NR_close_range (__NR_Linux + 436) --#define __NR_openat2 (__NR_Linux + 437) --#define __NR_pidfd_getfd (__NR_Linux + 438) --#define __NR_faccessat2 (__NR_Linux + 439) --#define __NR_process_madvise (__NR_Linux + 440) --#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_syscall (__NR_Linux + 0) -+#define __NR_exit (__NR_Linux + 1) -+#define __NR_fork (__NR_Linux + 2) -+#define __NR_read (__NR_Linux + 3) -+#define __NR_write (__NR_Linux + 4) -+#define __NR_open (__NR_Linux + 5) -+#define __NR_close (__NR_Linux + 6) -+#define __NR_waitpid (__NR_Linux + 7) -+#define __NR_creat (__NR_Linux + 8) -+#define __NR_link (__NR_Linux + 9) -+#define __NR_unlink (__NR_Linux + 10) -+#define __NR_execve (__NR_Linux + 11) -+#define __NR_chdir (__NR_Linux + 12) -+#define __NR_time (__NR_Linux + 13) -+#define __NR_mknod (__NR_Linux + 14) -+#define __NR_chmod (__NR_Linux + 15) -+#define __NR_lchown (__NR_Linux + 16) -+#define __NR_break (__NR_Linux + 17) -+#define __NR_unused18 (__NR_Linux + 18) -+#define __NR_lseek (__NR_Linux + 19) -+#define __NR_getpid (__NR_Linux + 20) -+#define __NR_mount (__NR_Linux + 21) -+#define __NR_umount (__NR_Linux + 22) -+#define __NR_setuid (__NR_Linux + 23) -+#define __NR_getuid (__NR_Linux + 24) -+#define __NR_stime (__NR_Linux + 25) -+#define __NR_ptrace (__NR_Linux + 26) -+#define __NR_alarm (__NR_Linux + 27) -+#define __NR_unused28 (__NR_Linux + 28) -+#define __NR_pause (__NR_Linux + 29) -+#define __NR_utime (__NR_Linux + 30) -+#define __NR_stty (__NR_Linux + 31) -+#define __NR_gtty (__NR_Linux + 32) -+#define __NR_access (__NR_Linux + 33) -+#define __NR_nice (__NR_Linux + 34) -+#define __NR_ftime (__NR_Linux + 35) -+#define __NR_sync (__NR_Linux + 36) -+#define __NR_kill (__NR_Linux + 37) -+#define __NR_rename (__NR_Linux + 38) -+#define __NR_mkdir (__NR_Linux + 39) -+#define __NR_rmdir (__NR_Linux + 40) -+#define __NR_dup (__NR_Linux + 41) -+#define __NR_pipe (__NR_Linux + 42) -+#define __NR_times (__NR_Linux + 43) -+#define __NR_prof (__NR_Linux + 44) -+#define __NR_brk (__NR_Linux + 45) -+#define __NR_setgid (__NR_Linux + 46) -+#define __NR_getgid (__NR_Linux + 47) -+#define __NR_signal (__NR_Linux + 48) -+#define __NR_geteuid (__NR_Linux + 49) -+#define __NR_getegid (__NR_Linux + 50) -+#define __NR_acct (__NR_Linux + 51) -+#define __NR_umount2 (__NR_Linux + 52) -+#define __NR_lock (__NR_Linux + 53) -+#define __NR_ioctl (__NR_Linux + 54) -+#define __NR_fcntl (__NR_Linux + 55) -+#define __NR_mpx (__NR_Linux + 56) -+#define __NR_setpgid (__NR_Linux + 57) -+#define __NR_ulimit (__NR_Linux + 58) -+#define __NR_unused59 (__NR_Linux + 59) -+#define __NR_umask (__NR_Linux + 60) -+#define __NR_chroot (__NR_Linux + 61) -+#define __NR_ustat (__NR_Linux + 62) -+#define __NR_dup2 (__NR_Linux + 63) -+#define __NR_getppid (__NR_Linux + 64) -+#define __NR_getpgrp (__NR_Linux + 65) -+#define __NR_setsid (__NR_Linux + 66) -+#define __NR_sigaction (__NR_Linux + 67) -+#define __NR_sgetmask (__NR_Linux + 68) -+#define __NR_ssetmask (__NR_Linux + 69) -+#define __NR_setreuid (__NR_Linux + 70) -+#define __NR_setregid (__NR_Linux + 71) -+#define __NR_sigsuspend (__NR_Linux + 72) -+#define __NR_sigpending (__NR_Linux + 73) -+#define __NR_sethostname (__NR_Linux + 74) -+#define __NR_setrlimit (__NR_Linux + 75) -+#define __NR_getrlimit (__NR_Linux + 76) -+#define __NR_getrusage (__NR_Linux + 77) -+#define __NR_gettimeofday (__NR_Linux + 78) -+#define __NR_settimeofday (__NR_Linux + 79) -+#define __NR_getgroups (__NR_Linux + 80) -+#define __NR_setgroups (__NR_Linux + 81) -+#define __NR_reserved82 (__NR_Linux + 82) -+#define __NR_symlink (__NR_Linux + 83) -+#define __NR_unused84 (__NR_Linux + 84) -+#define __NR_readlink (__NR_Linux + 85) -+#define __NR_uselib (__NR_Linux + 86) -+#define __NR_swapon (__NR_Linux + 87) -+#define __NR_reboot (__NR_Linux + 88) -+#define __NR_readdir (__NR_Linux + 89) -+#define __NR_mmap (__NR_Linux + 90) -+#define __NR_munmap (__NR_Linux + 91) -+#define __NR_truncate (__NR_Linux + 92) -+#define __NR_ftruncate (__NR_Linux + 93) -+#define __NR_fchmod (__NR_Linux + 94) -+#define __NR_fchown (__NR_Linux + 95) -+#define __NR_getpriority (__NR_Linux + 96) -+#define __NR_setpriority (__NR_Linux + 97) -+#define __NR_profil (__NR_Linux + 98) -+#define __NR_statfs (__NR_Linux + 99) -+#define __NR_fstatfs (__NR_Linux + 100) -+#define __NR_ioperm (__NR_Linux + 101) -+#define __NR_socketcall (__NR_Linux + 102) -+#define __NR_syslog (__NR_Linux + 103) -+#define __NR_setitimer (__NR_Linux + 104) -+#define __NR_getitimer (__NR_Linux + 105) -+#define __NR_stat (__NR_Linux + 106) -+#define __NR_lstat (__NR_Linux + 107) -+#define __NR_fstat (__NR_Linux + 108) -+#define __NR_unused109 (__NR_Linux + 109) -+#define __NR_iopl (__NR_Linux + 110) -+#define __NR_vhangup (__NR_Linux + 111) -+#define __NR_idle (__NR_Linux + 112) -+#define __NR_vm86 (__NR_Linux + 113) -+#define __NR_wait4 (__NR_Linux + 114) -+#define __NR_swapoff (__NR_Linux + 115) -+#define __NR_sysinfo (__NR_Linux + 116) -+#define __NR_ipc (__NR_Linux + 117) -+#define __NR_fsync (__NR_Linux + 118) -+#define __NR_sigreturn (__NR_Linux + 119) -+#define __NR_clone (__NR_Linux + 120) -+#define __NR_setdomainname (__NR_Linux + 121) -+#define __NR_uname (__NR_Linux + 122) -+#define __NR_modify_ldt (__NR_Linux + 123) -+#define __NR_adjtimex (__NR_Linux + 124) -+#define __NR_mprotect (__NR_Linux + 125) -+#define __NR_sigprocmask (__NR_Linux + 126) -+#define __NR_create_module (__NR_Linux + 127) -+#define __NR_init_module (__NR_Linux + 128) -+#define __NR_delete_module (__NR_Linux + 129) -+#define __NR_get_kernel_syms (__NR_Linux + 130) -+#define __NR_quotactl (__NR_Linux + 131) -+#define __NR_getpgid (__NR_Linux + 132) -+#define __NR_fchdir (__NR_Linux + 133) -+#define __NR_bdflush (__NR_Linux + 134) -+#define __NR_sysfs (__NR_Linux + 135) -+#define __NR_personality (__NR_Linux + 136) -+#define __NR_afs_syscall (__NR_Linux + 137) -+#define __NR_setfsuid (__NR_Linux + 138) -+#define __NR_setfsgid (__NR_Linux + 139) -+#define __NR__llseek (__NR_Linux + 140) -+#define __NR_getdents (__NR_Linux + 141) -+#define __NR__newselect (__NR_Linux + 142) -+#define __NR_flock (__NR_Linux + 143) -+#define __NR_msync (__NR_Linux + 144) -+#define __NR_readv (__NR_Linux + 145) -+#define __NR_writev (__NR_Linux + 146) -+#define __NR_cacheflush (__NR_Linux + 147) -+#define __NR_cachectl (__NR_Linux + 148) -+#define __NR_sysmips (__NR_Linux + 149) -+#define __NR_unused150 (__NR_Linux + 150) -+#define __NR_getsid (__NR_Linux + 151) -+#define __NR_fdatasync (__NR_Linux + 152) -+#define __NR__sysctl (__NR_Linux + 153) -+#define __NR_mlock (__NR_Linux + 154) -+#define __NR_munlock (__NR_Linux + 155) -+#define __NR_mlockall (__NR_Linux + 156) -+#define __NR_munlockall (__NR_Linux + 157) -+#define __NR_sched_setparam (__NR_Linux + 158) -+#define __NR_sched_getparam (__NR_Linux + 159) -+#define __NR_sched_setscheduler (__NR_Linux + 160) -+#define __NR_sched_getscheduler (__NR_Linux + 161) -+#define __NR_sched_yield (__NR_Linux + 162) -+#define __NR_sched_get_priority_max (__NR_Linux + 163) -+#define __NR_sched_get_priority_min (__NR_Linux + 164) -+#define __NR_sched_rr_get_interval (__NR_Linux + 165) -+#define __NR_nanosleep (__NR_Linux + 166) -+#define __NR_mremap (__NR_Linux + 167) -+#define __NR_accept (__NR_Linux + 168) -+#define __NR_bind (__NR_Linux + 169) -+#define __NR_connect (__NR_Linux + 170) -+#define __NR_getpeername (__NR_Linux + 171) -+#define __NR_getsockname (__NR_Linux + 172) -+#define __NR_getsockopt (__NR_Linux + 173) -+#define __NR_listen (__NR_Linux + 174) -+#define __NR_recv (__NR_Linux + 175) -+#define __NR_recvfrom (__NR_Linux + 176) -+#define __NR_recvmsg (__NR_Linux + 177) -+#define __NR_send (__NR_Linux + 178) -+#define __NR_sendmsg (__NR_Linux + 179) -+#define __NR_sendto (__NR_Linux + 180) -+#define __NR_setsockopt (__NR_Linux + 181) -+#define __NR_shutdown (__NR_Linux + 182) -+#define __NR_socket (__NR_Linux + 183) -+#define __NR_socketpair (__NR_Linux + 184) -+#define __NR_setresuid (__NR_Linux + 185) -+#define __NR_getresuid (__NR_Linux + 186) -+#define __NR_query_module (__NR_Linux + 187) -+#define __NR_poll (__NR_Linux + 188) -+#define __NR_nfsservctl (__NR_Linux + 189) -+#define __NR_setresgid (__NR_Linux + 190) -+#define __NR_getresgid (__NR_Linux + 191) -+#define __NR_prctl (__NR_Linux + 192) -+#define __NR_rt_sigreturn (__NR_Linux + 193) -+#define __NR_rt_sigaction (__NR_Linux + 194) -+#define __NR_rt_sigprocmask (__NR_Linux + 195) -+#define __NR_rt_sigpending (__NR_Linux + 196) -+#define __NR_rt_sigtimedwait (__NR_Linux + 197) -+#define __NR_rt_sigqueueinfo (__NR_Linux + 198) -+#define __NR_rt_sigsuspend (__NR_Linux + 199) -+#define __NR_pread64 (__NR_Linux + 200) -+#define __NR_pwrite64 (__NR_Linux + 201) -+#define __NR_chown (__NR_Linux + 202) -+#define __NR_getcwd (__NR_Linux + 203) -+#define __NR_capget (__NR_Linux + 204) -+#define __NR_capset (__NR_Linux + 205) -+#define __NR_sigaltstack (__NR_Linux + 206) -+#define __NR_sendfile (__NR_Linux + 207) -+#define __NR_getpmsg (__NR_Linux + 208) -+#define __NR_putpmsg (__NR_Linux + 209) -+#define __NR_mmap2 (__NR_Linux + 210) -+#define __NR_truncate64 (__NR_Linux + 211) -+#define __NR_ftruncate64 (__NR_Linux + 212) -+#define __NR_stat64 (__NR_Linux + 213) -+#define __NR_lstat64 (__NR_Linux + 214) -+#define __NR_fstat64 (__NR_Linux + 215) -+#define __NR_pivot_root (__NR_Linux + 216) -+#define __NR_mincore (__NR_Linux + 217) -+#define __NR_madvise (__NR_Linux + 218) -+#define __NR_getdents64 (__NR_Linux + 219) -+#define __NR_fcntl64 (__NR_Linux + 220) -+#define __NR_reserved221 (__NR_Linux + 221) -+#define __NR_gettid (__NR_Linux + 222) -+#define __NR_readahead (__NR_Linux + 223) -+#define __NR_setxattr (__NR_Linux + 224) -+#define __NR_lsetxattr (__NR_Linux + 225) -+#define __NR_fsetxattr (__NR_Linux + 226) -+#define __NR_getxattr (__NR_Linux + 227) -+#define __NR_lgetxattr (__NR_Linux + 228) -+#define __NR_fgetxattr (__NR_Linux + 229) -+#define __NR_listxattr (__NR_Linux + 230) -+#define __NR_llistxattr (__NR_Linux + 231) -+#define __NR_flistxattr (__NR_Linux + 232) -+#define __NR_removexattr (__NR_Linux + 233) -+#define __NR_lremovexattr (__NR_Linux + 234) -+#define __NR_fremovexattr (__NR_Linux + 235) -+#define __NR_tkill (__NR_Linux + 236) -+#define __NR_sendfile64 (__NR_Linux + 237) -+#define __NR_futex (__NR_Linux + 238) -+#define __NR_sched_setaffinity (__NR_Linux + 239) -+#define __NR_sched_getaffinity (__NR_Linux + 240) -+#define __NR_io_setup (__NR_Linux + 241) -+#define __NR_io_destroy (__NR_Linux + 242) -+#define __NR_io_getevents (__NR_Linux + 243) -+#define __NR_io_submit (__NR_Linux + 244) -+#define __NR_io_cancel (__NR_Linux + 245) -+#define __NR_exit_group (__NR_Linux + 246) -+#define __NR_lookup_dcookie (__NR_Linux + 247) -+#define __NR_epoll_create (__NR_Linux + 248) -+#define __NR_epoll_ctl (__NR_Linux + 249) -+#define __NR_epoll_wait (__NR_Linux + 250) -+#define __NR_remap_file_pages (__NR_Linux + 251) -+#define __NR_set_tid_address (__NR_Linux + 252) -+#define __NR_restart_syscall (__NR_Linux + 253) -+#define __NR_fadvise64 (__NR_Linux + 254) -+#define __NR_statfs64 (__NR_Linux + 255) -+#define __NR_fstatfs64 (__NR_Linux + 256) -+#define __NR_timer_create (__NR_Linux + 257) -+#define __NR_timer_settime (__NR_Linux + 258) -+#define __NR_timer_gettime (__NR_Linux + 259) -+#define __NR_timer_getoverrun (__NR_Linux + 260) -+#define __NR_timer_delete (__NR_Linux + 261) -+#define __NR_clock_settime (__NR_Linux + 262) -+#define __NR_clock_gettime (__NR_Linux + 263) -+#define __NR_clock_getres (__NR_Linux + 264) -+#define __NR_clock_nanosleep (__NR_Linux + 265) -+#define __NR_tgkill (__NR_Linux + 266) -+#define __NR_utimes (__NR_Linux + 267) -+#define __NR_mbind (__NR_Linux + 268) -+#define __NR_get_mempolicy (__NR_Linux + 269) -+#define __NR_set_mempolicy (__NR_Linux + 270) -+#define __NR_mq_open (__NR_Linux + 271) -+#define __NR_mq_unlink (__NR_Linux + 272) -+#define __NR_mq_timedsend (__NR_Linux + 273) -+#define __NR_mq_timedreceive (__NR_Linux + 274) -+#define __NR_mq_notify (__NR_Linux + 275) -+#define __NR_mq_getsetattr (__NR_Linux + 276) -+#define __NR_vserver (__NR_Linux + 277) -+#define __NR_waitid (__NR_Linux + 278) -+#define __NR_add_key (__NR_Linux + 280) -+#define __NR_request_key (__NR_Linux + 281) -+#define __NR_keyctl (__NR_Linux + 282) -+#define __NR_set_thread_area (__NR_Linux + 283) -+#define __NR_inotify_init (__NR_Linux + 284) -+#define __NR_inotify_add_watch (__NR_Linux + 285) -+#define __NR_inotify_rm_watch (__NR_Linux + 286) -+#define __NR_migrate_pages (__NR_Linux + 287) -+#define __NR_openat (__NR_Linux + 288) -+#define __NR_mkdirat (__NR_Linux + 289) -+#define __NR_mknodat (__NR_Linux + 290) -+#define __NR_fchownat (__NR_Linux + 291) -+#define __NR_futimesat (__NR_Linux + 292) -+#define __NR_fstatat64 (__NR_Linux + 293) -+#define __NR_unlinkat (__NR_Linux + 294) -+#define __NR_renameat (__NR_Linux + 295) -+#define __NR_linkat (__NR_Linux + 296) -+#define __NR_symlinkat (__NR_Linux + 297) -+#define __NR_readlinkat (__NR_Linux + 298) -+#define __NR_fchmodat (__NR_Linux + 299) -+#define __NR_faccessat (__NR_Linux + 300) -+#define __NR_pselect6 (__NR_Linux + 301) -+#define __NR_ppoll (__NR_Linux + 302) -+#define __NR_unshare (__NR_Linux + 303) -+#define __NR_splice (__NR_Linux + 304) -+#define __NR_sync_file_range (__NR_Linux + 305) -+#define __NR_tee (__NR_Linux + 306) -+#define __NR_vmsplice (__NR_Linux + 307) -+#define __NR_move_pages (__NR_Linux + 308) -+#define __NR_set_robust_list (__NR_Linux + 309) -+#define __NR_get_robust_list (__NR_Linux + 310) -+#define __NR_kexec_load (__NR_Linux + 311) -+#define __NR_getcpu (__NR_Linux + 312) -+#define __NR_epoll_pwait (__NR_Linux + 313) -+#define __NR_ioprio_set (__NR_Linux + 314) -+#define __NR_ioprio_get (__NR_Linux + 315) -+#define __NR_utimensat (__NR_Linux + 316) -+#define __NR_signalfd (__NR_Linux + 317) -+#define __NR_timerfd (__NR_Linux + 318) -+#define __NR_eventfd (__NR_Linux + 319) -+#define __NR_fallocate (__NR_Linux + 320) -+#define __NR_timerfd_create (__NR_Linux + 321) -+#define __NR_timerfd_gettime (__NR_Linux + 322) -+#define __NR_timerfd_settime (__NR_Linux + 323) -+#define __NR_signalfd4 (__NR_Linux + 324) -+#define __NR_eventfd2 (__NR_Linux + 325) -+#define __NR_epoll_create1 (__NR_Linux + 326) -+#define __NR_dup3 (__NR_Linux + 327) -+#define __NR_pipe2 (__NR_Linux + 328) -+#define __NR_inotify_init1 (__NR_Linux + 329) -+#define __NR_preadv (__NR_Linux + 330) -+#define __NR_pwritev (__NR_Linux + 331) -+#define __NR_rt_tgsigqueueinfo (__NR_Linux + 332) -+#define __NR_perf_event_open (__NR_Linux + 333) -+#define __NR_accept4 (__NR_Linux + 334) -+#define __NR_recvmmsg (__NR_Linux + 335) -+#define __NR_fanotify_init (__NR_Linux + 336) -+#define __NR_fanotify_mark (__NR_Linux + 337) -+#define __NR_prlimit64 (__NR_Linux + 338) -+#define __NR_name_to_handle_at (__NR_Linux + 339) -+#define __NR_open_by_handle_at (__NR_Linux + 340) -+#define __NR_clock_adjtime (__NR_Linux + 341) -+#define __NR_syncfs (__NR_Linux + 342) -+#define __NR_sendmmsg (__NR_Linux + 343) -+#define __NR_setns (__NR_Linux + 344) -+#define __NR_process_vm_readv (__NR_Linux + 345) -+#define __NR_process_vm_writev (__NR_Linux + 346) -+#define __NR_kcmp (__NR_Linux + 347) -+#define __NR_finit_module (__NR_Linux + 348) -+#define __NR_sched_setattr (__NR_Linux + 349) -+#define __NR_sched_getattr (__NR_Linux + 350) -+#define __NR_renameat2 (__NR_Linux + 351) -+#define __NR_seccomp (__NR_Linux + 352) -+#define __NR_getrandom (__NR_Linux + 353) -+#define __NR_memfd_create (__NR_Linux + 354) -+#define __NR_bpf (__NR_Linux + 355) -+#define __NR_execveat (__NR_Linux + 356) -+#define __NR_userfaultfd (__NR_Linux + 357) -+#define __NR_membarrier (__NR_Linux + 358) -+#define __NR_mlock2 (__NR_Linux + 359) -+#define __NR_copy_file_range (__NR_Linux + 360) -+#define __NR_preadv2 (__NR_Linux + 361) -+#define __NR_pwritev2 (__NR_Linux + 362) -+#define __NR_pkey_mprotect (__NR_Linux + 363) -+#define __NR_pkey_alloc (__NR_Linux + 364) -+#define __NR_pkey_free (__NR_Linux + 365) -+#define __NR_statx (__NR_Linux + 366) -+#define __NR_rseq (__NR_Linux + 367) -+#define __NR_io_pgetevents (__NR_Linux + 368) -+#define __NR_semget (__NR_Linux + 393) -+#define __NR_semctl (__NR_Linux + 394) -+#define __NR_shmget (__NR_Linux + 395) -+#define __NR_shmctl (__NR_Linux + 396) -+#define __NR_shmat (__NR_Linux + 397) -+#define __NR_shmdt (__NR_Linux + 398) -+#define __NR_msgget (__NR_Linux + 399) -+#define __NR_msgsnd (__NR_Linux + 400) -+#define __NR_msgrcv (__NR_Linux + 401) -+#define __NR_msgctl (__NR_Linux + 402) -+#define __NR_clock_gettime64 (__NR_Linux + 403) -+#define __NR_clock_settime64 (__NR_Linux + 404) -+#define __NR_clock_adjtime64 (__NR_Linux + 405) -+#define __NR_clock_getres_time64 (__NR_Linux + 406) -+#define __NR_clock_nanosleep_time64 (__NR_Linux + 407) -+#define __NR_timer_gettime64 (__NR_Linux + 408) -+#define __NR_timer_settime64 (__NR_Linux + 409) -+#define __NR_timerfd_gettime64 (__NR_Linux + 410) -+#define __NR_timerfd_settime64 (__NR_Linux + 411) -+#define __NR_utimensat_time64 (__NR_Linux + 412) -+#define __NR_pselect6_time64 (__NR_Linux + 413) -+#define __NR_ppoll_time64 (__NR_Linux + 414) -+#define __NR_io_pgetevents_time64 (__NR_Linux + 416) -+#define __NR_recvmmsg_time64 (__NR_Linux + 417) -+#define __NR_mq_timedsend_time64 (__NR_Linux + 418) -+#define __NR_mq_timedreceive_time64 (__NR_Linux + 419) -+#define __NR_semtimedop_time64 (__NR_Linux + 420) -+#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421) -+#define __NR_futex_time64 (__NR_Linux + 422) -+#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423) -+#define __NR_pidfd_send_signal (__NR_Linux + 424) -+#define __NR_io_uring_setup (__NR_Linux + 425) -+#define __NR_io_uring_enter (__NR_Linux + 426) -+#define __NR_io_uring_register (__NR_Linux + 427) -+#define __NR_open_tree (__NR_Linux + 428) -+#define __NR_move_mount (__NR_Linux + 429) -+#define __NR_fsopen (__NR_Linux + 430) -+#define __NR_fsconfig (__NR_Linux + 431) -+#define __NR_fsmount (__NR_Linux + 432) -+#define __NR_fspick (__NR_Linux + 433) -+#define __NR_pidfd_open (__NR_Linux + 434) -+#define __NR_clone3 (__NR_Linux + 435) -+#define __NR_close_range (__NR_Linux + 436) -+#define __NR_openat2 (__NR_Linux + 437) -+#define __NR_pidfd_getfd (__NR_Linux + 438) -+#define __NR_faccessat2 (__NR_Linux + 439) -+#define __NR_process_madvise (__NR_Linux + 440) -+#define __NR_epoll_pwait2 (__NR_Linux + 441) -+#define __NR_mount_setattr (__NR_Linux + 442) -+#define __NR_landlock_create_ruleset (__NR_Linux + 444) -+#define __NR_landlock_add_rule (__NR_Linux + 445) -+#define __NR_landlock_restrict_self (__NR_Linux + 446) - -- --#endif /* _ASM_MIPS_UNISTD_O32_H */ -+#endif /* _ASM_UNISTD_O32_H */ -diff --git a/linux-headers/asm-powerpc/kvm.h b/linux-headers/asm-powerpc/kvm.h -index c3af3f324c..9f18fa090f 100644 ---- a/linux-headers/asm-powerpc/kvm.h -+++ b/linux-headers/asm-powerpc/kvm.h -@@ -644,6 +644,8 @@ struct kvm_ppc_cpu_char { - #define KVM_REG_PPC_MMCR3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc1) - #define KVM_REG_PPC_SIER2 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc2) - #define KVM_REG_PPC_SIER3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc3) -+#define KVM_REG_PPC_DAWR1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc4) -+#define KVM_REG_PPC_DAWRX1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc5) - - /* Transactional Memory checkpointed state: - * This is all GPRs, all VSX regs and a subset of SPRs -diff --git a/linux-headers/asm-powerpc/unistd_32.h b/linux-headers/asm-powerpc/unistd_32.h -index 4624c90043..9155778c19 100644 ---- a/linux-headers/asm-powerpc/unistd_32.h -+++ b/linux-headers/asm-powerpc/unistd_32.h -@@ -1,429 +1,433 @@ --#ifndef _ASM_POWERPC_UNISTD_32_H --#define _ASM_POWERPC_UNISTD_32_H -+#ifndef _ASM_UNISTD_32_H -+#define _ASM_UNISTD_32_H - --#define __NR_restart_syscall 0 --#define __NR_exit 1 --#define __NR_fork 2 --#define __NR_read 3 --#define __NR_write 4 --#define __NR_open 5 --#define __NR_close 6 --#define __NR_waitpid 7 --#define __NR_creat 8 --#define __NR_link 9 --#define __NR_unlink 10 --#define __NR_execve 11 --#define __NR_chdir 12 --#define __NR_time 13 --#define __NR_mknod 14 --#define __NR_chmod 15 --#define __NR_lchown 16 --#define __NR_break 17 --#define __NR_oldstat 18 --#define __NR_lseek 19 --#define __NR_getpid 20 --#define __NR_mount 21 --#define __NR_umount 22 --#define __NR_setuid 23 --#define __NR_getuid 24 --#define __NR_stime 25 --#define __NR_ptrace 26 --#define __NR_alarm 27 --#define __NR_oldfstat 28 --#define __NR_pause 29 --#define __NR_utime 30 --#define __NR_stty 31 --#define __NR_gtty 32 --#define __NR_access 33 --#define __NR_nice 34 --#define __NR_ftime 35 --#define __NR_sync 36 --#define __NR_kill 37 --#define __NR_rename 38 --#define __NR_mkdir 39 --#define __NR_rmdir 40 --#define __NR_dup 41 --#define __NR_pipe 42 --#define __NR_times 43 --#define __NR_prof 44 --#define __NR_brk 45 --#define __NR_setgid 46 --#define __NR_getgid 47 --#define __NR_signal 48 --#define __NR_geteuid 49 --#define __NR_getegid 50 --#define __NR_acct 51 --#define __NR_umount2 52 --#define __NR_lock 53 --#define __NR_ioctl 54 --#define __NR_fcntl 55 --#define __NR_mpx 56 --#define __NR_setpgid 57 --#define __NR_ulimit 58 --#define __NR_oldolduname 59 --#define __NR_umask 60 --#define __NR_chroot 61 --#define __NR_ustat 62 --#define __NR_dup2 63 --#define __NR_getppid 64 --#define __NR_getpgrp 65 --#define __NR_setsid 66 --#define __NR_sigaction 67 --#define __NR_sgetmask 68 --#define __NR_ssetmask 69 --#define __NR_setreuid 70 --#define __NR_setregid 71 --#define __NR_sigsuspend 72 --#define __NR_sigpending 73 --#define __NR_sethostname 74 --#define __NR_setrlimit 75 --#define __NR_getrlimit 76 --#define __NR_getrusage 77 --#define __NR_gettimeofday 78 --#define __NR_settimeofday 79 --#define __NR_getgroups 80 --#define __NR_setgroups 81 --#define __NR_select 82 --#define __NR_symlink 83 --#define __NR_oldlstat 84 --#define __NR_readlink 85 --#define __NR_uselib 86 --#define __NR_swapon 87 --#define __NR_reboot 88 --#define __NR_readdir 89 --#define __NR_mmap 90 --#define __NR_munmap 91 --#define __NR_truncate 92 --#define __NR_ftruncate 93 --#define __NR_fchmod 94 --#define __NR_fchown 95 --#define __NR_getpriority 96 --#define __NR_setpriority 97 --#define __NR_profil 98 --#define __NR_statfs 99 --#define __NR_fstatfs 100 --#define __NR_ioperm 101 --#define __NR_socketcall 102 --#define __NR_syslog 103 --#define __NR_setitimer 104 --#define __NR_getitimer 105 --#define __NR_stat 106 --#define __NR_lstat 107 --#define __NR_fstat 108 --#define __NR_olduname 109 --#define __NR_iopl 110 --#define __NR_vhangup 111 --#define __NR_idle 112 --#define __NR_vm86 113 --#define __NR_wait4 114 --#define __NR_swapoff 115 --#define __NR_sysinfo 116 --#define __NR_ipc 117 --#define __NR_fsync 118 --#define __NR_sigreturn 119 --#define __NR_clone 120 --#define __NR_setdomainname 121 --#define __NR_uname 122 --#define __NR_modify_ldt 123 --#define __NR_adjtimex 124 --#define __NR_mprotect 125 --#define __NR_sigprocmask 126 --#define __NR_create_module 127 --#define __NR_init_module 128 --#define __NR_delete_module 129 --#define __NR_get_kernel_syms 130 --#define __NR_quotactl 131 --#define __NR_getpgid 132 --#define __NR_fchdir 133 --#define __NR_bdflush 134 --#define __NR_sysfs 135 --#define __NR_personality 136 --#define __NR_afs_syscall 137 --#define __NR_setfsuid 138 --#define __NR_setfsgid 139 --#define __NR__llseek 140 --#define __NR_getdents 141 --#define __NR__newselect 142 --#define __NR_flock 143 --#define __NR_msync 144 --#define __NR_readv 145 --#define __NR_writev 146 --#define __NR_getsid 147 --#define __NR_fdatasync 148 --#define __NR__sysctl 149 --#define __NR_mlock 150 --#define __NR_munlock 151 --#define __NR_mlockall 152 --#define __NR_munlockall 153 --#define __NR_sched_setparam 154 --#define __NR_sched_getparam 155 --#define __NR_sched_setscheduler 156 --#define __NR_sched_getscheduler 157 --#define __NR_sched_yield 158 --#define __NR_sched_get_priority_max 159 --#define __NR_sched_get_priority_min 160 --#define __NR_sched_rr_get_interval 161 --#define __NR_nanosleep 162 --#define __NR_mremap 163 --#define __NR_setresuid 164 --#define __NR_getresuid 165 --#define __NR_query_module 166 --#define __NR_poll 167 --#define __NR_nfsservctl 168 --#define __NR_setresgid 169 --#define __NR_getresgid 170 --#define __NR_prctl 171 --#define __NR_rt_sigreturn 172 --#define __NR_rt_sigaction 173 --#define __NR_rt_sigprocmask 174 --#define __NR_rt_sigpending 175 --#define __NR_rt_sigtimedwait 176 --#define __NR_rt_sigqueueinfo 177 --#define __NR_rt_sigsuspend 178 --#define __NR_pread64 179 --#define __NR_pwrite64 180 --#define __NR_chown 181 --#define __NR_getcwd 182 --#define __NR_capget 183 --#define __NR_capset 184 --#define __NR_sigaltstack 185 --#define __NR_sendfile 186 --#define __NR_getpmsg 187 --#define __NR_putpmsg 188 --#define __NR_vfork 189 --#define __NR_ugetrlimit 190 --#define __NR_readahead 191 --#define __NR_mmap2 192 --#define __NR_truncate64 193 --#define __NR_ftruncate64 194 --#define __NR_stat64 195 --#define __NR_lstat64 196 --#define __NR_fstat64 197 --#define __NR_pciconfig_read 198 --#define __NR_pciconfig_write 199 --#define __NR_pciconfig_iobase 200 --#define __NR_multiplexer 201 --#define __NR_getdents64 202 --#define __NR_pivot_root 203 --#define __NR_fcntl64 204 --#define __NR_madvise 205 --#define __NR_mincore 206 --#define __NR_gettid 207 --#define __NR_tkill 208 --#define __NR_setxattr 209 --#define __NR_lsetxattr 210 --#define __NR_fsetxattr 211 --#define __NR_getxattr 212 --#define __NR_lgetxattr 213 --#define __NR_fgetxattr 214 --#define __NR_listxattr 215 --#define __NR_llistxattr 216 --#define __NR_flistxattr 217 --#define __NR_removexattr 218 --#define __NR_lremovexattr 219 --#define __NR_fremovexattr 220 --#define __NR_futex 221 --#define __NR_sched_setaffinity 222 --#define __NR_sched_getaffinity 223 --#define __NR_tuxcall 225 --#define __NR_sendfile64 226 --#define __NR_io_setup 227 --#define __NR_io_destroy 228 --#define __NR_io_getevents 229 --#define __NR_io_submit 230 --#define __NR_io_cancel 231 --#define __NR_set_tid_address 232 --#define __NR_fadvise64 233 --#define __NR_exit_group 234 --#define __NR_lookup_dcookie 235 --#define __NR_epoll_create 236 --#define __NR_epoll_ctl 237 --#define __NR_epoll_wait 238 --#define __NR_remap_file_pages 239 --#define __NR_timer_create 240 --#define __NR_timer_settime 241 --#define __NR_timer_gettime 242 --#define __NR_timer_getoverrun 243 --#define __NR_timer_delete 244 --#define __NR_clock_settime 245 --#define __NR_clock_gettime 246 --#define __NR_clock_getres 247 --#define __NR_clock_nanosleep 248 --#define __NR_swapcontext 249 --#define __NR_tgkill 250 --#define __NR_utimes 251 --#define __NR_statfs64 252 --#define __NR_fstatfs64 253 --#define __NR_fadvise64_64 254 --#define __NR_rtas 255 --#define __NR_sys_debug_setcontext 256 --#define __NR_migrate_pages 258 --#define __NR_mbind 259 --#define __NR_get_mempolicy 260 --#define __NR_set_mempolicy 261 --#define __NR_mq_open 262 --#define __NR_mq_unlink 263 --#define __NR_mq_timedsend 264 --#define __NR_mq_timedreceive 265 --#define __NR_mq_notify 266 --#define __NR_mq_getsetattr 267 --#define __NR_kexec_load 268 --#define __NR_add_key 269 --#define __NR_request_key 270 --#define __NR_keyctl 271 --#define __NR_waitid 272 --#define __NR_ioprio_set 273 --#define __NR_ioprio_get 274 --#define __NR_inotify_init 275 --#define __NR_inotify_add_watch 276 --#define __NR_inotify_rm_watch 277 --#define __NR_spu_run 278 --#define __NR_spu_create 279 --#define __NR_pselect6 280 --#define __NR_ppoll 281 --#define __NR_unshare 282 --#define __NR_splice 283 --#define __NR_tee 284 --#define __NR_vmsplice 285 --#define __NR_openat 286 --#define __NR_mkdirat 287 --#define __NR_mknodat 288 --#define __NR_fchownat 289 --#define __NR_futimesat 290 --#define __NR_fstatat64 291 --#define __NR_unlinkat 292 --#define __NR_renameat 293 --#define __NR_linkat 294 --#define __NR_symlinkat 295 --#define __NR_readlinkat 296 --#define __NR_fchmodat 297 --#define __NR_faccessat 298 --#define __NR_get_robust_list 299 --#define __NR_set_robust_list 300 --#define __NR_move_pages 301 --#define __NR_getcpu 302 --#define __NR_epoll_pwait 303 --#define __NR_utimensat 304 --#define __NR_signalfd 305 --#define __NR_timerfd_create 306 --#define __NR_eventfd 307 --#define __NR_sync_file_range2 308 --#define __NR_fallocate 309 --#define __NR_subpage_prot 310 --#define __NR_timerfd_settime 311 --#define __NR_timerfd_gettime 312 --#define __NR_signalfd4 313 --#define __NR_eventfd2 314 --#define __NR_epoll_create1 315 --#define __NR_dup3 316 --#define __NR_pipe2 317 --#define __NR_inotify_init1 318 --#define __NR_perf_event_open 319 --#define __NR_preadv 320 --#define __NR_pwritev 321 --#define __NR_rt_tgsigqueueinfo 322 --#define __NR_fanotify_init 323 --#define __NR_fanotify_mark 324 --#define __NR_prlimit64 325 --#define __NR_socket 326 --#define __NR_bind 327 --#define __NR_connect 328 --#define __NR_listen 329 --#define __NR_accept 330 --#define __NR_getsockname 331 --#define __NR_getpeername 332 --#define __NR_socketpair 333 --#define __NR_send 334 --#define __NR_sendto 335 --#define __NR_recv 336 --#define __NR_recvfrom 337 --#define __NR_shutdown 338 --#define __NR_setsockopt 339 --#define __NR_getsockopt 340 --#define __NR_sendmsg 341 --#define __NR_recvmsg 342 --#define __NR_recvmmsg 343 --#define __NR_accept4 344 --#define __NR_name_to_handle_at 345 --#define __NR_open_by_handle_at 346 --#define __NR_clock_adjtime 347 --#define __NR_syncfs 348 --#define __NR_sendmmsg 349 --#define __NR_setns 350 --#define __NR_process_vm_readv 351 --#define __NR_process_vm_writev 352 --#define __NR_finit_module 353 --#define __NR_kcmp 354 --#define __NR_sched_setattr 355 --#define __NR_sched_getattr 356 --#define __NR_renameat2 357 --#define __NR_seccomp 358 --#define __NR_getrandom 359 --#define __NR_memfd_create 360 --#define __NR_bpf 361 --#define __NR_execveat 362 --#define __NR_switch_endian 363 --#define __NR_userfaultfd 364 --#define __NR_membarrier 365 --#define __NR_mlock2 378 --#define __NR_copy_file_range 379 --#define __NR_preadv2 380 --#define __NR_pwritev2 381 --#define __NR_kexec_file_load 382 --#define __NR_statx 383 --#define __NR_pkey_alloc 384 --#define __NR_pkey_free 385 --#define __NR_pkey_mprotect 386 --#define __NR_rseq 387 --#define __NR_io_pgetevents 388 --#define __NR_semget 393 --#define __NR_semctl 394 --#define __NR_shmget 395 --#define __NR_shmctl 396 --#define __NR_shmat 397 --#define __NR_shmdt 398 --#define __NR_msgget 399 --#define __NR_msgsnd 400 --#define __NR_msgrcv 401 --#define __NR_msgctl 402 --#define __NR_clock_gettime64 403 --#define __NR_clock_settime64 404 --#define __NR_clock_adjtime64 405 --#define __NR_clock_getres_time64 406 --#define __NR_clock_nanosleep_time64 407 --#define __NR_timer_gettime64 408 --#define __NR_timer_settime64 409 --#define __NR_timerfd_gettime64 410 --#define __NR_timerfd_settime64 411 --#define __NR_utimensat_time64 412 --#define __NR_pselect6_time64 413 --#define __NR_ppoll_time64 414 --#define __NR_io_pgetevents_time64 416 --#define __NR_recvmmsg_time64 417 --#define __NR_mq_timedsend_time64 418 --#define __NR_mq_timedreceive_time64 419 --#define __NR_semtimedop_time64 420 --#define __NR_rt_sigtimedwait_time64 421 --#define __NR_futex_time64 422 --#define __NR_sched_rr_get_interval_time64 423 --#define __NR_pidfd_send_signal 424 --#define __NR_io_uring_setup 425 --#define __NR_io_uring_enter 426 --#define __NR_io_uring_register 427 --#define __NR_open_tree 428 --#define __NR_move_mount 429 --#define __NR_fsopen 430 --#define __NR_fsconfig 431 --#define __NR_fsmount 432 --#define __NR_fspick 433 --#define __NR_pidfd_open 434 --#define __NR_clone3 435 --#define __NR_close_range 436 --#define __NR_openat2 437 --#define __NR_pidfd_getfd 438 --#define __NR_faccessat2 439 --#define __NR_process_madvise 440 --#define __NR_epoll_pwait2 441 -+#define __NR_restart_syscall 0 -+#define __NR_exit 1 -+#define __NR_fork 2 -+#define __NR_read 3 -+#define __NR_write 4 -+#define __NR_open 5 -+#define __NR_close 6 -+#define __NR_waitpid 7 -+#define __NR_creat 8 -+#define __NR_link 9 -+#define __NR_unlink 10 -+#define __NR_execve 11 -+#define __NR_chdir 12 -+#define __NR_time 13 -+#define __NR_mknod 14 -+#define __NR_chmod 15 -+#define __NR_lchown 16 -+#define __NR_break 17 -+#define __NR_oldstat 18 -+#define __NR_lseek 19 -+#define __NR_getpid 20 -+#define __NR_mount 21 -+#define __NR_umount 22 -+#define __NR_setuid 23 -+#define __NR_getuid 24 -+#define __NR_stime 25 -+#define __NR_ptrace 26 -+#define __NR_alarm 27 -+#define __NR_oldfstat 28 -+#define __NR_pause 29 -+#define __NR_utime 30 -+#define __NR_stty 31 -+#define __NR_gtty 32 -+#define __NR_access 33 -+#define __NR_nice 34 -+#define __NR_ftime 35 -+#define __NR_sync 36 -+#define __NR_kill 37 -+#define __NR_rename 38 -+#define __NR_mkdir 39 -+#define __NR_rmdir 40 -+#define __NR_dup 41 -+#define __NR_pipe 42 -+#define __NR_times 43 -+#define __NR_prof 44 -+#define __NR_brk 45 -+#define __NR_setgid 46 -+#define __NR_getgid 47 -+#define __NR_signal 48 -+#define __NR_geteuid 49 -+#define __NR_getegid 50 -+#define __NR_acct 51 -+#define __NR_umount2 52 -+#define __NR_lock 53 -+#define __NR_ioctl 54 -+#define __NR_fcntl 55 -+#define __NR_mpx 56 -+#define __NR_setpgid 57 -+#define __NR_ulimit 58 -+#define __NR_oldolduname 59 -+#define __NR_umask 60 -+#define __NR_chroot 61 -+#define __NR_ustat 62 -+#define __NR_dup2 63 -+#define __NR_getppid 64 -+#define __NR_getpgrp 65 -+#define __NR_setsid 66 -+#define __NR_sigaction 67 -+#define __NR_sgetmask 68 -+#define __NR_ssetmask 69 -+#define __NR_setreuid 70 -+#define __NR_setregid 71 -+#define __NR_sigsuspend 72 -+#define __NR_sigpending 73 -+#define __NR_sethostname 74 -+#define __NR_setrlimit 75 -+#define __NR_getrlimit 76 -+#define __NR_getrusage 77 -+#define __NR_gettimeofday 78 -+#define __NR_settimeofday 79 -+#define __NR_getgroups 80 -+#define __NR_setgroups 81 -+#define __NR_select 82 -+#define __NR_symlink 83 -+#define __NR_oldlstat 84 -+#define __NR_readlink 85 -+#define __NR_uselib 86 -+#define __NR_swapon 87 -+#define __NR_reboot 88 -+#define __NR_readdir 89 -+#define __NR_mmap 90 -+#define __NR_munmap 91 -+#define __NR_truncate 92 -+#define __NR_ftruncate 93 -+#define __NR_fchmod 94 -+#define __NR_fchown 95 -+#define __NR_getpriority 96 -+#define __NR_setpriority 97 -+#define __NR_profil 98 -+#define __NR_statfs 99 -+#define __NR_fstatfs 100 -+#define __NR_ioperm 101 -+#define __NR_socketcall 102 -+#define __NR_syslog 103 -+#define __NR_setitimer 104 -+#define __NR_getitimer 105 -+#define __NR_stat 106 -+#define __NR_lstat 107 -+#define __NR_fstat 108 -+#define __NR_olduname 109 -+#define __NR_iopl 110 -+#define __NR_vhangup 111 -+#define __NR_idle 112 -+#define __NR_vm86 113 -+#define __NR_wait4 114 -+#define __NR_swapoff 115 -+#define __NR_sysinfo 116 -+#define __NR_ipc 117 -+#define __NR_fsync 118 -+#define __NR_sigreturn 119 -+#define __NR_clone 120 -+#define __NR_setdomainname 121 -+#define __NR_uname 122 -+#define __NR_modify_ldt 123 -+#define __NR_adjtimex 124 -+#define __NR_mprotect 125 -+#define __NR_sigprocmask 126 -+#define __NR_create_module 127 -+#define __NR_init_module 128 -+#define __NR_delete_module 129 -+#define __NR_get_kernel_syms 130 -+#define __NR_quotactl 131 -+#define __NR_getpgid 132 -+#define __NR_fchdir 133 -+#define __NR_bdflush 134 -+#define __NR_sysfs 135 -+#define __NR_personality 136 -+#define __NR_afs_syscall 137 -+#define __NR_setfsuid 138 -+#define __NR_setfsgid 139 -+#define __NR__llseek 140 -+#define __NR_getdents 141 -+#define __NR__newselect 142 -+#define __NR_flock 143 -+#define __NR_msync 144 -+#define __NR_readv 145 -+#define __NR_writev 146 -+#define __NR_getsid 147 -+#define __NR_fdatasync 148 -+#define __NR__sysctl 149 -+#define __NR_mlock 150 -+#define __NR_munlock 151 -+#define __NR_mlockall 152 -+#define __NR_munlockall 153 -+#define __NR_sched_setparam 154 -+#define __NR_sched_getparam 155 -+#define __NR_sched_setscheduler 156 -+#define __NR_sched_getscheduler 157 -+#define __NR_sched_yield 158 -+#define __NR_sched_get_priority_max 159 -+#define __NR_sched_get_priority_min 160 -+#define __NR_sched_rr_get_interval 161 -+#define __NR_nanosleep 162 -+#define __NR_mremap 163 -+#define __NR_setresuid 164 -+#define __NR_getresuid 165 -+#define __NR_query_module 166 -+#define __NR_poll 167 -+#define __NR_nfsservctl 168 -+#define __NR_setresgid 169 -+#define __NR_getresgid 170 -+#define __NR_prctl 171 -+#define __NR_rt_sigreturn 172 -+#define __NR_rt_sigaction 173 -+#define __NR_rt_sigprocmask 174 -+#define __NR_rt_sigpending 175 -+#define __NR_rt_sigtimedwait 176 -+#define __NR_rt_sigqueueinfo 177 -+#define __NR_rt_sigsuspend 178 -+#define __NR_pread64 179 -+#define __NR_pwrite64 180 -+#define __NR_chown 181 -+#define __NR_getcwd 182 -+#define __NR_capget 183 -+#define __NR_capset 184 -+#define __NR_sigaltstack 185 -+#define __NR_sendfile 186 -+#define __NR_getpmsg 187 -+#define __NR_putpmsg 188 -+#define __NR_vfork 189 -+#define __NR_ugetrlimit 190 -+#define __NR_readahead 191 -+#define __NR_mmap2 192 -+#define __NR_truncate64 193 -+#define __NR_ftruncate64 194 -+#define __NR_stat64 195 -+#define __NR_lstat64 196 -+#define __NR_fstat64 197 -+#define __NR_pciconfig_read 198 -+#define __NR_pciconfig_write 199 -+#define __NR_pciconfig_iobase 200 -+#define __NR_multiplexer 201 -+#define __NR_getdents64 202 -+#define __NR_pivot_root 203 -+#define __NR_fcntl64 204 -+#define __NR_madvise 205 -+#define __NR_mincore 206 -+#define __NR_gettid 207 -+#define __NR_tkill 208 -+#define __NR_setxattr 209 -+#define __NR_lsetxattr 210 -+#define __NR_fsetxattr 211 -+#define __NR_getxattr 212 -+#define __NR_lgetxattr 213 -+#define __NR_fgetxattr 214 -+#define __NR_listxattr 215 -+#define __NR_llistxattr 216 -+#define __NR_flistxattr 217 -+#define __NR_removexattr 218 -+#define __NR_lremovexattr 219 -+#define __NR_fremovexattr 220 -+#define __NR_futex 221 -+#define __NR_sched_setaffinity 222 -+#define __NR_sched_getaffinity 223 -+#define __NR_tuxcall 225 -+#define __NR_sendfile64 226 -+#define __NR_io_setup 227 -+#define __NR_io_destroy 228 -+#define __NR_io_getevents 229 -+#define __NR_io_submit 230 -+#define __NR_io_cancel 231 -+#define __NR_set_tid_address 232 -+#define __NR_fadvise64 233 -+#define __NR_exit_group 234 -+#define __NR_lookup_dcookie 235 -+#define __NR_epoll_create 236 -+#define __NR_epoll_ctl 237 -+#define __NR_epoll_wait 238 -+#define __NR_remap_file_pages 239 -+#define __NR_timer_create 240 -+#define __NR_timer_settime 241 -+#define __NR_timer_gettime 242 -+#define __NR_timer_getoverrun 243 -+#define __NR_timer_delete 244 -+#define __NR_clock_settime 245 -+#define __NR_clock_gettime 246 -+#define __NR_clock_getres 247 -+#define __NR_clock_nanosleep 248 -+#define __NR_swapcontext 249 -+#define __NR_tgkill 250 -+#define __NR_utimes 251 -+#define __NR_statfs64 252 -+#define __NR_fstatfs64 253 -+#define __NR_fadvise64_64 254 -+#define __NR_rtas 255 -+#define __NR_sys_debug_setcontext 256 -+#define __NR_migrate_pages 258 -+#define __NR_mbind 259 -+#define __NR_get_mempolicy 260 -+#define __NR_set_mempolicy 261 -+#define __NR_mq_open 262 -+#define __NR_mq_unlink 263 -+#define __NR_mq_timedsend 264 -+#define __NR_mq_timedreceive 265 -+#define __NR_mq_notify 266 -+#define __NR_mq_getsetattr 267 -+#define __NR_kexec_load 268 -+#define __NR_add_key 269 -+#define __NR_request_key 270 -+#define __NR_keyctl 271 -+#define __NR_waitid 272 -+#define __NR_ioprio_set 273 -+#define __NR_ioprio_get 274 -+#define __NR_inotify_init 275 -+#define __NR_inotify_add_watch 276 -+#define __NR_inotify_rm_watch 277 -+#define __NR_spu_run 278 -+#define __NR_spu_create 279 -+#define __NR_pselect6 280 -+#define __NR_ppoll 281 -+#define __NR_unshare 282 -+#define __NR_splice 283 -+#define __NR_tee 284 -+#define __NR_vmsplice 285 -+#define __NR_openat 286 -+#define __NR_mkdirat 287 -+#define __NR_mknodat 288 -+#define __NR_fchownat 289 -+#define __NR_futimesat 290 -+#define __NR_fstatat64 291 -+#define __NR_unlinkat 292 -+#define __NR_renameat 293 -+#define __NR_linkat 294 -+#define __NR_symlinkat 295 -+#define __NR_readlinkat 296 -+#define __NR_fchmodat 297 -+#define __NR_faccessat 298 -+#define __NR_get_robust_list 299 -+#define __NR_set_robust_list 300 -+#define __NR_move_pages 301 -+#define __NR_getcpu 302 -+#define __NR_epoll_pwait 303 -+#define __NR_utimensat 304 -+#define __NR_signalfd 305 -+#define __NR_timerfd_create 306 -+#define __NR_eventfd 307 -+#define __NR_sync_file_range2 308 -+#define __NR_fallocate 309 -+#define __NR_subpage_prot 310 -+#define __NR_timerfd_settime 311 -+#define __NR_timerfd_gettime 312 -+#define __NR_signalfd4 313 -+#define __NR_eventfd2 314 -+#define __NR_epoll_create1 315 -+#define __NR_dup3 316 -+#define __NR_pipe2 317 -+#define __NR_inotify_init1 318 -+#define __NR_perf_event_open 319 -+#define __NR_preadv 320 -+#define __NR_pwritev 321 -+#define __NR_rt_tgsigqueueinfo 322 -+#define __NR_fanotify_init 323 -+#define __NR_fanotify_mark 324 -+#define __NR_prlimit64 325 -+#define __NR_socket 326 -+#define __NR_bind 327 -+#define __NR_connect 328 -+#define __NR_listen 329 -+#define __NR_accept 330 -+#define __NR_getsockname 331 -+#define __NR_getpeername 332 -+#define __NR_socketpair 333 -+#define __NR_send 334 -+#define __NR_sendto 335 -+#define __NR_recv 336 -+#define __NR_recvfrom 337 -+#define __NR_shutdown 338 -+#define __NR_setsockopt 339 -+#define __NR_getsockopt 340 -+#define __NR_sendmsg 341 -+#define __NR_recvmsg 342 -+#define __NR_recvmmsg 343 -+#define __NR_accept4 344 -+#define __NR_name_to_handle_at 345 -+#define __NR_open_by_handle_at 346 -+#define __NR_clock_adjtime 347 -+#define __NR_syncfs 348 -+#define __NR_sendmmsg 349 -+#define __NR_setns 350 -+#define __NR_process_vm_readv 351 -+#define __NR_process_vm_writev 352 -+#define __NR_finit_module 353 -+#define __NR_kcmp 354 -+#define __NR_sched_setattr 355 -+#define __NR_sched_getattr 356 -+#define __NR_renameat2 357 -+#define __NR_seccomp 358 -+#define __NR_getrandom 359 -+#define __NR_memfd_create 360 -+#define __NR_bpf 361 -+#define __NR_execveat 362 -+#define __NR_switch_endian 363 -+#define __NR_userfaultfd 364 -+#define __NR_membarrier 365 -+#define __NR_mlock2 378 -+#define __NR_copy_file_range 379 -+#define __NR_preadv2 380 -+#define __NR_pwritev2 381 -+#define __NR_kexec_file_load 382 -+#define __NR_statx 383 -+#define __NR_pkey_alloc 384 -+#define __NR_pkey_free 385 -+#define __NR_pkey_mprotect 386 -+#define __NR_rseq 387 -+#define __NR_io_pgetevents 388 -+#define __NR_semget 393 -+#define __NR_semctl 394 -+#define __NR_shmget 395 -+#define __NR_shmctl 396 -+#define __NR_shmat 397 -+#define __NR_shmdt 398 -+#define __NR_msgget 399 -+#define __NR_msgsnd 400 -+#define __NR_msgrcv 401 -+#define __NR_msgctl 402 -+#define __NR_clock_gettime64 403 -+#define __NR_clock_settime64 404 -+#define __NR_clock_adjtime64 405 -+#define __NR_clock_getres_time64 406 -+#define __NR_clock_nanosleep_time64 407 -+#define __NR_timer_gettime64 408 -+#define __NR_timer_settime64 409 -+#define __NR_timerfd_gettime64 410 -+#define __NR_timerfd_settime64 411 -+#define __NR_utimensat_time64 412 -+#define __NR_pselect6_time64 413 -+#define __NR_ppoll_time64 414 -+#define __NR_io_pgetevents_time64 416 -+#define __NR_recvmmsg_time64 417 -+#define __NR_mq_timedsend_time64 418 -+#define __NR_mq_timedreceive_time64 419 -+#define __NR_semtimedop_time64 420 -+#define __NR_rt_sigtimedwait_time64 421 -+#define __NR_futex_time64 422 -+#define __NR_sched_rr_get_interval_time64 423 -+#define __NR_pidfd_send_signal 424 -+#define __NR_io_uring_setup 425 -+#define __NR_io_uring_enter 426 -+#define __NR_io_uring_register 427 -+#define __NR_open_tree 428 -+#define __NR_move_mount 429 -+#define __NR_fsopen 430 -+#define __NR_fsconfig 431 -+#define __NR_fsmount 432 -+#define __NR_fspick 433 -+#define __NR_pidfd_open 434 -+#define __NR_clone3 435 -+#define __NR_close_range 436 -+#define __NR_openat2 437 -+#define __NR_pidfd_getfd 438 -+#define __NR_faccessat2 439 -+#define __NR_process_madvise 440 -+#define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - --#endif /* _ASM_POWERPC_UNISTD_32_H */ -+#endif /* _ASM_UNISTD_32_H */ -diff --git a/linux-headers/asm-powerpc/unistd_64.h b/linux-headers/asm-powerpc/unistd_64.h -index 7e851b30bb..3cefa88932 100644 ---- a/linux-headers/asm-powerpc/unistd_64.h -+++ b/linux-headers/asm-powerpc/unistd_64.h -@@ -1,401 +1,405 @@ --#ifndef _ASM_POWERPC_UNISTD_64_H --#define _ASM_POWERPC_UNISTD_64_H -+#ifndef _ASM_UNISTD_64_H -+#define _ASM_UNISTD_64_H - --#define __NR_restart_syscall 0 --#define __NR_exit 1 --#define __NR_fork 2 --#define __NR_read 3 --#define __NR_write 4 --#define __NR_open 5 --#define __NR_close 6 --#define __NR_waitpid 7 --#define __NR_creat 8 --#define __NR_link 9 --#define __NR_unlink 10 --#define __NR_execve 11 --#define __NR_chdir 12 --#define __NR_time 13 --#define __NR_mknod 14 --#define __NR_chmod 15 --#define __NR_lchown 16 --#define __NR_break 17 --#define __NR_oldstat 18 --#define __NR_lseek 19 --#define __NR_getpid 20 --#define __NR_mount 21 --#define __NR_umount 22 --#define __NR_setuid 23 --#define __NR_getuid 24 --#define __NR_stime 25 --#define __NR_ptrace 26 --#define __NR_alarm 27 --#define __NR_oldfstat 28 --#define __NR_pause 29 --#define __NR_utime 30 --#define __NR_stty 31 --#define __NR_gtty 32 --#define __NR_access 33 --#define __NR_nice 34 --#define __NR_ftime 35 --#define __NR_sync 36 --#define __NR_kill 37 --#define __NR_rename 38 --#define __NR_mkdir 39 --#define __NR_rmdir 40 --#define __NR_dup 41 --#define __NR_pipe 42 --#define __NR_times 43 --#define __NR_prof 44 --#define __NR_brk 45 --#define __NR_setgid 46 --#define __NR_getgid 47 --#define __NR_signal 48 --#define __NR_geteuid 49 --#define __NR_getegid 50 --#define __NR_acct 51 --#define __NR_umount2 52 --#define __NR_lock 53 --#define __NR_ioctl 54 --#define __NR_fcntl 55 --#define __NR_mpx 56 --#define __NR_setpgid 57 --#define __NR_ulimit 58 --#define __NR_oldolduname 59 --#define __NR_umask 60 --#define __NR_chroot 61 --#define __NR_ustat 62 --#define __NR_dup2 63 --#define __NR_getppid 64 --#define __NR_getpgrp 65 --#define __NR_setsid 66 --#define __NR_sigaction 67 --#define __NR_sgetmask 68 --#define __NR_ssetmask 69 --#define __NR_setreuid 70 --#define __NR_setregid 71 --#define __NR_sigsuspend 72 --#define __NR_sigpending 73 --#define __NR_sethostname 74 --#define __NR_setrlimit 75 --#define __NR_getrlimit 76 --#define __NR_getrusage 77 --#define __NR_gettimeofday 78 --#define __NR_settimeofday 79 --#define __NR_getgroups 80 --#define __NR_setgroups 81 --#define __NR_select 82 --#define __NR_symlink 83 --#define __NR_oldlstat 84 --#define __NR_readlink 85 --#define __NR_uselib 86 --#define __NR_swapon 87 --#define __NR_reboot 88 --#define __NR_readdir 89 --#define __NR_mmap 90 --#define __NR_munmap 91 --#define __NR_truncate 92 --#define __NR_ftruncate 93 --#define __NR_fchmod 94 --#define __NR_fchown 95 --#define __NR_getpriority 96 --#define __NR_setpriority 97 --#define __NR_profil 98 --#define __NR_statfs 99 --#define __NR_fstatfs 100 --#define __NR_ioperm 101 --#define __NR_socketcall 102 --#define __NR_syslog 103 --#define __NR_setitimer 104 --#define __NR_getitimer 105 --#define __NR_stat 106 --#define __NR_lstat 107 --#define __NR_fstat 108 --#define __NR_olduname 109 --#define __NR_iopl 110 --#define __NR_vhangup 111 --#define __NR_idle 112 --#define __NR_vm86 113 --#define __NR_wait4 114 --#define __NR_swapoff 115 --#define __NR_sysinfo 116 --#define __NR_ipc 117 --#define __NR_fsync 118 --#define __NR_sigreturn 119 --#define __NR_clone 120 --#define __NR_setdomainname 121 --#define __NR_uname 122 --#define __NR_modify_ldt 123 --#define __NR_adjtimex 124 --#define __NR_mprotect 125 --#define __NR_sigprocmask 126 --#define __NR_create_module 127 --#define __NR_init_module 128 --#define __NR_delete_module 129 --#define __NR_get_kernel_syms 130 --#define __NR_quotactl 131 --#define __NR_getpgid 132 --#define __NR_fchdir 133 --#define __NR_bdflush 134 --#define __NR_sysfs 135 --#define __NR_personality 136 --#define __NR_afs_syscall 137 --#define __NR_setfsuid 138 --#define __NR_setfsgid 139 --#define __NR__llseek 140 --#define __NR_getdents 141 --#define __NR__newselect 142 --#define __NR_flock 143 --#define __NR_msync 144 --#define __NR_readv 145 --#define __NR_writev 146 --#define __NR_getsid 147 --#define __NR_fdatasync 148 --#define __NR__sysctl 149 --#define __NR_mlock 150 --#define __NR_munlock 151 --#define __NR_mlockall 152 --#define __NR_munlockall 153 --#define __NR_sched_setparam 154 --#define __NR_sched_getparam 155 --#define __NR_sched_setscheduler 156 --#define __NR_sched_getscheduler 157 --#define __NR_sched_yield 158 --#define __NR_sched_get_priority_max 159 --#define __NR_sched_get_priority_min 160 --#define __NR_sched_rr_get_interval 161 --#define __NR_nanosleep 162 --#define __NR_mremap 163 --#define __NR_setresuid 164 --#define __NR_getresuid 165 --#define __NR_query_module 166 --#define __NR_poll 167 --#define __NR_nfsservctl 168 --#define __NR_setresgid 169 --#define __NR_getresgid 170 --#define __NR_prctl 171 --#define __NR_rt_sigreturn 172 --#define __NR_rt_sigaction 173 --#define __NR_rt_sigprocmask 174 --#define __NR_rt_sigpending 175 --#define __NR_rt_sigtimedwait 176 --#define __NR_rt_sigqueueinfo 177 --#define __NR_rt_sigsuspend 178 --#define __NR_pread64 179 --#define __NR_pwrite64 180 --#define __NR_chown 181 --#define __NR_getcwd 182 --#define __NR_capget 183 --#define __NR_capset 184 --#define __NR_sigaltstack 185 --#define __NR_sendfile 186 --#define __NR_getpmsg 187 --#define __NR_putpmsg 188 --#define __NR_vfork 189 --#define __NR_ugetrlimit 190 --#define __NR_readahead 191 --#define __NR_pciconfig_read 198 --#define __NR_pciconfig_write 199 --#define __NR_pciconfig_iobase 200 --#define __NR_multiplexer 201 --#define __NR_getdents64 202 --#define __NR_pivot_root 203 --#define __NR_madvise 205 --#define __NR_mincore 206 --#define __NR_gettid 207 --#define __NR_tkill 208 --#define __NR_setxattr 209 --#define __NR_lsetxattr 210 --#define __NR_fsetxattr 211 --#define __NR_getxattr 212 --#define __NR_lgetxattr 213 --#define __NR_fgetxattr 214 --#define __NR_listxattr 215 --#define __NR_llistxattr 216 --#define __NR_flistxattr 217 --#define __NR_removexattr 218 --#define __NR_lremovexattr 219 --#define __NR_fremovexattr 220 --#define __NR_futex 221 --#define __NR_sched_setaffinity 222 --#define __NR_sched_getaffinity 223 --#define __NR_tuxcall 225 --#define __NR_io_setup 227 --#define __NR_io_destroy 228 --#define __NR_io_getevents 229 --#define __NR_io_submit 230 --#define __NR_io_cancel 231 --#define __NR_set_tid_address 232 --#define __NR_fadvise64 233 --#define __NR_exit_group 234 --#define __NR_lookup_dcookie 235 --#define __NR_epoll_create 236 --#define __NR_epoll_ctl 237 --#define __NR_epoll_wait 238 --#define __NR_remap_file_pages 239 --#define __NR_timer_create 240 --#define __NR_timer_settime 241 --#define __NR_timer_gettime 242 --#define __NR_timer_getoverrun 243 --#define __NR_timer_delete 244 --#define __NR_clock_settime 245 --#define __NR_clock_gettime 246 --#define __NR_clock_getres 247 --#define __NR_clock_nanosleep 248 --#define __NR_swapcontext 249 --#define __NR_tgkill 250 --#define __NR_utimes 251 --#define __NR_statfs64 252 --#define __NR_fstatfs64 253 --#define __NR_rtas 255 --#define __NR_sys_debug_setcontext 256 --#define __NR_migrate_pages 258 --#define __NR_mbind 259 --#define __NR_get_mempolicy 260 --#define __NR_set_mempolicy 261 --#define __NR_mq_open 262 --#define __NR_mq_unlink 263 --#define __NR_mq_timedsend 264 --#define __NR_mq_timedreceive 265 --#define __NR_mq_notify 266 --#define __NR_mq_getsetattr 267 --#define __NR_kexec_load 268 --#define __NR_add_key 269 --#define __NR_request_key 270 --#define __NR_keyctl 271 --#define __NR_waitid 272 --#define __NR_ioprio_set 273 --#define __NR_ioprio_get 274 --#define __NR_inotify_init 275 --#define __NR_inotify_add_watch 276 --#define __NR_inotify_rm_watch 277 --#define __NR_spu_run 278 --#define __NR_spu_create 279 --#define __NR_pselect6 280 --#define __NR_ppoll 281 --#define __NR_unshare 282 --#define __NR_splice 283 --#define __NR_tee 284 --#define __NR_vmsplice 285 --#define __NR_openat 286 --#define __NR_mkdirat 287 --#define __NR_mknodat 288 --#define __NR_fchownat 289 --#define __NR_futimesat 290 --#define __NR_newfstatat 291 --#define __NR_unlinkat 292 --#define __NR_renameat 293 --#define __NR_linkat 294 --#define __NR_symlinkat 295 --#define __NR_readlinkat 296 --#define __NR_fchmodat 297 --#define __NR_faccessat 298 --#define __NR_get_robust_list 299 --#define __NR_set_robust_list 300 --#define __NR_move_pages 301 --#define __NR_getcpu 302 --#define __NR_epoll_pwait 303 --#define __NR_utimensat 304 --#define __NR_signalfd 305 --#define __NR_timerfd_create 306 --#define __NR_eventfd 307 --#define __NR_sync_file_range2 308 --#define __NR_fallocate 309 --#define __NR_subpage_prot 310 --#define __NR_timerfd_settime 311 --#define __NR_timerfd_gettime 312 --#define __NR_signalfd4 313 --#define __NR_eventfd2 314 --#define __NR_epoll_create1 315 --#define __NR_dup3 316 --#define __NR_pipe2 317 --#define __NR_inotify_init1 318 --#define __NR_perf_event_open 319 --#define __NR_preadv 320 --#define __NR_pwritev 321 --#define __NR_rt_tgsigqueueinfo 322 --#define __NR_fanotify_init 323 --#define __NR_fanotify_mark 324 --#define __NR_prlimit64 325 --#define __NR_socket 326 --#define __NR_bind 327 --#define __NR_connect 328 --#define __NR_listen 329 --#define __NR_accept 330 --#define __NR_getsockname 331 --#define __NR_getpeername 332 --#define __NR_socketpair 333 --#define __NR_send 334 --#define __NR_sendto 335 --#define __NR_recv 336 --#define __NR_recvfrom 337 --#define __NR_shutdown 338 --#define __NR_setsockopt 339 --#define __NR_getsockopt 340 --#define __NR_sendmsg 341 --#define __NR_recvmsg 342 --#define __NR_recvmmsg 343 --#define __NR_accept4 344 --#define __NR_name_to_handle_at 345 --#define __NR_open_by_handle_at 346 --#define __NR_clock_adjtime 347 --#define __NR_syncfs 348 --#define __NR_sendmmsg 349 --#define __NR_setns 350 --#define __NR_process_vm_readv 351 --#define __NR_process_vm_writev 352 --#define __NR_finit_module 353 --#define __NR_kcmp 354 --#define __NR_sched_setattr 355 --#define __NR_sched_getattr 356 --#define __NR_renameat2 357 --#define __NR_seccomp 358 --#define __NR_getrandom 359 --#define __NR_memfd_create 360 --#define __NR_bpf 361 --#define __NR_execveat 362 --#define __NR_switch_endian 363 --#define __NR_userfaultfd 364 --#define __NR_membarrier 365 --#define __NR_mlock2 378 --#define __NR_copy_file_range 379 --#define __NR_preadv2 380 --#define __NR_pwritev2 381 --#define __NR_kexec_file_load 382 --#define __NR_statx 383 --#define __NR_pkey_alloc 384 --#define __NR_pkey_free 385 --#define __NR_pkey_mprotect 386 --#define __NR_rseq 387 --#define __NR_io_pgetevents 388 --#define __NR_semtimedop 392 --#define __NR_semget 393 --#define __NR_semctl 394 --#define __NR_shmget 395 --#define __NR_shmctl 396 --#define __NR_shmat 397 --#define __NR_shmdt 398 --#define __NR_msgget 399 --#define __NR_msgsnd 400 --#define __NR_msgrcv 401 --#define __NR_msgctl 402 --#define __NR_pidfd_send_signal 424 --#define __NR_io_uring_setup 425 --#define __NR_io_uring_enter 426 --#define __NR_io_uring_register 427 --#define __NR_open_tree 428 --#define __NR_move_mount 429 --#define __NR_fsopen 430 --#define __NR_fsconfig 431 --#define __NR_fsmount 432 --#define __NR_fspick 433 --#define __NR_pidfd_open 434 --#define __NR_clone3 435 --#define __NR_close_range 436 --#define __NR_openat2 437 --#define __NR_pidfd_getfd 438 --#define __NR_faccessat2 439 --#define __NR_process_madvise 440 --#define __NR_epoll_pwait2 441 -+#define __NR_restart_syscall 0 -+#define __NR_exit 1 -+#define __NR_fork 2 -+#define __NR_read 3 -+#define __NR_write 4 -+#define __NR_open 5 -+#define __NR_close 6 -+#define __NR_waitpid 7 -+#define __NR_creat 8 -+#define __NR_link 9 -+#define __NR_unlink 10 -+#define __NR_execve 11 -+#define __NR_chdir 12 -+#define __NR_time 13 -+#define __NR_mknod 14 -+#define __NR_chmod 15 -+#define __NR_lchown 16 -+#define __NR_break 17 -+#define __NR_oldstat 18 -+#define __NR_lseek 19 -+#define __NR_getpid 20 -+#define __NR_mount 21 -+#define __NR_umount 22 -+#define __NR_setuid 23 -+#define __NR_getuid 24 -+#define __NR_stime 25 -+#define __NR_ptrace 26 -+#define __NR_alarm 27 -+#define __NR_oldfstat 28 -+#define __NR_pause 29 -+#define __NR_utime 30 -+#define __NR_stty 31 -+#define __NR_gtty 32 -+#define __NR_access 33 -+#define __NR_nice 34 -+#define __NR_ftime 35 -+#define __NR_sync 36 -+#define __NR_kill 37 -+#define __NR_rename 38 -+#define __NR_mkdir 39 -+#define __NR_rmdir 40 -+#define __NR_dup 41 -+#define __NR_pipe 42 -+#define __NR_times 43 -+#define __NR_prof 44 -+#define __NR_brk 45 -+#define __NR_setgid 46 -+#define __NR_getgid 47 -+#define __NR_signal 48 -+#define __NR_geteuid 49 -+#define __NR_getegid 50 -+#define __NR_acct 51 -+#define __NR_umount2 52 -+#define __NR_lock 53 -+#define __NR_ioctl 54 -+#define __NR_fcntl 55 -+#define __NR_mpx 56 -+#define __NR_setpgid 57 -+#define __NR_ulimit 58 -+#define __NR_oldolduname 59 -+#define __NR_umask 60 -+#define __NR_chroot 61 -+#define __NR_ustat 62 -+#define __NR_dup2 63 -+#define __NR_getppid 64 -+#define __NR_getpgrp 65 -+#define __NR_setsid 66 -+#define __NR_sigaction 67 -+#define __NR_sgetmask 68 -+#define __NR_ssetmask 69 -+#define __NR_setreuid 70 -+#define __NR_setregid 71 -+#define __NR_sigsuspend 72 -+#define __NR_sigpending 73 -+#define __NR_sethostname 74 -+#define __NR_setrlimit 75 -+#define __NR_getrlimit 76 -+#define __NR_getrusage 77 -+#define __NR_gettimeofday 78 -+#define __NR_settimeofday 79 -+#define __NR_getgroups 80 -+#define __NR_setgroups 81 -+#define __NR_select 82 -+#define __NR_symlink 83 -+#define __NR_oldlstat 84 -+#define __NR_readlink 85 -+#define __NR_uselib 86 -+#define __NR_swapon 87 -+#define __NR_reboot 88 -+#define __NR_readdir 89 -+#define __NR_mmap 90 -+#define __NR_munmap 91 -+#define __NR_truncate 92 -+#define __NR_ftruncate 93 -+#define __NR_fchmod 94 -+#define __NR_fchown 95 -+#define __NR_getpriority 96 -+#define __NR_setpriority 97 -+#define __NR_profil 98 -+#define __NR_statfs 99 -+#define __NR_fstatfs 100 -+#define __NR_ioperm 101 -+#define __NR_socketcall 102 -+#define __NR_syslog 103 -+#define __NR_setitimer 104 -+#define __NR_getitimer 105 -+#define __NR_stat 106 -+#define __NR_lstat 107 -+#define __NR_fstat 108 -+#define __NR_olduname 109 -+#define __NR_iopl 110 -+#define __NR_vhangup 111 -+#define __NR_idle 112 -+#define __NR_vm86 113 -+#define __NR_wait4 114 -+#define __NR_swapoff 115 -+#define __NR_sysinfo 116 -+#define __NR_ipc 117 -+#define __NR_fsync 118 -+#define __NR_sigreturn 119 -+#define __NR_clone 120 -+#define __NR_setdomainname 121 -+#define __NR_uname 122 -+#define __NR_modify_ldt 123 -+#define __NR_adjtimex 124 -+#define __NR_mprotect 125 -+#define __NR_sigprocmask 126 -+#define __NR_create_module 127 -+#define __NR_init_module 128 -+#define __NR_delete_module 129 -+#define __NR_get_kernel_syms 130 -+#define __NR_quotactl 131 -+#define __NR_getpgid 132 -+#define __NR_fchdir 133 -+#define __NR_bdflush 134 -+#define __NR_sysfs 135 -+#define __NR_personality 136 -+#define __NR_afs_syscall 137 -+#define __NR_setfsuid 138 -+#define __NR_setfsgid 139 -+#define __NR__llseek 140 -+#define __NR_getdents 141 -+#define __NR__newselect 142 -+#define __NR_flock 143 -+#define __NR_msync 144 -+#define __NR_readv 145 -+#define __NR_writev 146 -+#define __NR_getsid 147 -+#define __NR_fdatasync 148 -+#define __NR__sysctl 149 -+#define __NR_mlock 150 -+#define __NR_munlock 151 -+#define __NR_mlockall 152 -+#define __NR_munlockall 153 -+#define __NR_sched_setparam 154 -+#define __NR_sched_getparam 155 -+#define __NR_sched_setscheduler 156 -+#define __NR_sched_getscheduler 157 -+#define __NR_sched_yield 158 -+#define __NR_sched_get_priority_max 159 -+#define __NR_sched_get_priority_min 160 -+#define __NR_sched_rr_get_interval 161 -+#define __NR_nanosleep 162 -+#define __NR_mremap 163 -+#define __NR_setresuid 164 -+#define __NR_getresuid 165 -+#define __NR_query_module 166 -+#define __NR_poll 167 -+#define __NR_nfsservctl 168 -+#define __NR_setresgid 169 -+#define __NR_getresgid 170 -+#define __NR_prctl 171 -+#define __NR_rt_sigreturn 172 -+#define __NR_rt_sigaction 173 -+#define __NR_rt_sigprocmask 174 -+#define __NR_rt_sigpending 175 -+#define __NR_rt_sigtimedwait 176 -+#define __NR_rt_sigqueueinfo 177 -+#define __NR_rt_sigsuspend 178 -+#define __NR_pread64 179 -+#define __NR_pwrite64 180 -+#define __NR_chown 181 -+#define __NR_getcwd 182 -+#define __NR_capget 183 -+#define __NR_capset 184 -+#define __NR_sigaltstack 185 -+#define __NR_sendfile 186 -+#define __NR_getpmsg 187 -+#define __NR_putpmsg 188 -+#define __NR_vfork 189 -+#define __NR_ugetrlimit 190 -+#define __NR_readahead 191 -+#define __NR_pciconfig_read 198 -+#define __NR_pciconfig_write 199 -+#define __NR_pciconfig_iobase 200 -+#define __NR_multiplexer 201 -+#define __NR_getdents64 202 -+#define __NR_pivot_root 203 -+#define __NR_madvise 205 -+#define __NR_mincore 206 -+#define __NR_gettid 207 -+#define __NR_tkill 208 -+#define __NR_setxattr 209 -+#define __NR_lsetxattr 210 -+#define __NR_fsetxattr 211 -+#define __NR_getxattr 212 -+#define __NR_lgetxattr 213 -+#define __NR_fgetxattr 214 -+#define __NR_listxattr 215 -+#define __NR_llistxattr 216 -+#define __NR_flistxattr 217 -+#define __NR_removexattr 218 -+#define __NR_lremovexattr 219 -+#define __NR_fremovexattr 220 -+#define __NR_futex 221 -+#define __NR_sched_setaffinity 222 -+#define __NR_sched_getaffinity 223 -+#define __NR_tuxcall 225 -+#define __NR_io_setup 227 -+#define __NR_io_destroy 228 -+#define __NR_io_getevents 229 -+#define __NR_io_submit 230 -+#define __NR_io_cancel 231 -+#define __NR_set_tid_address 232 -+#define __NR_fadvise64 233 -+#define __NR_exit_group 234 -+#define __NR_lookup_dcookie 235 -+#define __NR_epoll_create 236 -+#define __NR_epoll_ctl 237 -+#define __NR_epoll_wait 238 -+#define __NR_remap_file_pages 239 -+#define __NR_timer_create 240 -+#define __NR_timer_settime 241 -+#define __NR_timer_gettime 242 -+#define __NR_timer_getoverrun 243 -+#define __NR_timer_delete 244 -+#define __NR_clock_settime 245 -+#define __NR_clock_gettime 246 -+#define __NR_clock_getres 247 -+#define __NR_clock_nanosleep 248 -+#define __NR_swapcontext 249 -+#define __NR_tgkill 250 -+#define __NR_utimes 251 -+#define __NR_statfs64 252 -+#define __NR_fstatfs64 253 -+#define __NR_rtas 255 -+#define __NR_sys_debug_setcontext 256 -+#define __NR_migrate_pages 258 -+#define __NR_mbind 259 -+#define __NR_get_mempolicy 260 -+#define __NR_set_mempolicy 261 -+#define __NR_mq_open 262 -+#define __NR_mq_unlink 263 -+#define __NR_mq_timedsend 264 -+#define __NR_mq_timedreceive 265 -+#define __NR_mq_notify 266 -+#define __NR_mq_getsetattr 267 -+#define __NR_kexec_load 268 -+#define __NR_add_key 269 -+#define __NR_request_key 270 -+#define __NR_keyctl 271 -+#define __NR_waitid 272 -+#define __NR_ioprio_set 273 -+#define __NR_ioprio_get 274 -+#define __NR_inotify_init 275 -+#define __NR_inotify_add_watch 276 -+#define __NR_inotify_rm_watch 277 -+#define __NR_spu_run 278 -+#define __NR_spu_create 279 -+#define __NR_pselect6 280 -+#define __NR_ppoll 281 -+#define __NR_unshare 282 -+#define __NR_splice 283 -+#define __NR_tee 284 -+#define __NR_vmsplice 285 -+#define __NR_openat 286 -+#define __NR_mkdirat 287 -+#define __NR_mknodat 288 -+#define __NR_fchownat 289 -+#define __NR_futimesat 290 -+#define __NR_newfstatat 291 -+#define __NR_unlinkat 292 -+#define __NR_renameat 293 -+#define __NR_linkat 294 -+#define __NR_symlinkat 295 -+#define __NR_readlinkat 296 -+#define __NR_fchmodat 297 -+#define __NR_faccessat 298 -+#define __NR_get_robust_list 299 -+#define __NR_set_robust_list 300 -+#define __NR_move_pages 301 -+#define __NR_getcpu 302 -+#define __NR_epoll_pwait 303 -+#define __NR_utimensat 304 -+#define __NR_signalfd 305 -+#define __NR_timerfd_create 306 -+#define __NR_eventfd 307 -+#define __NR_sync_file_range2 308 -+#define __NR_fallocate 309 -+#define __NR_subpage_prot 310 -+#define __NR_timerfd_settime 311 -+#define __NR_timerfd_gettime 312 -+#define __NR_signalfd4 313 -+#define __NR_eventfd2 314 -+#define __NR_epoll_create1 315 -+#define __NR_dup3 316 -+#define __NR_pipe2 317 -+#define __NR_inotify_init1 318 -+#define __NR_perf_event_open 319 -+#define __NR_preadv 320 -+#define __NR_pwritev 321 -+#define __NR_rt_tgsigqueueinfo 322 -+#define __NR_fanotify_init 323 -+#define __NR_fanotify_mark 324 -+#define __NR_prlimit64 325 -+#define __NR_socket 326 -+#define __NR_bind 327 -+#define __NR_connect 328 -+#define __NR_listen 329 -+#define __NR_accept 330 -+#define __NR_getsockname 331 -+#define __NR_getpeername 332 -+#define __NR_socketpair 333 -+#define __NR_send 334 -+#define __NR_sendto 335 -+#define __NR_recv 336 -+#define __NR_recvfrom 337 -+#define __NR_shutdown 338 -+#define __NR_setsockopt 339 -+#define __NR_getsockopt 340 -+#define __NR_sendmsg 341 -+#define __NR_recvmsg 342 -+#define __NR_recvmmsg 343 -+#define __NR_accept4 344 -+#define __NR_name_to_handle_at 345 -+#define __NR_open_by_handle_at 346 -+#define __NR_clock_adjtime 347 -+#define __NR_syncfs 348 -+#define __NR_sendmmsg 349 -+#define __NR_setns 350 -+#define __NR_process_vm_readv 351 -+#define __NR_process_vm_writev 352 -+#define __NR_finit_module 353 -+#define __NR_kcmp 354 -+#define __NR_sched_setattr 355 -+#define __NR_sched_getattr 356 -+#define __NR_renameat2 357 -+#define __NR_seccomp 358 -+#define __NR_getrandom 359 -+#define __NR_memfd_create 360 -+#define __NR_bpf 361 -+#define __NR_execveat 362 -+#define __NR_switch_endian 363 -+#define __NR_userfaultfd 364 -+#define __NR_membarrier 365 -+#define __NR_mlock2 378 -+#define __NR_copy_file_range 379 -+#define __NR_preadv2 380 -+#define __NR_pwritev2 381 -+#define __NR_kexec_file_load 382 -+#define __NR_statx 383 -+#define __NR_pkey_alloc 384 -+#define __NR_pkey_free 385 -+#define __NR_pkey_mprotect 386 -+#define __NR_rseq 387 -+#define __NR_io_pgetevents 388 -+#define __NR_semtimedop 392 -+#define __NR_semget 393 -+#define __NR_semctl 394 -+#define __NR_shmget 395 -+#define __NR_shmctl 396 -+#define __NR_shmat 397 -+#define __NR_shmdt 398 -+#define __NR_msgget 399 -+#define __NR_msgsnd 400 -+#define __NR_msgrcv 401 -+#define __NR_msgctl 402 -+#define __NR_pidfd_send_signal 424 -+#define __NR_io_uring_setup 425 -+#define __NR_io_uring_enter 426 -+#define __NR_io_uring_register 427 -+#define __NR_open_tree 428 -+#define __NR_move_mount 429 -+#define __NR_fsopen 430 -+#define __NR_fsconfig 431 -+#define __NR_fsmount 432 -+#define __NR_fspick 433 -+#define __NR_pidfd_open 434 -+#define __NR_clone3 435 -+#define __NR_close_range 436 -+#define __NR_openat2 437 -+#define __NR_pidfd_getfd 438 -+#define __NR_faccessat2 439 -+#define __NR_process_madvise 440 -+#define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - --#endif /* _ASM_POWERPC_UNISTD_64_H */ -+#endif /* _ASM_UNISTD_64_H */ -diff --git a/linux-headers/asm-s390/unistd_32.h b/linux-headers/asm-s390/unistd_32.h -index c94d2c3a22..e8cd34334f 100644 ---- a/linux-headers/asm-s390/unistd_32.h -+++ b/linux-headers/asm-s390/unistd_32.h -@@ -414,5 +414,9 @@ - #define __NR_faccessat2 439 - #define __NR_process_madvise 440 - #define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - #endif /* _ASM_S390_UNISTD_32_H */ -diff --git a/linux-headers/asm-s390/unistd_64.h b/linux-headers/asm-s390/unistd_64.h -index 984a06b7eb..86830e1e83 100644 ---- a/linux-headers/asm-s390/unistd_64.h -+++ b/linux-headers/asm-s390/unistd_64.h -@@ -362,5 +362,9 @@ - #define __NR_faccessat2 439 - #define __NR_process_madvise 440 - #define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - #endif /* _ASM_S390_UNISTD_64_H */ -diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h -index 8e76d3701d..0662f644aa 100644 ---- a/linux-headers/asm-x86/kvm.h -+++ b/linux-headers/asm-x86/kvm.h -@@ -112,6 +112,7 @@ struct kvm_ioapic_state { - #define KVM_NR_IRQCHIPS 3 - - #define KVM_RUN_X86_SMM (1 << 0) -+#define KVM_RUN_X86_BUS_LOCK (1 << 1) - - /* for KVM_GET_REGS and KVM_SET_REGS */ - struct kvm_regs { -@@ -436,6 +437,8 @@ struct kvm_vmx_nested_state_hdr { - __u16 flags; - } smm; - -+ __u16 pad; -+ - __u32 flags; - __u64 preemption_timer_deadline; - }; -diff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h -index 18fb99dfa2..8f6ac8c19f 100644 ---- a/linux-headers/asm-x86/unistd_32.h -+++ b/linux-headers/asm-x86/unistd_32.h -@@ -432,6 +432,10 @@ - #define __NR_faccessat2 439 - #define __NR_process_madvise 440 - #define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - - #endif /* _ASM_X86_UNISTD_32_H */ -diff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h -index bde959328d..bb187a9268 100644 ---- a/linux-headers/asm-x86/unistd_64.h -+++ b/linux-headers/asm-x86/unistd_64.h -@@ -354,6 +354,10 @@ - #define __NR_faccessat2 439 - #define __NR_process_madvise 440 - #define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 - - - #endif /* _ASM_X86_UNISTD_64_H */ -diff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h -index 4ff6b17d3b..4edd0103ac 100644 ---- a/linux-headers/asm-x86/unistd_x32.h -+++ b/linux-headers/asm-x86/unistd_x32.h -@@ -307,6 +307,10 @@ - #define __NR_faccessat2 (__X32_SYSCALL_BIT + 439) - #define __NR_process_madvise (__X32_SYSCALL_BIT + 440) - #define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441) -+#define __NR_mount_setattr (__X32_SYSCALL_BIT + 442) -+#define __NR_landlock_create_ruleset (__X32_SYSCALL_BIT + 444) -+#define __NR_landlock_add_rule (__X32_SYSCALL_BIT + 445) -+#define __NR_landlock_restrict_self (__X32_SYSCALL_BIT + 446) - #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) - #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) - #define __NR_ioctl (__X32_SYSCALL_BIT + 514) -diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h -index 897f831374..20d6a263bb 100644 ---- a/linux-headers/linux/kvm.h -+++ b/linux-headers/linux/kvm.h -@@ -8,6 +8,7 @@ - * Note: you must update KVM_API_VERSION if you change this interface. - */ - -+#include - #include - - #include -@@ -216,6 +217,20 @@ struct kvm_hyperv_exit { - } u; - }; - -+struct kvm_xen_exit { -+#define KVM_EXIT_XEN_HCALL 1 -+ __u32 type; -+ union { -+ struct { -+ __u32 longmode; -+ __u32 cpl; -+ __u64 input; -+ __u64 result; -+ __u64 params[6]; -+ } hcall; -+ } u; -+}; -+ - #define KVM_S390_GET_SKEYS_NONE 1 - #define KVM_S390_SKEYS_MAX 1048576 - -@@ -251,6 +266,9 @@ struct kvm_hyperv_exit { - #define KVM_EXIT_X86_RDMSR 29 - #define KVM_EXIT_X86_WRMSR 30 - #define KVM_EXIT_DIRTY_RING_FULL 31 -+#define KVM_EXIT_AP_RESET_HOLD 32 -+#define KVM_EXIT_X86_BUS_LOCK 33 -+#define KVM_EXIT_XEN 34 - - /* For KVM_EXIT_INTERNAL_ERROR */ - /* Emulate instruction failed. */ -@@ -427,6 +445,8 @@ struct kvm_run { - __u32 index; /* kernel -> user */ - __u64 data; /* kernel <-> user */ - } msr; -+ /* KVM_EXIT_XEN */ -+ struct kvm_xen_exit xen; - /* Fix the size of the union. */ - char padding[256]; - }; -@@ -573,6 +593,7 @@ struct kvm_vapic_addr { - #define KVM_MP_STATE_CHECK_STOP 6 - #define KVM_MP_STATE_OPERATING 7 - #define KVM_MP_STATE_LOAD 8 -+#define KVM_MP_STATE_AP_RESET_HOLD 9 - - struct kvm_mp_state { - __u32 mp_state; -@@ -1056,6 +1077,12 @@ struct kvm_ppc_resize_hpt { - #define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190 - #define KVM_CAP_SYS_HYPERV_CPUID 191 - #define KVM_CAP_DIRTY_LOG_RING 192 -+#define KVM_CAP_X86_BUS_LOCK_EXIT 193 -+#define KVM_CAP_PPC_DAWR1 194 -+#define KVM_CAP_SET_GUEST_DEBUG2 195 -+#define KVM_CAP_SGX_ATTRIBUTE 196 -+#define KVM_CAP_VM_COPY_ENC_CONTEXT_FROM 197 -+#define KVM_CAP_PTP_KVM 198 - - #ifdef KVM_CAP_IRQ_ROUTING - -@@ -1129,6 +1156,11 @@ struct kvm_x86_mce { - #endif - - #ifdef KVM_CAP_XEN_HVM -+#define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0) -+#define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1) -+#define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) -+#define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) -+ - struct kvm_xen_hvm_config { - __u32 flags; - __u32 msr; -@@ -1563,6 +1595,57 @@ struct kvm_pv_cmd { - /* Available with KVM_CAP_DIRTY_LOG_RING */ - #define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7) - -+/* Per-VM Xen attributes */ -+#define KVM_XEN_HVM_GET_ATTR _IOWR(KVMIO, 0xc8, struct kvm_xen_hvm_attr) -+#define KVM_XEN_HVM_SET_ATTR _IOW(KVMIO, 0xc9, struct kvm_xen_hvm_attr) -+ -+struct kvm_xen_hvm_attr { -+ __u16 type; -+ __u16 pad[3]; -+ union { -+ __u8 long_mode; -+ __u8 vector; -+ struct { -+ __u64 gfn; -+ } shared_info; -+ __u64 pad[8]; -+ } u; -+}; -+ -+/* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ -+#define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 -+#define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 -+#define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 -+ -+/* Per-vCPU Xen attributes */ -+#define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) -+#define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr) -+ -+struct kvm_xen_vcpu_attr { -+ __u16 type; -+ __u16 pad[3]; -+ union { -+ __u64 gpa; -+ __u64 pad[8]; -+ struct { -+ __u64 state; -+ __u64 state_entry_time; -+ __u64 time_running; -+ __u64 time_runnable; -+ __u64 time_blocked; -+ __u64 time_offline; -+ } runstate; -+ } u; -+}; -+ -+/* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ -+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0 -+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1 -+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR 0x2 -+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 -+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 -+#define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5 -+ - /* Secure Encrypted Virtualization command */ - enum sev_cmd_id { - /* Guest initialization commands */ -@@ -1593,6 +1676,8 @@ enum sev_cmd_id { - KVM_SEV_CERT_EXPORT, - /* Attestation report */ - KVM_SEV_GET_ATTESTATION_REPORT, -+ /* Guest Migration Extension */ -+ KVM_SEV_SEND_CANCEL, - - KVM_SEV_NR_MAX, - }; -@@ -1651,6 +1736,45 @@ struct kvm_sev_attestation_report { - __u32 len; - }; - -+struct kvm_sev_send_start { -+ __u32 policy; -+ __u64 pdh_cert_uaddr; -+ __u32 pdh_cert_len; -+ __u64 plat_certs_uaddr; -+ __u32 plat_certs_len; -+ __u64 amd_certs_uaddr; -+ __u32 amd_certs_len; -+ __u64 session_uaddr; -+ __u32 session_len; -+}; -+ -+struct kvm_sev_send_update_data { -+ __u64 hdr_uaddr; -+ __u32 hdr_len; -+ __u64 guest_uaddr; -+ __u32 guest_len; -+ __u64 trans_uaddr; -+ __u32 trans_len; -+}; -+ -+struct kvm_sev_receive_start { -+ __u32 handle; -+ __u32 policy; -+ __u64 pdh_uaddr; -+ __u32 pdh_len; -+ __u64 session_uaddr; -+ __u32 session_len; -+}; -+ -+struct kvm_sev_receive_update_data { -+ __u64 hdr_uaddr; -+ __u32 hdr_len; -+ __u64 guest_uaddr; -+ __u32 guest_len; -+ __u64 trans_uaddr; -+ __u32 trans_len; -+}; -+ - #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) - #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) - #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) -@@ -1756,8 +1880,8 @@ struct kvm_hyperv_eventfd { - * conversion after harvesting an entry. Also, it must not skip any - * dirty bits, so that dirty bits are always harvested in sequence. - */ --#define KVM_DIRTY_GFN_F_DIRTY BIT(0) --#define KVM_DIRTY_GFN_F_RESET BIT(1) -+#define KVM_DIRTY_GFN_F_DIRTY _BITUL(0) -+#define KVM_DIRTY_GFN_F_RESET _BITUL(1) - #define KVM_DIRTY_GFN_F_MASK 0x3 - - /* -@@ -1772,4 +1896,7 @@ struct kvm_dirty_gfn { - __u64 offset; - }; - -+#define KVM_BUS_LOCK_DETECTION_OFF (1 << 0) -+#define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1) -+ - #endif /* __LINUX_KVM_H */ -diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfaultfd.h -index 1ba9a9feeb..b9ac97b70f 100644 ---- a/linux-headers/linux/userfaultfd.h -+++ b/linux-headers/linux/userfaultfd.h -@@ -19,15 +19,19 @@ - * means the userland is reading). - */ - #define UFFD_API ((__u64)0xAA) -+#define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | \ -+ UFFDIO_REGISTER_MODE_WP | \ -+ UFFDIO_REGISTER_MODE_MINOR) - #define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | \ - UFFD_FEATURE_EVENT_FORK | \ - UFFD_FEATURE_EVENT_REMAP | \ -- UFFD_FEATURE_EVENT_REMOVE | \ -+ UFFD_FEATURE_EVENT_REMOVE | \ - UFFD_FEATURE_EVENT_UNMAP | \ - UFFD_FEATURE_MISSING_HUGETLBFS | \ - UFFD_FEATURE_MISSING_SHMEM | \ - UFFD_FEATURE_SIGBUS | \ -- UFFD_FEATURE_THREAD_ID) -+ UFFD_FEATURE_THREAD_ID | \ -+ UFFD_FEATURE_MINOR_HUGETLBFS) - #define UFFD_API_IOCTLS \ - ((__u64)1 << _UFFDIO_REGISTER | \ - (__u64)1 << _UFFDIO_UNREGISTER | \ -@@ -36,10 +40,12 @@ - ((__u64)1 << _UFFDIO_WAKE | \ - (__u64)1 << _UFFDIO_COPY | \ - (__u64)1 << _UFFDIO_ZEROPAGE | \ -- (__u64)1 << _UFFDIO_WRITEPROTECT) -+ (__u64)1 << _UFFDIO_WRITEPROTECT | \ -+ (__u64)1 << _UFFDIO_CONTINUE) - #define UFFD_API_RANGE_IOCTLS_BASIC \ - ((__u64)1 << _UFFDIO_WAKE | \ -- (__u64)1 << _UFFDIO_COPY) -+ (__u64)1 << _UFFDIO_COPY | \ -+ (__u64)1 << _UFFDIO_CONTINUE) - - /* - * Valid ioctl command number range with this API is from 0x00 to -@@ -55,6 +61,7 @@ - #define _UFFDIO_COPY (0x03) - #define _UFFDIO_ZEROPAGE (0x04) - #define _UFFDIO_WRITEPROTECT (0x06) -+#define _UFFDIO_CONTINUE (0x07) - #define _UFFDIO_API (0x3F) - - /* userfaultfd ioctl ids */ -@@ -73,6 +80,8 @@ - struct uffdio_zeropage) - #define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \ - struct uffdio_writeprotect) -+#define UFFDIO_CONTINUE _IOR(UFFDIO, _UFFDIO_CONTINUE, \ -+ struct uffdio_continue) - - /* read() structure */ - struct uffd_msg { -@@ -127,6 +136,7 @@ struct uffd_msg { - /* flags for UFFD_EVENT_PAGEFAULT */ - #define UFFD_PAGEFAULT_FLAG_WRITE (1<<0) /* If this was a write fault */ - #define UFFD_PAGEFAULT_FLAG_WP (1<<1) /* If reason is VM_UFFD_WP */ -+#define UFFD_PAGEFAULT_FLAG_MINOR (1<<2) /* If reason is VM_UFFD_MINOR */ - - struct uffdio_api { - /* userland asks for an API number and the features to enable */ -@@ -171,6 +181,10 @@ struct uffdio_api { - * - * UFFD_FEATURE_THREAD_ID pid of the page faulted task_struct will - * be returned, if feature is not requested 0 will be returned. -+ * -+ * UFFD_FEATURE_MINOR_HUGETLBFS indicates that minor faults -+ * can be intercepted (via REGISTER_MODE_MINOR) for -+ * hugetlbfs-backed pages. - */ - #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0) - #define UFFD_FEATURE_EVENT_FORK (1<<1) -@@ -181,6 +195,7 @@ struct uffdio_api { - #define UFFD_FEATURE_EVENT_UNMAP (1<<6) - #define UFFD_FEATURE_SIGBUS (1<<7) - #define UFFD_FEATURE_THREAD_ID (1<<8) -+#define UFFD_FEATURE_MINOR_HUGETLBFS (1<<9) - __u64 features; - - __u64 ioctls; -@@ -195,6 +210,7 @@ struct uffdio_register { - struct uffdio_range range; - #define UFFDIO_REGISTER_MODE_MISSING ((__u64)1<<0) - #define UFFDIO_REGISTER_MODE_WP ((__u64)1<<1) -+#define UFFDIO_REGISTER_MODE_MINOR ((__u64)1<<2) - __u64 mode; - - /* -@@ -257,6 +273,18 @@ struct uffdio_writeprotect { - __u64 mode; - }; - -+struct uffdio_continue { -+ struct uffdio_range range; -+#define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64)1<<0) -+ __u64 mode; -+ -+ /* -+ * Fields below here are written by the ioctl and must be at the end: -+ * the copy_from_user will not read past here. -+ */ -+ __s64 mapped; -+}; -+ - /* - * Flags for the userfaultfd(2) system call itself. - */ -diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h -index 609099e455..e680594f27 100644 ---- a/linux-headers/linux/vfio.h -+++ b/linux-headers/linux/vfio.h -@@ -46,6 +46,12 @@ - */ - #define VFIO_NOIOMMU_IOMMU 8 - -+/* Supports VFIO_DMA_UNMAP_FLAG_ALL */ -+#define VFIO_UNMAP_ALL 9 -+ -+/* Supports the vaddr flag for DMA map and unmap */ -+#define VFIO_UPDATE_VADDR 10 -+ - /* - * The IOCTL interface is designed for extensibility by embedding the - * structure length (argsz) and flags into structures passed between -@@ -329,6 +335,8 @@ struct vfio_region_info_cap_type { - /* 10de vendor PCI sub-types */ - /* - * NVIDIA GPU NVlink2 RAM is coherent RAM mapped onto the host address space. -+ * -+ * Deprecated, region no longer provided - */ - #define VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM (1) - -@@ -336,6 +344,8 @@ struct vfio_region_info_cap_type { - /* - * IBM NPU NVlink2 ATSD (Address Translation Shootdown) register of NPU - * to do TLB invalidation on a GPU. -+ * -+ * Deprecated, region no longer provided - */ - #define VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD (1) - -@@ -635,6 +645,8 @@ struct vfio_device_migration_info { - * Capability with compressed real address (aka SSA - small system address) - * where GPU RAM is mapped on a system bus. Used by a GPU for DMA routing - * and by the userspace to associate a NVLink bridge with a GPU. -+ * -+ * Deprecated, capability no longer provided - */ - #define VFIO_REGION_INFO_CAP_NVLINK2_SSATGT 4 - -@@ -649,6 +661,8 @@ struct vfio_region_info_cap_nvlink2_ssatgt { - * property in the device tree. The value is fixed in the hardware - * and failing to provide the correct value results in the link - * not working with no indication from the driver why. -+ * -+ * Deprecated, capability no longer provided - */ - #define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5 - -@@ -1074,12 +1088,22 @@ struct vfio_iommu_type1_info_dma_avail { - * - * Map process virtual addresses to IO virtual addresses using the - * provided struct vfio_dma_map. Caller sets argsz. READ &/ WRITE required. -+ * -+ * If flags & VFIO_DMA_MAP_FLAG_VADDR, update the base vaddr for iova, and -+ * unblock translation of host virtual addresses in the iova range. The vaddr -+ * must have previously been invalidated with VFIO_DMA_UNMAP_FLAG_VADDR. To -+ * maintain memory consistency within the user application, the updated vaddr -+ * must address the same memory object as originally mapped. Failure to do so -+ * will result in user memory corruption and/or device misbehavior. iova and -+ * size must match those in the original MAP_DMA call. Protection is not -+ * changed, and the READ & WRITE flags must be 0. - */ - struct vfio_iommu_type1_dma_map { - __u32 argsz; - __u32 flags; - #define VFIO_DMA_MAP_FLAG_READ (1 << 0) /* readable from device */ - #define VFIO_DMA_MAP_FLAG_WRITE (1 << 1) /* writable from device */ -+#define VFIO_DMA_MAP_FLAG_VADDR (1 << 2) - __u64 vaddr; /* Process virtual address */ - __u64 iova; /* IO virtual address */ - __u64 size; /* Size of mapping (bytes) */ -@@ -1102,6 +1126,7 @@ struct vfio_bitmap { - * field. No guarantee is made to the user that arbitrary unmaps of iova - * or size different from those used in the original mapping call will - * succeed. -+ * - * VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP should be set to get the dirty bitmap - * before unmapping IO virtual addresses. When this flag is set, the user must - * provide a struct vfio_bitmap in data[]. User must provide zero-allocated -@@ -1111,11 +1136,21 @@ struct vfio_bitmap { - * indicates that the page at that offset from iova is dirty. A Bitmap of the - * pages in the range of unmapped size is returned in the user-provided - * vfio_bitmap.data. -+ * -+ * If flags & VFIO_DMA_UNMAP_FLAG_ALL, unmap all addresses. iova and size -+ * must be 0. This cannot be combined with the get-dirty-bitmap flag. -+ * -+ * If flags & VFIO_DMA_UNMAP_FLAG_VADDR, do not unmap, but invalidate host -+ * virtual addresses in the iova range. Tasks that attempt to translate an -+ * iova's vaddr will block. DMA to already-mapped pages continues. This -+ * cannot be combined with the get-dirty-bitmap flag. - */ - struct vfio_iommu_type1_dma_unmap { - __u32 argsz; - __u32 flags; - #define VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP (1 << 0) -+#define VFIO_DMA_UNMAP_FLAG_ALL (1 << 1) -+#define VFIO_DMA_UNMAP_FLAG_VADDR (1 << 2) - __u64 iova; /* IO virtual address */ - __u64 size; /* Size of mapping (bytes) */ - __u8 data[]; --- -2.27.0 - diff --git a/SOURCES/kvm-aarch64-Add-USB-storage-devices.patch b/SOURCES/kvm-aarch64-Add-USB-storage-devices.patch deleted file mode 100644 index 4059db2..0000000 --- a/SOURCES/kvm-aarch64-Add-USB-storage-devices.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7fd7892a21cf930f3d44dc3205bed9fb9128c11c Mon Sep 17 00:00:00 2001 -From: Andrew Jones -Date: Wed, 4 Aug 2021 07:10:15 -0400 -Subject: [PATCH 23/39] aarch64: Add USB storage devices - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [15/15] 7706801381d8dfc97231fa87f6a7c8de7e3c8e84 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -There's no reason not to support these devices and doing so allows us -to match x86 and ppc. Also to match the other architectures we do not -enable CONFIG_USB_STORAGE_BOT, as that was disabled for the other -architectures for BZ1866133. - -Signed-off-by: Andrew Jones -Signed-off-by: Miroslav Rezanina ---- - default-configs/devices/aarch64-rh-devices.mak | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/default-configs/devices/aarch64-rh-devices.mak b/default-configs/devices/aarch64-rh-devices.mak -index d8ce902720..a5bab23925 100644 ---- a/default-configs/devices/aarch64-rh-devices.mak -+++ b/default-configs/devices/aarch64-rh-devices.mak -@@ -15,6 +15,8 @@ CONFIG_SEMIHOSTING=y - CONFIG_USB=y - CONFIG_USB_XHCI=y - CONFIG_USB_XHCI_PCI=y -+CONFIG_USB_STORAGE_CORE=y -+CONFIG_USB_STORAGE_CLASSIC=y - CONFIG_VFIO=y - CONFIG_VFIO_PCI=y - CONFIG_VIRTIO_MMIO=y --- -2.27.0 - diff --git a/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PVPANIC_PCI.patch b/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PVPANIC_PCI.patch deleted file mode 100644 index 800b567..0000000 --- a/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PVPANIC_PCI.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 5cc3aacc241c0d26f63d51efd1b6fa35490d37c9 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Wed, 26 May 2021 10:33:20 -0400 -Subject: [PATCH 03/15] aarch64-rh-devices: add CONFIG_PVPANIC_PCI -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Eric Auger -RH-MergeRequest: 2: aarch64-rh-devices: add CONFIG_PVPANIC_PCI -RH-Commit: [1/1] f3d0a94a91ea1b3fff925f32affce1b77469e206 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1747467 -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones - -We want to enable the PVPANIC facility on ARM. On aarch64, -the PVPANIC PCI device is used (on x86_64 the ISA device is used). -so let's set the PVPANIC_PCI config. - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - default-configs/devices/aarch64-rh-devices.mak | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/default-configs/devices/aarch64-rh-devices.mak b/default-configs/devices/aarch64-rh-devices.mak -index a4d67274c0..4220469178 100644 ---- a/default-configs/devices/aarch64-rh-devices.mak -+++ b/default-configs/devices/aarch64-rh-devices.mak -@@ -26,3 +26,4 @@ CONFIG_TPM_EMULATOR=y - CONFIG_TPM_TIS_SYSBUS=y - CONFIG_PTIMER=y - CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y -+CONFIG_PVPANIC_PCI=y --- -2.27.0 - diff --git a/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PXB.patch b/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PXB.patch deleted file mode 100644 index 37b85fb..0000000 --- a/SOURCES/kvm-aarch64-rh-devices-add-CONFIG_PXB.patch +++ /dev/null @@ -1,37 +0,0 @@ -From d05ba1e2208cb17b8cf7dac050d95137a67dd988 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Thu, 24 Jun 2021 10:32:08 +0200 -Subject: [PATCH 01/12] aarch64-rh-devices: add CONFIG_PXB -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Eric Auger -RH-MergeRequest: 14: aarch64-rh-devices: add CONFIG_PXB -RH-Commit: [1/1] 6a9e6a96ea6ba1bee220a60e5a691a174a0a044b (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1967502 -RH-Acked-by: Gavin Shan -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Andrew Jones - -We want to enable the PCIe expander bridge on aarch64. So let's -set CONFIG_PXB. - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - default-configs/devices/aarch64-rh-devices.mak | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/default-configs/devices/aarch64-rh-devices.mak b/default-configs/devices/aarch64-rh-devices.mak -index 4220469178..d8ce902720 100644 ---- a/default-configs/devices/aarch64-rh-devices.mak -+++ b/default-configs/devices/aarch64-rh-devices.mak -@@ -27,3 +27,4 @@ CONFIG_TPM_TIS_SYSBUS=y - CONFIG_PTIMER=y - CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y - CONFIG_PVPANIC_PCI=y -+CONFIG_PXB=y --- -2.27.0 - diff --git a/SOURCES/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch b/SOURCES/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch deleted file mode 100644 index bff1686..0000000 --- a/SOURCES/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 456bb6cb658b9d332fa0b5b91946916b48ed449e Mon Sep 17 00:00:00 2001 -From: Igor Mammedov -Date: Thu, 29 Jul 2021 07:42:10 -0400 -Subject: [PATCH 09/39] acpi: pc: revert back to v5.2 PCI slot enumeration - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [1/15] 57222343ccae17b99b4e166798d4d0eecca2e22b (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Commit [1] moved _SUN variable from only hot-pluggable to -all devices. This made linux kernel enumerate extra slots -that weren't present before. If extra slot happens to be -be enumerated first and there is a device in th same slot -but on other bridge, linux kernel will add -N suffix to -slot name of the later, thus changing NIC name compared to -QEMU 5.2. This in some case confuses systemd, if it is -using SLOT NIC naming scheme and interface name becomes -not the same as it was under QEMU-5.2. - -Reproducer QEMU CLI: - -M pc-i440fx-5.2 -nodefaults \ - -device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x3 \ - -device virtio-net-pci,id=nic1,bus=pci.1,addr=0x1 \ - -device virtio-net-pci,id=nic2,bus=pci.1,addr=0x2 \ - -device virtio-net-pci,id=nic3,bus=pci.1,addr=0x3 - -with RHEL8 guest produces following results: - v5.2: - kernel: virtio_net virtio0 ens1: renamed from eth0 - kernel: virtio_net virtio2 ens3: renamed from eth2 - kernel: virtio_net virtio1 enp1s2: renamed from eth1 - (slot 2 is assigned to empty bus 0 slot and virtio1 - is assigned to 2-2 slot, and renaming falls back, - for some reason, to path based naming scheme) - - v6.0: - kernel: virtio_net virtio0 ens1: renamed from eth0 - kernel: virtio_net virtio2 ens3: renamed from eth2 - systemd-udevd[299]: Error changing net interface name 'eth1' to 'ens3': File exists - systemd-udevd[299]: could not rename interface '3' from 'eth1' to 'ens3': File exists - (with commit [1] kernel assigns virtio2 to 3-2 slot - since bridge advertises _SUN=0x3 and kernel assigns - slot 3 to bridge. Still it manages to rename virtio2 - correctly to ens3, however systemd gets confused with virtio1 - where slot allocation exactly the same (2-2) as in 5.2 case - and tries to rename it to ens3 which is rightfully taken by - virtio2) - -I'm not sure what breaks in systemd interface renaming (it probably -should be investigated), but on QEMU side we can safely revert -_SUN to 5.2 behavior (i.e. avoid cold-plugged bridges and non -hot-pluggable device classes), without breaking acpi-index, which uses -slot numbers but it doesn't have to use _SUN, it could use an arbitrary -variable name that has the same slot value). -It will help existing VMs to keep networking with non trivial -configs in working order since systemd will do its interface -renaming magic as it used to do. - -1) -Fixes: b7f23f62e40 (pci: acpi: add _DSM method to PCI devices) -Signed-off-by: Igor Mammedov -Message-Id: <20210624204229.998824-3-imammedo@redhat.com> -Reviewed-by: Stefan Hajnoczi -Tested-by: John Sucaet -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 7193d7cdd93e50f0e5f09803b98d27d3f9b147ac) -Signed-off-by: Igor Mammedov -Signed-off-by: Miroslav Rezanina ---- - hw/i386/acpi-build.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c -index de98750aef..dbee0cd3bc 100644 ---- a/hw/i386/acpi-build.c -+++ b/hw/i386/acpi-build.c -@@ -432,11 +432,15 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus, - aml_append(dev, aml_name_decl("_ADR", aml_int(slot << 16))); - - if (bsel) { -- aml_append(dev, aml_name_decl("_SUN", aml_int(slot))); -+ /* -+ * Can't declare _SUN here for every device as it changes 'slot' -+ * enumeration order in linux kernel, so use another variable for it -+ */ -+ aml_append(dev, aml_name_decl("ASUN", aml_int(slot))); - method = aml_method("_DSM", 4, AML_SERIALIZED); - aml_append(method, aml_return( - aml_call6("PDSM", aml_arg(0), aml_arg(1), aml_arg(2), -- aml_arg(3), aml_name("BSEL"), aml_name("_SUN")) -+ aml_arg(3), aml_name("BSEL"), aml_name("ASUN")) - )); - aml_append(dev, method); - } -@@ -463,6 +467,7 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus, - aml_append(method, aml_return(aml_int(s3d))); - aml_append(dev, method); - } else if (hotplug_enabled_dev) { -+ aml_append(dev, aml_name_decl("_SUN", aml_int(slot))); - /* add _EJ0 to make slot hotpluggable */ - method = aml_method("_EJ0", 1, AML_NOTSERIALIZED); - aml_append(method, --- -2.27.0 - diff --git a/SOURCES/kvm-arm-virt-Enable-ARM-RAS-support.patch b/SOURCES/kvm-arm-virt-Enable-ARM-RAS-support.patch deleted file mode 100644 index a3881b8..0000000 --- a/SOURCES/kvm-arm-virt-Enable-ARM-RAS-support.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 170a9c7dc044a0094b48c658e0d57c97c4b854e0 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Wed, 30 Jun 2021 13:38:03 +0200 -Subject: [PATCH 03/13] arm/virt: Enable ARM RAS support - -RH-Author: Eric Auger -RH-MergeRequest: 19: arm/virt: Support RAS -RH-Commit: [3/3] 1572368bb0f47463a1f6ffa3f5baa97242440c98 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1838608 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Igor Mammedov - -We want to support ARM RAS (Reliability, Availability & Serviceability). -So let's register the RAS property as a class property. It is -unset by default. - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/arm/virt.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index fe1111d527..0084935ec8 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -2281,7 +2281,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); -@@ -2296,6 +2295,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); -@@ -3013,6 +3013,12 @@ 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, "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", -@@ -3063,7 +3069,7 @@ static void rhel_virt_instance_init(Object *obj) - /* Default disallows iommu instantiation */ - vms->iommu = VIRT_IOMMU_NONE; - -- /* Default disallows RAS instantiation and is non-configurable for RHEL */ -+ /* Default disallows RAS instantiation */ - vms->ras = false; - - /* MTE is disabled by default and non-configurable for RHEL */ --- -2.27.0 - diff --git a/SOURCES/kvm-arm-virt-Register-highmem-and-gic-version-as-class-p.patch b/SOURCES/kvm-arm-virt-Register-highmem-and-gic-version-as-class-p.patch deleted file mode 100644 index 52641bd..0000000 --- a/SOURCES/kvm-arm-virt-Register-highmem-and-gic-version-as-class-p.patch +++ /dev/null @@ -1,77 +0,0 @@ -From e808acaa50effe471c56a48b80d5e0d2d196b495 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Tue, 25 May 2021 09:22:23 +0200 -Subject: [PATCH 01/15] arm/virt: Register highmem and gic-version as class - properties - -RH-Author: Eric Auger -RH-MergeRequest: 1: Add 9.0.0 and 8.5.0 arm-virt machine types -RH-Commit: [1/2] 1ff3970773e09f2efb194430511928ae852c02ba (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1952449 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones - -This mirrors changes made in commit -b91def7b8382 ("rm/virt: Register most properties as class properties") -for the highmem and gic-version properties. This makes the -code easier to diff against upstream. - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - 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 080cf54ef1..51a415570c 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -2996,6 +2996,18 @@ static void rhel_machine_class_init(ObjectClass *oc, void *data) - object_class_property_set_description(oc, "acpi", - "Enable ACPI"); - -+ object_class_property_add_bool(oc, "highmem", virt_get_highmem, -+ virt_set_highmem); -+ object_class_property_set_description(oc, "highmem", -+ "Set on/off to enable/disable using " -+ "physical address space above 32 bits"); -+ -+ object_class_property_add_str(oc, "gic-version", virt_get_gic_version, -+ virt_set_gic_version); -+ object_class_property_set_description(oc, "gic-version", -+ "Set GIC version. " -+ "Valid values are 2, 3, host and max"); -+ - object_class_property_add_str(oc, "x-oem-id", - virt_get_oem_id, - virt_set_oem_id); -@@ -3004,7 +3016,6 @@ 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); -@@ -3027,17 +3038,7 @@ static void rhel_virt_instance_init(Object *obj) - - /* High memory is enabled by default */ - vms->highmem = true; -- object_property_add_bool(obj, "highmem", virt_get_highmem, -- virt_set_highmem); -- object_property_set_description(obj, "highmem", -- "Set on/off to enable/disable using " -- "physical address space above 32 bits"); - vms->gic_version = VIRT_GIC_VERSION_NOSEL; -- object_property_add_str(obj, "gic-version", virt_get_gic_version, -- virt_set_gic_version); -- object_property_set_description(obj, "gic-version", -- "Set GIC version. " -- "Valid values are 2, 3, host and max"); - - vms->highmem_ecam = !vmc->no_highmem_ecam; - --- -2.27.0 - diff --git a/SOURCES/kvm-arm-virt-Register-iommu-as-a-class-property.patch b/SOURCES/kvm-arm-virt-Register-iommu-as-a-class-property.patch deleted file mode 100644 index 5235851..0000000 --- a/SOURCES/kvm-arm-virt-Register-iommu-as-a-class-property.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 42e530c513914b83273ec8c6a29100eb3c737604 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Wed, 30 Jun 2021 07:28:38 -0400 -Subject: [PATCH 01/13] arm/virt: Register iommu as a class property - -RH-Author: Eric Auger -RH-MergeRequest: 19: arm/virt: Support RAS -RH-Commit: [1/3] 48428de4deb5af94891aa5552fb9f4ea6d69acef (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1838608 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Igor Mammedov - -As done for highmem and gic-version, let's register the iommu property -as a class property. This is closer to the upstream code. This -change was originally made by upstream commit: -b91def7b8382 ("arm/virt: Register most properties as class properties") - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/arm/virt.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index e4aa794f83..bdae24a753 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3008,6 +3008,11 @@ 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_str(oc, "x-oem-id", - virt_get_oem_id, - virt_set_oem_id); -@@ -3056,10 +3061,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/SOURCES/kvm-arm-virt-Register-its-as-a-class-property.patch b/SOURCES/kvm-arm-virt-Register-its-as-a-class-property.patch deleted file mode 100644 index a0f9ff7..0000000 --- a/SOURCES/kvm-arm-virt-Register-its-as-a-class-property.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 29d18bdaf3dad52a052b2b058cd8f74652a72f76 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Thu, 8 Jul 2021 05:14:47 -0400 -Subject: [PATCH 02/13] arm/virt: Register its as a class property - -RH-Author: Eric Auger -RH-MergeRequest: 19: arm/virt: Support RAS -RH-Commit: [2/3] 95debacfd59d06ed2dcaeb120b20a280ff515434 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1838608 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Igor Mammedov - -As done for highmem, gic-version, iommu, let's register the its property -as a class property. This is closer to the upstream code. This -change was originally made by upstream commit: -b91def7b8382 ("arm/virt: Register most properties as class properties") - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - 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 bdae24a753..fe1111d527 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3013,6 +3013,12 @@ 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, "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); -@@ -3052,11 +3058,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/SOURCES/kvm-audio-Never-send-migration-section.patch b/SOURCES/kvm-audio-Never-send-migration-section.patch deleted file mode 100644 index 474612d..0000000 --- a/SOURCES/kvm-audio-Never-send-migration-section.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 1e69dbe01e1cad1680723e1bc086cc52a1772c17 Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Wed, 11 Aug 2021 08:40:38 -0400 -Subject: [PATCH 27/39] audio: Never send migration section -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 35: Synchronize with RHEL-AV 8.5 release 28 to RHEL 9 -RH-Commit: [4/4] 0b6ec114a3573ac7efcbe5ab3094d8020899c82d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Philippe Mathieu-Daudé - -The audio migration vmstate is empty, and always has been; we can't -just remove it though because an old qemu might send it us. -Changes with -audiodev now mean it's sometimes created when it didn't -used to be, and can confuse migration to old qemu. - -Change it so that vmstate_audio is never sent; if it's received it -should still be accepted, and old qemu's shouldn't be too upset if it's -missing. - -Signed-off-by: Dr. David Alan Gilbert -Reviewed-by: Daniel P. Berrangé -Tested-by: Daniel P. Berrangé -Message-Id: <20210809170956.78536-1-dgilbert@redhat.com> -Signed-off-by: Gerd Hoffmann -(cherry picked from commit da77adbaf619c4d170cb42d769145ad1803fbad9) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - audio/audio.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/audio/audio.c b/audio/audio.c -index 534278edfe..fa724ea8e0 100644 ---- a/audio/audio.c -+++ b/audio/audio.c -@@ -1621,10 +1621,20 @@ void audio_cleanup(void) - } - } - -+static bool vmstate_audio_needed(void *opaque) -+{ -+ /* -+ * Never needed, this vmstate only exists in case -+ * an old qemu sends it to us. -+ */ -+ return false; -+} -+ - static const VMStateDescription vmstate_audio = { - .name = "audio", - .version_id = 1, - .minimum_version_id = 1, -+ .needed = vmstate_audio_needed, - .fields = (VMStateField[]) { - VMSTATE_END_OF_LIST() - } --- -2.27.0 - diff --git a/SOURCES/kvm-block-Add-option-to-use-driver-whitelist-even-in-too.patch b/SOURCES/kvm-block-Add-option-to-use-driver-whitelist-even-in-too.patch deleted file mode 100644 index 4934ffe..0000000 --- a/SOURCES/kvm-block-Add-option-to-use-driver-whitelist-even-in-too.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 0739f735f99a6f1760a422023c262c1aa542a2e5 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Fri, 9 Jul 2021 18:41:41 +0200 -Subject: [PATCH 19/43] block: Add option to use driver whitelist even in tools -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Kevin Wolf -RH-MergeRequest: 26: block: Disable unsupported/read-only block drivers even in tools -RH-Commit: [1/2] 6755d5ff4ef43f275ae530de2b2a568ffd2d3497 (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1957782 -RH-Acked-by: Max Reitz -RH-Acked-by: Richard W.M. Jones -RH-Acked-by: Philippe Mathieu-Daudé - -Currently, the block driver whitelists are only applied for the system -emulator. All other binaries still give unrestricted access to all block -drivers. There are use cases where this made sense because the main -concern was avoiding customers running VMs on less optimised block -drivers and getting bad performance. Allowing the same image format e.g. -as a target for 'qemu-img convert' is not a problem then. - -However, if the concern is the supportability of the driver in general, -either in full or when used read-write, not applying the list driver -whitelist in tools doesn't help - especially since qemu-nbd and -qemu-storage-daemon now give access to more or less the same operations -in block drivers as running a system emulator. - -In order to address this, introduce a new configure option that enforces -the driver whitelist in all binaries. - -Signed-off-by: Kevin Wolf -Message-Id: <20210709164141.254097-1-kwolf@redhat.com> -Reviewed-by: Eric Blake -Signed-off-by: Kevin Wolf -(cherry picked from commit e5f05f8c375157211c7da625a0d3f3ccdb4957d5) -Signed-off-by: Kevin Wolf ---- - block.c | 3 +++ - configure | 14 ++++++++++++-- - meson.build | 1 + - 3 files changed, 16 insertions(+), 2 deletions(-) - -diff --git a/block.c b/block.c -index c5b887cec1..76ecede5af 100644 ---- a/block.c -+++ b/block.c -@@ -5817,6 +5817,9 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs, - - void bdrv_init(void) - { -+#ifdef CONFIG_BDRV_WHITELIST_TOOLS -+ use_bdrv_whitelist = 1; -+#endif - module_call_init(MODULE_INIT_BLOCK); - } - -diff --git a/configure b/configure -index 53b2fa583a..7edc08afb3 100755 ---- a/configure -+++ b/configure -@@ -243,6 +243,7 @@ cross_prefix="" - audio_drv_list="" - block_drv_rw_whitelist="" - block_drv_ro_whitelist="" -+block_drv_whitelist_tools="no" - host_cc="cc" - audio_win_int="" - libs_qga="" -@@ -1029,6 +1030,10 @@ for opt do - ;; - --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') - ;; -+ --enable-block-drv-whitelist-in-tools) block_drv_whitelist_tools="yes" -+ ;; -+ --disable-block-drv-whitelist-in-tools) block_drv_whitelist_tools="no" -+ ;; - --enable-debug-tcg) debug_tcg="yes" - ;; - --disable-debug-tcg) debug_tcg="no" -@@ -1764,10 +1769,12 @@ Advanced options (experts only): - --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L - --block-drv-rw-whitelist=L - set block driver read-write whitelist -- (affects only QEMU, not qemu-img) -+ (by default affects only QEMU, not tools like qemu-img) - --block-drv-ro-whitelist=L - set block driver read-only whitelist -- (affects only QEMU, not qemu-img) -+ (by default affects only QEMU, not tools like qemu-img) -+ --enable-block-drv-whitelist-in-tools -+ use block whitelist also in tools instead of only QEMU - --enable-trace-backends=B Set trace backend - Available backends: $trace_backend_list - --with-trace-file=NAME Full PATH,NAME of file to store traces -@@ -5571,6 +5578,9 @@ if test "$audio_win_int" = "yes" ; then - fi - echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak - echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak -+if test "$block_drv_whitelist_tools" = "yes" ; then -+ echo "CONFIG_BDRV_WHITELIST_TOOLS=y" >> $config_host_mak -+fi - if test "$xfs" = "yes" ; then - echo "CONFIG_XFS=y" >> $config_host_mak - fi -diff --git a/meson.build b/meson.build -index 06c15bd6d2..49b8164ade 100644 ---- a/meson.build -+++ b/meson.build -@@ -2606,6 +2606,7 @@ summary_info += {'coroutine pool': config_host['CONFIG_COROUTINE_POOL'] == '1 - if have_block - summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']} - summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']} -+ summary_info += {'Use block whitelist in tools': config_host.has_key('CONFIG_BDRV_WHITELIST_TOOLS')} - summary_info += {'VirtFS support': have_virtfs} - summary_info += {'build virtiofs daemon': have_virtiofsd} - summary_info += {'Live block migration': config_host.has_key('CONFIG_LIVE_BLOCK_MIGRATION')} --- -2.27.0 - diff --git a/SOURCES/kvm-block-Fix-in_flight-leak-in-request-padding-error-pa.patch b/SOURCES/kvm-block-Fix-in_flight-leak-in-request-padding-error-pa.patch deleted file mode 100644 index 6545209..0000000 --- a/SOURCES/kvm-block-Fix-in_flight-leak-in-request-padding-error-pa.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 872e82621b1341e8b96bda47f7f43dfffd356249 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Tue, 27 Jul 2021 17:49:23 +0200 -Subject: [PATCH 04/13] block: Fix in_flight leak in request padding error path - -RH-Author: Kevin Wolf -RH-MergeRequest: 31: block: Fix in_flight leak in request padding error path -RH-Commit: [1/1] a0d1bf38d9a69818cd6cefc3779f2988b484605a (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1972079 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Eric Blake -RH-Acked-by: Max Reitz - -When bdrv_pad_request() fails in bdrv_co_preadv_part(), bs->in_flight -has been increased, but is never decreased again. This leads to a hang -when trying to drain the block node. - -This bug was observed with Windows guests which issue a request that -fully uses IOV_MAX during installation, so that when padding is -necessary (O_DIRECT with a 4k sector size block device on the host), -adding another entry causes failure. - -Call bdrv_dec_in_flight() to fix this. There is a larger problem to -solve here because this request shouldn't even fail, but Windows doesn't -seem to care and with this minimal fix the installation succeeds. So -given that we're already in freeze, let's take this minimal fix for 6.1. - -Fixes: 98ca45494fcd6bf0336ecd559e440b6de6ea4cd3 -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1972079 -Reported-by: Qing Wang -Signed-off-by: Kevin Wolf -Message-Id: <20210727154923.91067-1-kwolf@redhat.com> -Reviewed-by: Max Reitz -Signed-off-by: Kevin Wolf -(cherry picked from commit 87ab88025247b893aad5071fd38301b67be76d1a) -Signed-off-by: Kevin Wolf -Signed-off-by: Miroslav Rezanina ---- - block/io.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/block/io.c b/block/io.c -index a4b2e3adf1..5033d51334 100644 ---- a/block/io.c -+++ b/block/io.c -@@ -1811,7 +1811,7 @@ int coroutine_fn bdrv_co_preadv_part(BdrvChild *child, - ret = bdrv_pad_request(bs, &qiov, &qiov_offset, &offset, &bytes, &pad, - NULL); - if (ret < 0) { -- return ret; -+ goto fail; - } - - tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ); -@@ -1819,10 +1819,11 @@ int coroutine_fn bdrv_co_preadv_part(BdrvChild *child, - bs->bl.request_alignment, - qiov, qiov_offset, flags); - tracked_request_end(&req); -- bdrv_dec_in_flight(bs); -- - bdrv_padding_destroy(&pad); - -+fail: -+ bdrv_dec_in_flight(bs); -+ - return ret; - } - --- -2.27.0 - diff --git a/SOURCES/kvm-block-add-max_hw_transfer-to-BlockLimits.patch b/SOURCES/kvm-block-add-max_hw_transfer-to-BlockLimits.patch deleted file mode 100644 index 75f1b5d..0000000 --- a/SOURCES/kvm-block-add-max_hw_transfer-to-BlockLimits.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 6773549977d94c504ec76aed67506ae85adff973 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:33 -0400 -Subject: [PATCH 17/43] block: add max_hw_transfer to BlockLimits - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -For block host devices, I/O can happen through either the kernel file -descriptor I/O system calls (preadv/pwritev, io_submit, io_uring) -or the SCSI passthrough ioctl SG_IO. - -In the latter case, the size of each transfer can be limited by the -HBA, while for file descriptor I/O the kernel is able to split and -merge I/O in smaller pieces as needed. Applying the HBA limits to -file descriptor I/O results in more system calls and suboptimal -performance, so this patch splits the max_transfer limit in two: -max_transfer remains valid and is used in general, while max_hw_transfer -is limited to the maximum hardware size. max_hw_transfer can then be -included by the scsi-generic driver in the block limits page, to ensure -that the stricter hardware limit is used. - -Signed-off-by: Paolo Bonzini -(cherry picked from commit 24b36e9813ec15da7db62e3b3621730710c5f020) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/block-backend.c | 13 +++++++++++++ - block/file-posix.c | 2 +- - block/io.c | 2 ++ - hw/scsi/scsi-generic.c | 2 +- - include/block/block_int.h | 7 +++++++ - include/sysemu/block-backend.h | 1 + - 6 files changed, 25 insertions(+), 2 deletions(-) - -diff --git a/block/block-backend.c b/block/block-backend.c -index 136cc602c5..b5f5b4b048 100644 ---- a/block/block-backend.c -+++ b/block/block-backend.c -@@ -1939,6 +1939,19 @@ uint32_t blk_get_request_alignment(BlockBackend *blk) - return bs ? bs->bl.request_alignment : BDRV_SECTOR_SIZE; - } - -+/* Returns the maximum hardware transfer length, in bytes; guaranteed nonzero */ -+uint64_t blk_get_max_hw_transfer(BlockBackend *blk) -+{ -+ BlockDriverState *bs = blk_bs(blk); -+ uint64_t max = INT_MAX; -+ -+ if (bs) { -+ max = MIN_NON_ZERO(max, bs->bl.max_hw_transfer); -+ max = MIN_NON_ZERO(max, bs->bl.max_transfer); -+ } -+ return ROUND_DOWN(max, blk_get_request_alignment(blk)); -+} -+ - /* Returns the maximum transfer length, in bytes; guaranteed nonzero */ - uint32_t blk_get_max_transfer(BlockBackend *blk) - { -diff --git a/block/file-posix.c b/block/file-posix.c -index 1a6c799e19..44325a635d 100644 ---- a/block/file-posix.c -+++ b/block/file-posix.c -@@ -1258,7 +1258,7 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp) - int ret = sg_get_max_transfer_length(s->fd); - - if (ret > 0 && ret <= BDRV_REQUEST_MAX_BYTES) { -- bs->bl.max_transfer = pow2floor(ret); -+ bs->bl.max_hw_transfer = pow2floor(ret); - } - - ret = sg_get_max_segments(s->fd); -diff --git a/block/io.c b/block/io.c -index ca2dca3007..a4b2e3adf1 100644 ---- a/block/io.c -+++ b/block/io.c -@@ -126,6 +126,8 @@ static void bdrv_merge_limits(BlockLimits *dst, const BlockLimits *src) - { - dst->opt_transfer = MAX(dst->opt_transfer, src->opt_transfer); - dst->max_transfer = MIN_NON_ZERO(dst->max_transfer, src->max_transfer); -+ dst->max_hw_transfer = MIN_NON_ZERO(dst->max_hw_transfer, -+ src->max_hw_transfer); - dst->opt_mem_alignment = MAX(dst->opt_mem_alignment, - src->opt_mem_alignment); - dst->min_mem_alignment = MAX(dst->min_mem_alignment, -diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c -index 82e1e2ee79..3762dce749 100644 ---- a/hw/scsi/scsi-generic.c -+++ b/hw/scsi/scsi-generic.c -@@ -179,7 +179,7 @@ static void scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s) - (r->req.cmd.buf[1] & 0x01)) { - page = r->req.cmd.buf[2]; - if (page == 0xb0) { -- uint32_t max_transfer = blk_get_max_transfer(s->conf.blk); -+ uint64_t max_transfer = blk_get_max_hw_transfer(s->conf.blk); - uint32_t max_iov = blk_get_max_iov(s->conf.blk); - - assert(max_transfer); -diff --git a/include/block/block_int.h b/include/block/block_int.h -index 88e4111939..09d8630ec4 100644 ---- a/include/block/block_int.h -+++ b/include/block/block_int.h -@@ -695,6 +695,13 @@ typedef struct BlockLimits { - * clamped down. */ - uint32_t max_transfer; - -+ /* Maximal hardware transfer length in bytes. Applies whenever -+ * transfers to the device bypass the kernel I/O scheduler, for -+ * example with SG_IO. If larger than max_transfer or if zero, -+ * blk_get_max_hw_transfer will fall back to max_transfer. -+ */ -+ uint64_t max_hw_transfer; -+ - /* memory alignment, in bytes so that no bounce buffer is needed */ - size_t min_mem_alignment; - -diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h -index 5423e3d9c6..9ac5f7bbd3 100644 ---- a/include/sysemu/block-backend.h -+++ b/include/sysemu/block-backend.h -@@ -208,6 +208,7 @@ void blk_eject(BlockBackend *blk, bool eject_flag); - int blk_get_flags(BlockBackend *blk); - uint32_t blk_get_request_alignment(BlockBackend *blk); - uint32_t blk_get_max_transfer(BlockBackend *blk); -+uint64_t blk_get_max_hw_transfer(BlockBackend *blk); - int blk_get_max_iov(BlockBackend *blk); - void blk_set_guest_block_size(BlockBackend *blk, int align); - void *blk_try_blockalign(BlockBackend *blk, size_t size); --- -2.27.0 - diff --git a/SOURCES/kvm-block-backend-add-drained_poll.patch b/SOURCES/kvm-block-backend-add-drained_poll.patch deleted file mode 100644 index b3cbc54..0000000 --- a/SOURCES/kvm-block-backend-add-drained_poll.patch +++ /dev/null @@ -1,74 +0,0 @@ -From e23a2be8c57666e091d9192e113a30ea06cd83ef Mon Sep 17 00:00:00 2001 -From: Sergio Lopez Pascual -Date: Thu, 17 Jun 2021 09:13:20 -0400 -Subject: [PATCH 05/12] block-backend: add drained_poll -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [3/8] 4ad1f536b00a762a1b094d76383b74826228892a (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -Allow block backends to poll their devices/users to check if they have -been quiesced when entering a drained section. - -This will be used in the next patch to wait for the NBD server to be -completely quiesced. - -Suggested-by: Kevin Wolf -Reviewed-by: Kevin Wolf -Reviewed-by: Eric Blake -Signed-off-by: Sergio Lopez -Message-Id: <20210602060552.17433-2-slp@redhat.com> -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Kevin Wolf -(cherry picked from commit 095cc4d0f62513d75e9bc1da37f08d9e97f267c4) -Signed-off-by: Sergio Lopez -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/block-backend.c | 7 ++++++- - include/sysemu/block-backend.h | 4 ++++ - 2 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/block/block-backend.c b/block/block-backend.c -index 413af51f3b..05d8e5fb5d 100644 ---- a/block/block-backend.c -+++ b/block/block-backend.c -@@ -2378,8 +2378,13 @@ static void blk_root_drained_begin(BdrvChild *child) - static bool blk_root_drained_poll(BdrvChild *child) - { - BlockBackend *blk = child->opaque; -+ bool busy = false; - assert(blk->quiesce_counter); -- return !!blk->in_flight; -+ -+ if (blk->dev_ops && blk->dev_ops->drained_poll) { -+ busy = blk->dev_ops->drained_poll(blk->dev_opaque); -+ } -+ return busy || !!blk->in_flight; - } - - static void blk_root_drained_end(BdrvChild *child, int *drained_end_counter) -diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h -index 880e903293..5423e3d9c6 100644 ---- a/include/sysemu/block-backend.h -+++ b/include/sysemu/block-backend.h -@@ -66,6 +66,10 @@ typedef struct BlockDevOps { - * Runs when the backend's last drain request ends. - */ - void (*drained_end)(void *opaque); -+ /* -+ * Is the device still busy? -+ */ -+ bool (*drained_poll)(void *opaque); - } BlockDevOps; - - /* This struct is embedded in (the private) BlockBackend struct and contains --- -2.27.0 - diff --git a/SOURCES/kvm-block-backend-align-max_transfer-to-request-alignmen.patch b/SOURCES/kvm-block-backend-align-max_transfer-to-request-alignmen.patch deleted file mode 100644 index c788c86..0000000 --- a/SOURCES/kvm-block-backend-align-max_transfer-to-request-alignmen.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 643c979c2bfa0fc3c45ec8ec5f05a77e0b075356 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:32 -0400 -Subject: [PATCH 16/43] block-backend: align max_transfer to request alignment - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Block device requests must be aligned to bs->bl.request_alignment. -It makes sense for drivers to align bs->bl.max_transfer the same -way; however when there is no specified limit, blk_get_max_transfer -just returns INT_MAX. Since the contract of the function does not -specify that INT_MAX means "no maximum", just align the outcome -of the function (whether INT_MAX or bs->bl.max_transfer) before -returning it. - -Signed-off-by: Paolo Bonzini -(cherry picked from commit b99f7fa08a3df8b8a6a907642e5851cdcf43fa9f) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/block-backend.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/block/block-backend.c b/block/block-backend.c -index 05d8e5fb5d..136cc602c5 100644 ---- a/block/block-backend.c -+++ b/block/block-backend.c -@@ -1943,12 +1943,12 @@ uint32_t blk_get_request_alignment(BlockBackend *blk) - uint32_t blk_get_max_transfer(BlockBackend *blk) - { - BlockDriverState *bs = blk_bs(blk); -- uint32_t max = 0; -+ uint32_t max = INT_MAX; - - if (bs) { -- max = bs->bl.max_transfer; -+ max = MIN_NON_ZERO(max, bs->bl.max_transfer); - } -- return MIN_NON_ZERO(max, INT_MAX); -+ return ROUND_DOWN(max, blk_get_request_alignment(blk)); - } - - int blk_get_max_iov(BlockBackend *blk) --- -2.27.0 - diff --git a/SOURCES/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch b/SOURCES/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch deleted file mode 100644 index df36313..0000000 --- a/SOURCES/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 1d85424fe5208986fc07fe9baa1e9b33d77b185a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= -Date: Thu, 29 Jul 2021 07:42:35 -0400 -Subject: [PATCH 20/39] block/nvme: Fix VFIO_MAP_DMA failed: No space left on - device -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [12/15] f4b3456e4ce1a876a64f9fb92c56f8f981076953 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -When the NVMe block driver was introduced (see commit bdd6a90a9e5, -January 2018), Linux VFIO_IOMMU_MAP_DMA ioctl was only returning --ENOMEM in case of error. The driver was correctly handling the -error path to recycle its volatile IOVA mappings. - -To fix CVE-2019-3882, Linux commit 492855939bdb ("vfio/type1: Limit -DMA mappings per container", April 2019) added the -ENOSPC error to -signal the user exhausted the DMA mappings available for a container. - -The block driver started to mis-behave: - - qemu-system-x86_64: VFIO_MAP_DMA failed: No space left on device - (qemu) - (qemu) info status - VM status: paused (io-error) - (qemu) c - VFIO_MAP_DMA failed: No space left on device - (qemu) c - VFIO_MAP_DMA failed: No space left on device - -(The VM is not resumable from here, hence stuck.) - -Fix by handling the new -ENOSPC error (when DMA mappings are -exhausted) without any distinction to the current -ENOMEM error, -so we don't change the behavior on old kernels where the CVE-2019-3882 -fix is not present. - -An easy way to reproduce this bug is to restrict the DMA mapping -limit (65535 by default) when loading the VFIO IOMMU module: - - # modprobe vfio_iommu_type1 dma_entry_limit=666 - -Cc: qemu-stable@nongnu.org -Cc: Fam Zheng -Cc: Maxim Levitsky -Cc: Alex Williamson -Reported-by: Michal Prívozník -Signed-off-by: Philippe Mathieu-Daudé -Message-id: 20210723195843.1032825-1-philmd@redhat.com -Fixes: bdd6a90a9e5 ("block: Add VFIO based NVMe driver") -Buglink: https://bugs.launchpad.net/qemu/+bug/1863333 -Resolves: https://gitlab.com/qemu-project/qemu/-/issues/65 -Signed-off-by: Philippe Mathieu-Daudé -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 15a730e7a3aaac180df72cd5730e0617bcf44a5a) -Signed-off-by: Philippe Mathieu-Daudé -Signed-off-by: Miroslav Rezanina ---- - block/nvme.c | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git a/block/nvme.c b/block/nvme.c -index 2b5421e7aa..e8dbbc2317 100644 ---- a/block/nvme.c -+++ b/block/nvme.c -@@ -1030,7 +1030,29 @@ try_map: - r = qemu_vfio_dma_map(s->vfio, - qiov->iov[i].iov_base, - len, true, &iova); -+ if (r == -ENOSPC) { -+ /* -+ * In addition to the -ENOMEM error, the VFIO_IOMMU_MAP_DMA -+ * ioctl returns -ENOSPC to signal the user exhausted the DMA -+ * mappings available for a container since Linux kernel commit -+ * 492855939bdb ("vfio/type1: Limit DMA mappings per container", -+ * April 2019, see CVE-2019-3882). -+ * -+ * This block driver already handles this error path by checking -+ * for the -ENOMEM error, so we directly replace -ENOSPC by -+ * -ENOMEM. Beside, -ENOSPC has a specific meaning for blockdev -+ * coroutines: it triggers BLOCKDEV_ON_ERROR_ENOSPC and -+ * BLOCK_ERROR_ACTION_STOP which stops the VM, asking the operator -+ * to add more storage to the blockdev. Not something we can do -+ * easily with an IOMMU :) -+ */ -+ r = -ENOMEM; -+ } - if (r == -ENOMEM && retry) { -+ /* -+ * We exhausted the DMA mappings available for our container: -+ * recycle the volatile IOVA mappings. -+ */ - retry = false; - trace_nvme_dma_flush_queue_wait(s); - if (s->dma_map_count) { --- -2.27.0 - diff --git a/SOURCES/kvm-configure-Fix-endianess-test-with-LTO.patch b/SOURCES/kvm-configure-Fix-endianess-test-with-LTO.patch deleted file mode 100644 index 9dd8745..0000000 --- a/SOURCES/kvm-configure-Fix-endianess-test-with-LTO.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 40e5138fb1e615c927a21d0b3f2e24eca885ede4 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Thu, 15 Jul 2021 10:39:28 +0200 -Subject: [PATCH 36/39] configure: Fix endianess test with LTO - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [9/11] c4be415076356fe74efab6f74d7b347064bbdb40 (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -If a user is trying to compile QEMU with link-time optimization -enabled by running the configure script like this: - - .../configure --extra-cflags="-flto" - -then the endianess test is failing since the magic values do not -show up in the intermediate object files there. If the host is -a big endian machine (like s390x), the QEMU binary is then unusable -since the corresponding variable "bigendian" is pre-initialized -with "no". - -To fix this issue, we should rather create a full binary and look -for the magic strings there instead. -And we really should not continue the build if the endianess check -failed, to make it clear right from the start that something went -wrong here, thus let's also add some "exit 1" statements here -after emitting the error message. - -Message-Id: <20210715083928.933806-1-thuth@redhat.com> -Reviewed-by: Richard Henderson -Signed-off-by: Thomas Huth -(cherry picked from commit 659eb157a55666bf379f5362238a86d855e262e2) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - configure | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/configure b/configure -index 83d8af7fe4..dcd9520bed 100755 ---- a/configure -+++ b/configure -@@ -2323,24 +2323,27 @@ feature_not_found() { - # --- - # big/little endian test - cat > $TMPC << EOF -+#include - short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; - short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; --extern int foo(short *, short *); --int main(int argc, char *argv[]) { -- return foo(big_endian, little_endian); -+int main(int argc, char *argv[]) -+{ -+ return printf("%s %s\n", (char *)big_endian, (char *)little_endian); - } - EOF - --if compile_object ; then -- if strings -a $TMPO | grep -q BiGeNdIaN ; then -+if compile_prog ; then -+ if strings -a $TMPE | grep -q BiGeNdIaN ; then - bigendian="yes" -- elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then -+ elif strings -a $TMPE | grep -q LiTtLeEnDiAn ; then - bigendian="no" - else - echo big/little test failed -+ exit 1 - fi - else - echo big/little test failed -+ exit 1 - fi - - ########################################## --- -2.27.0 - diff --git a/SOURCES/kvm-disable-CONFIG_USB_STORAGE_BOT.patch b/SOURCES/kvm-disable-CONFIG_USB_STORAGE_BOT.patch deleted file mode 100644 index 017b5ae..0000000 --- a/SOURCES/kvm-disable-CONFIG_USB_STORAGE_BOT.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 64ec0505fccf6f277430f3be1829a9e44cd00dbb Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Fri, 18 Jun 2021 12:04:24 -0400 -Subject: [PATCH 07/12] disable CONFIG_USB_STORAGE_BOT -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [5/8] 73d3ee0a17590c8cddf6bd812e6a758951c36ea4 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - default-configs/devices/ppc64-rh-devices.mak | 1 - - default-configs/devices/x86_64-rh-devices.mak | 1 - - 2 files changed, 2 deletions(-) - -diff --git a/default-configs/devices/ppc64-rh-devices.mak b/default-configs/devices/ppc64-rh-devices.mak -index 5b01b7fac0..3ec5603ace 100644 ---- a/default-configs/devices/ppc64-rh-devices.mak -+++ b/default-configs/devices/ppc64-rh-devices.mak -@@ -15,7 +15,6 @@ CONFIG_USB=y - CONFIG_USB_OHCI=y - CONFIG_USB_OHCI_PCI=y - CONFIG_USB_SMARTCARD=y --CONFIG_USB_STORAGE_BOT=y - CONFIG_USB_STORAGE_CORE=y - CONFIG_USB_STORAGE_CLASSIC=y - CONFIG_USB_XHCI=y -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index d09c138fc6..81bda09f4c 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -74,7 +74,6 @@ CONFIG_USB=y - CONFIG_USB_EHCI=y - CONFIG_USB_EHCI_PCI=y - CONFIG_USB_SMARTCARD=y --CONFIG_USB_STORAGE_BOT=y - CONFIG_USB_STORAGE_CORE=y - CONFIG_USB_STORAGE_CLASSIC=y - CONFIG_USB_UHCI=y --- -2.27.0 - diff --git a/SOURCES/kvm-disable-ac97-audio.patch b/SOURCES/kvm-disable-ac97-audio.patch deleted file mode 100644 index 469c6c4..0000000 --- a/SOURCES/kvm-disable-ac97-audio.patch +++ /dev/null @@ -1,37 +0,0 @@ -From e2bb4b752d68856c4c307640ae310f47f680aed6 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Fri, 20 Aug 2021 10:21:07 +0200 -Subject: [PATCH 2/4] disable ac97 audio -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Gerd Hoffmann -RH-MergeRequest: 39: disable ac97 audio -RH-Commit: [1/1] 5d1bd969d20f960cb0a023f0d6cd1ae5adda22e6 (kraxel/centos-qemu-kvm) -RH-Bugzilla: 1995819 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Thomas Huth - -RH-Bugzilla: 1995819 - -Signed-off-by: Gerd Hoffmann ---- - default-configs/devices/x86_64-rh-devices.mak | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index c2dd112f81..8ae2747bf6 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -1,6 +1,5 @@ - include rh-virtio.mak - --CONFIG_AC97=y - CONFIG_ACPI=y - CONFIG_ACPI_PCI=y - CONFIG_ACPI_CPU_HOTPLUG=y --- -2.27.0 - diff --git a/SOURCES/kvm-disable-sga-device.patch b/SOURCES/kvm-disable-sga-device.patch index 611e72b..75118bd 100644 --- a/SOURCES/kvm-disable-sga-device.patch +++ b/SOURCES/kvm-disable-sga-device.patch @@ -1,31 +1,31 @@ -From 86338b2497c47ec6e7175197f6a2ed6af0fcfe73 Mon Sep 17 00:00:00 2001 +From 77d18ece20f69ff1e1f6afd4b2d8cf2a1f252f3a Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann -Date: Fri, 20 Aug 2021 10:47:28 +0200 +Date: Mon, 20 Sep 2021 03:46:51 -0400 Subject: [PATCH 1/2] disable sga device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -RH-Author: Gerd Hoffmann -RH-MergeRequest: 27: disable sga device -RH-Commit: [1/2] 103299f3596b49bb03fd2a80fa30983b3d5c8951 -RH-Bugzilla: 1995807 -RH-Acked-by: Laszlo Ersek +RH-Author: Miroslav Rezanina +RH-MergeRequest: 44: Apply RHEL 9.0.0 Beta fixes to RHEL 9.0.0 +RH-Commit: [1/2] 3d8e1b51b496175de71162c612abbd64adbcb9e5 (mrezanin/centos-src-qemu-kvm) +RH-Bugzilla: 2000845 RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Philippe Mathieu-Daudé +RH-Acked-by: Gerd Hoffmann -RH-Bugzilla: 1995807 +Disabling sga device we are going to not support anymore. Signed-off-by: Gerd Hoffmann +Signed-off-by: Miroslav Rezanina --- - default-configs/devices/x86_64-rh-devices.mak | 1 - + configs/devices/x86_64-softmmu/x86_64-rh-devices.mak | 1 - 1 file changed, 1 deletion(-) -diff --git a/default-configs/devices/x86_64-rh-devices.mak b/default-configs/devices/x86_64-rh-devices.mak -index 8ae2747bf6..31c290d02d 100644 ---- a/default-configs/devices/x86_64-rh-devices.mak -+++ b/default-configs/devices/x86_64-rh-devices.mak -@@ -65,7 +65,6 @@ CONFIG_SERIAL=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 +index 24b96ba0c4..20c2991941 100644 +--- a/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak ++++ b/configs/devices/x86_64-softmmu/x86_64-rh-devices.mak +@@ -67,7 +67,6 @@ CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_SERIAL_PCI=y CONFIG_SEV=y diff --git a/SOURCES/kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch b/SOURCES/kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch deleted file mode 100644 index 7439afd..0000000 --- a/SOURCES/kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 17c1559139d6a58794944901f84dd4e8cd1f5335 Mon Sep 17 00:00:00 2001 -From: Connor Kuehl -Date: Tue, 22 Jun 2021 20:00:20 -0400 -Subject: [PATCH 08/12] doc: Fix some mistakes in the SEV documentation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [6/8] ce828f81de1320a1833241700cb13dfdcf7d82e7 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -From: Tom Lendacky - -Fix some spelling and grammar mistakes in the amd-memory-encryption.txt -file. No new information added. - -Signed-off-by: Tom Lendacky -Reviewed-by: Laszlo Ersek -Reviewed-by: Connor Kuehl -Message-Id: -Signed-off-by: Eduardo Habkost -(cherry picked from commit f538adeccf4554e6402fe661a0a51bcc8d6bd227) -Signed-off-by: Connor Kuehl -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - docs/amd-memory-encryption.txt | 59 +++++++++++++++++----------------- - 1 file changed, 29 insertions(+), 30 deletions(-) - -diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt -index 145896aec7..ed85159ea7 100644 ---- a/docs/amd-memory-encryption.txt -+++ b/docs/amd-memory-encryption.txt -@@ -1,38 +1,38 @@ - Secure Encrypted Virtualization (SEV) is a feature found on AMD processors. - - SEV is an extension to the AMD-V architecture which supports running encrypted --virtual machine (VMs) under the control of KVM. Encrypted VMs have their pages -+virtual machines (VMs) under the control of KVM. Encrypted VMs have their pages - (code and data) secured such that only the guest itself has access to the - unencrypted version. Each encrypted VM is associated with a unique encryption --key; if its data is accessed to a different entity using a different key the -+key; if its data is accessed by a different entity using a different key the - encrypted guests data will be incorrectly decrypted, leading to unintelligible - data. - --The key management of this feature is handled by separate processor known as --AMD secure processor (AMD-SP) which is present in AMD SOCs. Firmware running --inside the AMD-SP provide commands to support common VM lifecycle. This -+Key management for this feature is handled by a separate processor known as the -+AMD secure processor (AMD-SP), which is present in AMD SOCs. Firmware running -+inside the AMD-SP provides commands to support a common VM lifecycle. This - includes commands for launching, snapshotting, migrating and debugging the --encrypted guest. Those SEV command can be issued via KVM_MEMORY_ENCRYPT_OP -+encrypted guest. These SEV commands can be issued via KVM_MEMORY_ENCRYPT_OP - ioctls. - - Launching - --------- --Boot images (such as bios) must be encrypted before guest can be booted. --MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images :LAUNCH_START, -+Boot images (such as bios) must be encrypted before a guest can be booted. The -+MEMORY_ENCRYPT_OP ioctl provides commands to encrypt the images: LAUNCH_START, - LAUNCH_UPDATE_DATA, LAUNCH_MEASURE and LAUNCH_FINISH. These four commands - together generate a fresh memory encryption key for the VM, encrypt the boot --images and provide a measurement than can be used as an attestation of the -+images and provide a measurement than can be used as an attestation of a - successful launch. - - LAUNCH_START is called first to create a cryptographic launch context within --the firmware. To create this context, guest owner must provides guest policy, -+the firmware. To create this context, guest owner must provide a guest policy, - its public Diffie-Hellman key (PDH) and session parameters. These inputs --should be treated as binary blob and must be passed as-is to the SEV firmware. -+should be treated as a binary blob and must be passed as-is to the SEV firmware. - --The guest policy is passed as plaintext and hypervisor may able to read it -+The guest policy is passed as plaintext. A hypervisor may choose to read it, - but should not modify it (any modification of the policy bits will result - in bad measurement). The guest policy is a 4-byte data structure containing --several flags that restricts what can be done on running SEV guest. -+several flags that restricts what can be done on a running SEV guest. - See KM Spec section 3 and 6.2 for more details. - - The guest policy can be provided via the 'policy' property (see below) -@@ -40,31 +40,30 @@ The guest policy can be provided via the 'policy' property (see below) - # ${QEMU} \ - sev-guest,id=sev0,policy=0x1...\ - --Guest owners provided DH certificate and session parameters will be used to -+The guest owner provided DH certificate and session parameters will be used to - establish a cryptographic session with the guest owner to negotiate keys used - for the attestation. - --The DH certificate and session blob can be provided via 'dh-cert-file' and --'session-file' property (see below -+The DH certificate and session blob can be provided via the 'dh-cert-file' and -+'session-file' properties (see below) - - # ${QEMU} \ - sev-guest,id=sev0,dh-cert-file=,session-file= - - LAUNCH_UPDATE_DATA encrypts the memory region using the cryptographic context --created via LAUNCH_START command. If required, this command can be called -+created via the LAUNCH_START command. If required, this command can be called - multiple times to encrypt different memory regions. The command also calculates - the measurement of the memory contents as it encrypts. - --LAUNCH_MEASURE command can be used to retrieve the measurement of encrypted --memory. This measurement is a signature of the memory contents that can be --sent to the guest owner as an attestation that the memory was encrypted --correctly by the firmware. The guest owner may wait to provide the guest --confidential information until it can verify the attestation measurement. --Since the guest owner knows the initial contents of the guest at boot, the --attestation measurement can be verified by comparing it to what the guest owner --expects. -+LAUNCH_MEASURE can be used to retrieve the measurement of encrypted memory. -+This measurement is a signature of the memory contents that can be sent to the -+guest owner as an attestation that the memory was encrypted correctly by the -+firmware. The guest owner may wait to provide the guest confidential information -+until it can verify the attestation measurement. Since the guest owner knows the -+initial contents of the guest at boot, the attestation measurement can be -+verified by comparing it to what the guest owner expects. - --LAUNCH_FINISH command finalizes the guest launch and destroy's the cryptographic -+LAUNCH_FINISH finalizes the guest launch and destroys the cryptographic - context. - - See SEV KM API Spec [1] 'Launching a guest' usage flow (Appendix A) for the -@@ -78,10 +77,10 @@ To launch a SEV guest - - Debugging - ----------- --Since memory contents of SEV guest is encrypted hence hypervisor access to the --guest memory will get a cipher text. If guest policy allows debugging, then --hypervisor can use DEBUG_DECRYPT and DEBUG_ENCRYPT commands access the guest --memory region for debug purposes. This is not supported in QEMU yet. -+Since the memory contents of a SEV guest are encrypted, hypervisor access to -+the guest memory will return cipher text. If the guest policy allows debugging, -+then a hypervisor can use the DEBUG_DECRYPT and DEBUG_ENCRYPT commands to access -+the guest memory region for debug purposes. This is not supported in QEMU yet. - - Snapshot/Restore - ----------------- --- -2.27.0 - diff --git a/SOURCES/kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch b/SOURCES/kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch deleted file mode 100644 index 2aabcbd..0000000 --- a/SOURCES/kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 1bd5660666d2a1f704ebabeed8a2bbfa02410f41 Mon Sep 17 00:00:00 2001 -From: Connor Kuehl -Date: Tue, 22 Jun 2021 20:00:21 -0400 -Subject: [PATCH 09/12] docs: Add SEV-ES documentation to - amd-memory-encryption.txt -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [7/8] 36e49577484813866132b90c64cf99779326db74 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -From: Tom Lendacky - -Update the amd-memory-encryption.txt file with information about SEV-ES, -including how to launch an SEV-ES guest and some of the differences -between SEV and SEV-ES guests in regards to launching and measuring the -guest. - -Signed-off-by: Tom Lendacky -Acked-by: Laszlo Ersek -Reviewed-by: Connor Kuehl -Message-Id: -Signed-off-by: Eduardo Habkost -(cherry picked from commit 61b7d7098cd53dd386939610d534f8bd79240881) -Signed-off-by: Connor Kuehl -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - docs/amd-memory-encryption.txt | 54 +++++++++++++++++++++++++++++----- - 1 file changed, 47 insertions(+), 7 deletions(-) - -diff --git a/docs/amd-memory-encryption.txt b/docs/amd-memory-encryption.txt -index ed85159ea7..ffca382b5f 100644 ---- a/docs/amd-memory-encryption.txt -+++ b/docs/amd-memory-encryption.txt -@@ -15,6 +15,13 @@ includes commands for launching, snapshotting, migrating and debugging the - encrypted guest. These SEV commands can be issued via KVM_MEMORY_ENCRYPT_OP - ioctls. - -+Secure Encrypted Virtualization - Encrypted State (SEV-ES) builds on the SEV -+support to additionally protect the guest register state. In order to allow a -+hypervisor to perform functions on behalf of a guest, there is architectural -+support for notifying a guest's operating system when certain types of VMEXITs -+are about to occur. This allows the guest to selectively share information with -+the hypervisor to satisfy the requested function. -+ - Launching - --------- - Boot images (such as bios) must be encrypted before a guest can be booted. The -@@ -24,6 +31,9 @@ together generate a fresh memory encryption key for the VM, encrypt the boot - images and provide a measurement than can be used as an attestation of a - successful launch. - -+For a SEV-ES guest, the LAUNCH_UPDATE_VMSA command is also used to encrypt the -+guest register state, or VM save area (VMSA), for all of the guest vCPUs. -+ - LAUNCH_START is called first to create a cryptographic launch context within - the firmware. To create this context, guest owner must provide a guest policy, - its public Diffie-Hellman key (PDH) and session parameters. These inputs -@@ -40,6 +50,12 @@ The guest policy can be provided via the 'policy' property (see below) - # ${QEMU} \ - sev-guest,id=sev0,policy=0x1...\ - -+Setting the "SEV-ES required" policy bit (bit 2) will launch the guest as a -+SEV-ES guest (see below) -+ -+# ${QEMU} \ -+ sev-guest,id=sev0,policy=0x5...\ -+ - The guest owner provided DH certificate and session parameters will be used to - establish a cryptographic session with the guest owner to negotiate keys used - for the attestation. -@@ -55,13 +71,19 @@ created via the LAUNCH_START command. If required, this command can be called - multiple times to encrypt different memory regions. The command also calculates - the measurement of the memory contents as it encrypts. - --LAUNCH_MEASURE can be used to retrieve the measurement of encrypted memory. --This measurement is a signature of the memory contents that can be sent to the --guest owner as an attestation that the memory was encrypted correctly by the --firmware. The guest owner may wait to provide the guest confidential information --until it can verify the attestation measurement. Since the guest owner knows the --initial contents of the guest at boot, the attestation measurement can be --verified by comparing it to what the guest owner expects. -+LAUNCH_UPDATE_VMSA encrypts all the vCPU VMSAs for a SEV-ES guest using the -+cryptographic context created via the LAUNCH_START command. The command also -+calculates the measurement of the VMSAs as it encrypts them. -+ -+LAUNCH_MEASURE can be used to retrieve the measurement of encrypted memory and, -+for a SEV-ES guest, encrypted VMSAs. This measurement is a signature of the -+memory contents and, for a SEV-ES guest, the VMSA contents, that can be sent -+to the guest owner as an attestation that the memory and VMSAs were encrypted -+correctly by the firmware. The guest owner may wait to provide the guest -+confidential information until it can verify the attestation measurement. -+Since the guest owner knows the initial contents of the guest at boot, the -+attestation measurement can be verified by comparing it to what the guest owner -+expects. - - LAUNCH_FINISH finalizes the guest launch and destroys the cryptographic - context. -@@ -75,6 +97,22 @@ To launch a SEV guest - -machine ...,confidential-guest-support=sev0 \ - -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=1 - -+To launch a SEV-ES guest -+ -+# ${QEMU} \ -+ -machine ...,confidential-guest-support=sev0 \ -+ -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=1,policy=0x5 -+ -+An SEV-ES guest has some restrictions as compared to a SEV guest. Because the -+guest register state is encrypted and cannot be updated by the VMM/hypervisor, -+a SEV-ES guest: -+ - Does not support SMM - SMM support requires updating the guest register -+ state. -+ - Does not support reboot - a system reset requires updating the guest register -+ state. -+ - Requires in-kernel irqchip - the burden is placed on the hypervisor to -+ manage booting APs. -+ - Debugging - ----------- - Since the memory contents of a SEV guest are encrypted, hypervisor access to -@@ -101,8 +139,10 @@ Secure Encrypted Virtualization Key Management: - - KVM Forum slides: - http://www.linux-kvm.org/images/7/74/02x08A-Thomas_Lendacky-AMDs_Virtualizatoin_Memory_Encryption_Technology.pdf -+https://www.linux-kvm.org/images/9/94/Extending-Secure-Encrypted-Virtualization-with-SEV-ES-Thomas-Lendacky-AMD.pdf - - AMD64 Architecture Programmer's Manual: - http://support.amd.com/TechDocs/24593.pdf - SME is section 7.10 - SEV is section 15.34 -+ SEV-ES is section 15.35 --- -2.27.0 - diff --git a/SOURCES/kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch b/SOURCES/kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch deleted file mode 100644 index e900ba7..0000000 --- a/SOURCES/kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch +++ /dev/null @@ -1,110 +0,0 @@ -From e408203bab17e32f8d42ae9ad61e94a73bfaec67 Mon Sep 17 00:00:00 2001 -From: Connor Kuehl -Date: Tue, 22 Jun 2021 20:00:22 -0400 -Subject: [PATCH 10/12] docs/interop/firmware.json: Add SEV-ES support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [8/8] b49ebbaf40b56d95c67475a0373d6906a3e4f0e3 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -From: Tom Lendacky - -Create an enum definition, '@amd-sev-es', for SEV-ES and add documention -for the new enum. Add an example that shows some of the requirements for -SEV-ES, including not having SMM support and the requirement for an -X64-only build. - -Signed-off-by: Tom Lendacky -Reviewed-by: Laszlo Ersek -Reviewed-by: Connor Kuehl -Message-Id: -Signed-off-by: Eduardo Habkost -(cherry picked from commit d44df1d73ce04d7f4b8f94cba5f715e2dadc998b) -Signed-off-by: Connor Kuehl -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - docs/interop/firmware.json | 47 +++++++++++++++++++++++++++++++++++++- - 1 file changed, 46 insertions(+), 1 deletion(-) - -diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json -index 9d94ccafa9..8d8b0be030 100644 ---- a/docs/interop/firmware.json -+++ b/docs/interop/firmware.json -@@ -115,6 +115,12 @@ - # this feature are documented in - # "docs/amd-memory-encryption.txt". - # -+# @amd-sev-es: The firmware supports running under AMD Secure Encrypted -+# Virtualization - Encrypted State, as specified in the AMD64 -+# Architecture Programmer's Manual. QEMU command line options -+# related to this feature are documented in -+# "docs/amd-memory-encryption.txt". -+# - # @enrolled-keys: The variable store (NVRAM) template associated with - # the firmware binary has the UEFI Secure Boot - # operational mode turned on, with certificates -@@ -179,7 +185,7 @@ - # Since: 3.0 - ## - { 'enum' : 'FirmwareFeature', -- 'data' : [ 'acpi-s3', 'acpi-s4', 'amd-sev', 'enrolled-keys', -+ 'data' : [ 'acpi-s3', 'acpi-s4', 'amd-sev', 'amd-sev-es', 'enrolled-keys', - 'requires-smm', 'secure-boot', 'verbose-dynamic', - 'verbose-static' ] } - -@@ -504,6 +510,45 @@ - # } - # - # { -+# "description": "OVMF with SEV-ES support", -+# "interface-types": [ -+# "uefi" -+# ], -+# "mapping": { -+# "device": "flash", -+# "executable": { -+# "filename": "/usr/share/OVMF/OVMF_CODE.fd", -+# "format": "raw" -+# }, -+# "nvram-template": { -+# "filename": "/usr/share/OVMF/OVMF_VARS.fd", -+# "format": "raw" -+# } -+# }, -+# "targets": [ -+# { -+# "architecture": "x86_64", -+# "machines": [ -+# "pc-q35-*" -+# ] -+# } -+# ], -+# "features": [ -+# "acpi-s3", -+# "amd-sev", -+# "amd-sev-es", -+# "verbose-dynamic" -+# ], -+# "tags": [ -+# "-a X64", -+# "-p OvmfPkg/OvmfPkgX64.dsc", -+# "-t GCC48", -+# "-b DEBUG", -+# "-D FD_SIZE_4MB" -+# ] -+# } -+# -+# { - # "description": "UEFI firmware for ARM64 virtual machines", - # "interface-types": [ - # "uefi" --- -2.27.0 - diff --git a/SOURCES/kvm-dump-guest-memory-Block-live-migration.patch b/SOURCES/kvm-dump-guest-memory-Block-live-migration.patch new file mode 100644 index 0000000..08da454 --- /dev/null +++ b/SOURCES/kvm-dump-guest-memory-Block-live-migration.patch @@ -0,0 +1,93 @@ +From d1c6d059f8936adf7b8c3e2b29b2eb290b0792ac Mon Sep 17 00:00:00 2001 +From: Peter Xu +Date: Wed, 22 Sep 2021 12:20:09 -0400 +Subject: [PATCH 3/6] dump-guest-memory: Block live migration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Peter Xu +RH-MergeRequest: 51: dump-guest-memory: Add blocker for migration +RH-Commit: [3/3] 711dcc0018f70bcb87496c5aa235633a6daf5c2d (peterx/qemu-kvm) +RH-Bugzilla: 1996609 +RH-Acked-by: Dr. David Alan Gilbert +RH-Acked-by: quintela1 +RH-Acked-by: Laszlo Ersek + +Both dump-guest-memory and live migration caches vm state at the beginning. +Either of them entering the other one will cause race on the vm state, and even +more severe on that (please refer to the crash report in the bug link). + +Let's block live migration in dump-guest-memory, and that'll also block +dump-guest-memory if it detected that we're during a live migration. + +Side note: migrate_del_blocker() can be called even if the blocker is not +inserted yet, so it's safe to unconditionally delete that blocker in +dump_cleanup (g_slist_remove allows no-entry-found case). + +Suggested-by: Dr. David Alan Gilbert +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1996609 +Signed-off-by: Peter Xu +Reviewed-by: Marc-André Lureau +Reviewed-by: Juan Quintela +Signed-off-by: Juan Quintela +(cherry picked from commit b7bc6b182883bb3097dde2a25d041f28bde2b89c) +Signed-off-by: Peter Xu +--- + dump/dump.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/dump/dump.c b/dump/dump.c +index ab625909f3..662d0a62cd 100644 +--- a/dump/dump.c ++++ b/dump/dump.c +@@ -29,6 +29,7 @@ + #include "qemu/error-report.h" + #include "qemu/main-loop.h" + #include "hw/misc/vmcoreinfo.h" ++#include "migration/blocker.h" + + #ifdef TARGET_X86_64 + #include "win_dump.h" +@@ -47,6 +48,8 @@ + + #define MAX_GUEST_NOTE_SIZE (1 << 20) /* 1MB should be enough */ + ++static Error *dump_migration_blocker; ++ + #define ELF_NOTE_SIZE(hdr_size, name_size, desc_size) \ + ((DIV_ROUND_UP((hdr_size), 4) + \ + DIV_ROUND_UP((name_size), 4) + \ +@@ -101,6 +104,7 @@ static int dump_cleanup(DumpState *s) + qemu_mutex_unlock_iothread(); + } + } ++ migrate_del_blocker(dump_migration_blocker); + + return 0; + } +@@ -2005,6 +2009,21 @@ void qmp_dump_guest_memory(bool paging, const char *file, + return; + } + ++ if (!dump_migration_blocker) { ++ error_setg(&dump_migration_blocker, ++ "Live migration disabled: dump-guest-memory in progress"); ++ } ++ ++ /* ++ * Allows even for -only-migratable, but forbid migration during the ++ * process of dump guest memory. ++ */ ++ if (migrate_add_blocker_internal(dump_migration_blocker, errp)) { ++ /* Remember to release the fd before passing it over to dump state */ ++ close(fd); ++ return; ++ } ++ + s = &dump_state_global; + dump_state_prepare(s); + +-- +2.27.0 + diff --git a/SOURCES/kvm-file-posix-fix-max_iov-for-dev-sg-devices.patch b/SOURCES/kvm-file-posix-fix-max_iov-for-dev-sg-devices.patch deleted file mode 100644 index 3027bec..0000000 --- a/SOURCES/kvm-file-posix-fix-max_iov-for-dev-sg-devices.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0111d01afe82c46656a40269bf21eb7702c02a09 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:29 -0400 -Subject: [PATCH 13/43] file-posix: fix max_iov for /dev/sg devices - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Even though it was only called for devices that have bs->sg set (which -must be character devices), sg_get_max_segments looked at /sys/dev/block -which only works for block devices. - -On Linux the sg driver has its own way to provide the maximum number of -iovecs in a scatter/gather list, so add support for it. The block device -path is kept because it will be reinstated in the next patches. - -Signed-off-by: Paolo Bonzini -Reviewed-by: Max Reitz -(cherry picked from commit 8ad5ab6148dca8aad297c134c09c84b0b92d45ed) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/file-posix.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/block/file-posix.c b/block/file-posix.c -index 20e14f8e96..74d4903dc1 100644 ---- a/block/file-posix.c -+++ b/block/file-posix.c -@@ -1204,6 +1204,17 @@ static int sg_get_max_segments(int fd) - goto out; - } - -+ if (S_ISCHR(st.st_mode)) { -+ if (ioctl(fd, SG_GET_SG_TABLESIZE, &ret) == 0) { -+ return ret; -+ } -+ return -ENOTSUP; -+ } -+ -+ if (!S_ISBLK(st.st_mode)) { -+ return -ENOTSUP; -+ } -+ - sysfspath = g_strdup_printf("/sys/dev/block/%u:%u/queue/max_segments", - major(st.st_rdev), minor(st.st_rdev)); - sysfd = open(sysfspath, O_RDONLY); --- -2.27.0 - diff --git a/SOURCES/kvm-file-posix-try-BLKSECTGET-on-block-devices-too-do-no.patch b/SOURCES/kvm-file-posix-try-BLKSECTGET-on-block-devices-too-do-no.patch deleted file mode 100644 index c80576b..0000000 --- a/SOURCES/kvm-file-posix-try-BLKSECTGET-on-block-devices-too-do-no.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 9c8493d3a6d2e4d879d1ef67ff1abebd532c87a0 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:34 -0400 -Subject: [PATCH 18/43] file-posix: try BLKSECTGET on block devices too, do not - round to power of 2 - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -bs->sg is only true for character devices, but block devices can also -be used with scsi-block and scsi-generic. Unfortunately BLKSECTGET -returns bytes in an int for /dev/sgN devices, and sectors in a short -for block devices, so account for that in the code. - -The maximum transfer also need not be a power of 2 (for example I have -seen disks with 1280 KiB maximum transfer) so there's no need to pass -the result through pow2floor. - -Signed-off-by: Paolo Bonzini -(cherry picked from commit 18473467d55a20d643b6c9b3a52de42f705b4d35) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/file-posix.c | 57 +++++++++++++++++++++++++++------------------- - 1 file changed, 33 insertions(+), 24 deletions(-) - -diff --git a/block/file-posix.c b/block/file-posix.c -index 44325a635d..7b4ebf65d5 100644 ---- a/block/file-posix.c -+++ b/block/file-posix.c -@@ -1173,22 +1173,27 @@ static void raw_reopen_abort(BDRVReopenState *state) - s->reopen_state = NULL; - } - --static int sg_get_max_transfer_length(int fd) -+static int hdev_get_max_hw_transfer(int fd, struct stat *st) - { - #ifdef BLKSECTGET -- int max_bytes = 0; -- -- if (ioctl(fd, BLKSECTGET, &max_bytes) == 0) { -- return max_bytes; -+ if (S_ISBLK(st->st_mode)) { -+ unsigned short max_sectors = 0; -+ if (ioctl(fd, BLKSECTGET, &max_sectors) == 0) { -+ return max_sectors * 512; -+ } - } else { -- return -errno; -+ int max_bytes = 0; -+ if (ioctl(fd, BLKSECTGET, &max_bytes) == 0) { -+ return max_bytes; -+ } - } -+ return -errno; - #else - return -ENOSYS; - #endif - } - --static int sg_get_max_segments(int fd) -+static int hdev_get_max_segments(int fd, struct stat *st) - { - #ifdef CONFIG_LINUX - char buf[32]; -@@ -1197,26 +1202,20 @@ static int sg_get_max_segments(int fd) - int ret; - int sysfd = -1; - long max_segments; -- struct stat st; -- -- if (fstat(fd, &st)) { -- ret = -errno; -- goto out; -- } - -- if (S_ISCHR(st.st_mode)) { -+ if (S_ISCHR(st->st_mode)) { - if (ioctl(fd, SG_GET_SG_TABLESIZE, &ret) == 0) { - return ret; - } - return -ENOTSUP; - } - -- if (!S_ISBLK(st.st_mode)) { -+ if (!S_ISBLK(st->st_mode)) { - return -ENOTSUP; - } - - sysfspath = g_strdup_printf("/sys/dev/block/%u:%u/queue/max_segments", -- major(st.st_rdev), minor(st.st_rdev)); -+ major(st->st_rdev), minor(st->st_rdev)); - sysfd = open(sysfspath, O_RDONLY); - if (sysfd == -1) { - ret = -errno; -@@ -1253,23 +1252,33 @@ out: - static void raw_refresh_limits(BlockDriverState *bs, Error **errp) - { - BDRVRawState *s = bs->opaque; -+ struct stat st; - -- if (bs->sg) { -- int ret = sg_get_max_transfer_length(s->fd); -+ raw_probe_alignment(bs, s->fd, errp); -+ bs->bl.min_mem_alignment = s->buf_align; -+ bs->bl.opt_mem_alignment = MAX(s->buf_align, qemu_real_host_page_size); -+ -+ /* -+ * Maximum transfers are best effort, so it is okay to ignore any -+ * errors. That said, based on the man page errors in fstat would be -+ * very much unexpected; the only possible case seems to be ENOMEM. -+ */ -+ if (fstat(s->fd, &st)) { -+ return; -+ } -+ -+ if (bs->sg || S_ISBLK(st.st_mode)) { -+ int ret = hdev_get_max_hw_transfer(s->fd, &st); - - if (ret > 0 && ret <= BDRV_REQUEST_MAX_BYTES) { -- bs->bl.max_hw_transfer = pow2floor(ret); -+ bs->bl.max_hw_transfer = ret; - } - -- ret = sg_get_max_segments(s->fd); -+ ret = hdev_get_max_segments(s->fd, &st); - if (ret > 0) { - bs->bl.max_iov = ret; - } - } -- -- raw_probe_alignment(bs, s->fd, errp); -- bs->bl.min_mem_alignment = s->buf_align; -- bs->bl.opt_mem_alignment = MAX(s->buf_align, qemu_real_host_page_size); - } - - static int check_for_dasd(int fd) --- -2.27.0 - diff --git a/SOURCES/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch b/SOURCES/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch deleted file mode 100644 index 6ed6a6b..0000000 --- a/SOURCES/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 3347d61ff783d05f41f03097551460dc5825b301 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Thu, 29 Jul 2021 07:42:14 -0400 -Subject: [PATCH 11/39] hmp: Fix loadvm to resume the VM on success instead of - failure - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [3/15] 492cfb8ef252805b988a256abe73628605f630e9 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Commit f61fe11aa6f broke hmp_loadvm() by adding an incorrect negation -when converting from 0/-errno return values to a bool value. The result -is that loadvm resumes the VM now if it failed and keeps it stopped if -it failed. Fix it to restore the old behaviour and do it the other way -around. - -Fixes: f61fe11aa6f7f8f0ffe4ddaa56a8108f3ab57854 -Cc: qemu-stable@nongnu.org -Reported-by: Yanhui Ma -Signed-off-by: Kevin Wolf -Message-Id: <20210511163151.45167-1-kwolf@redhat.com> -Reviewed-by: Dr. David Alan Gilbert -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit c53cd04e70641fdf9410aac40c617d074047b3e1) -Signed-off-by: Kevin Wolf -Signed-off-by: Miroslav Rezanina ---- - monitor/hmp-cmds.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c -index 0ad5b77477..cc15d9b6ee 100644 ---- a/monitor/hmp-cmds.c -+++ b/monitor/hmp-cmds.c -@@ -1133,7 +1133,7 @@ void hmp_loadvm(Monitor *mon, const QDict *qdict) - - vm_stop(RUN_STATE_RESTORE_VM); - -- if (!load_snapshot(name, NULL, false, NULL, &err) && saved_vm_running) { -+ if (load_snapshot(name, NULL, false, NULL, &err) && saved_vm_running) { - vm_start(); - } - hmp_handle_error(mon, err); --- -2.27.0 - diff --git a/SOURCES/kvm-hw-arm-smmuv3-Another-range-invalidation-fix.patch b/SOURCES/kvm-hw-arm-smmuv3-Another-range-invalidation-fix.patch deleted file mode 100644 index 7fb1c3a..0000000 --- a/SOURCES/kvm-hw-arm-smmuv3-Another-range-invalidation-fix.patch +++ /dev/null @@ -1,111 +0,0 @@ -From e9abef24fae799febf81cd4ac02efe8987a698e8 Mon Sep 17 00:00:00 2001 -From: Auger Eric -Date: Wed, 26 May 2021 16:07:40 -0400 -Subject: [PATCH 15/15] hw/arm/smmuv3: Another range invalidation fix - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [12/12] dc064684e5f3f11d955565b05d37b0f2d9f79b91 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -6d9cd115b9 ("hw/arm/smmuv3: Enforce invalidation on a power of two range") -failed to completely fix misalignment issues with range -invalidation. For instance invalidations patterns like "invalidate 32 -4kB pages starting from 0xff395000 are not correctly handled" due -to the fact the previous fix only made sure the number of invalidated -pages were a power of 2 but did not properly handle the start -address was not aligned with the range. This can be noticed when -boothing a fedora 33 with protected virtio-blk-pci. - -Signed-off-by: Eric Auger -Fixes: 6d9cd115b9 ("hw/arm/smmuv3: Enforce invalidation on a power of two range") -Reviewed-by: Peter Maydell -Signed-off-by: Peter Maydell -(cherry picked from commit 219729cfbf9e979020bffedac6a790144173ec62) -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/arm/smmuv3.c | 50 +++++++++++++++++++++++++------------------------ - 1 file changed, 26 insertions(+), 24 deletions(-) - -diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c -index 8705612535..e1979282e4 100644 ---- a/hw/arm/smmuv3.c -+++ b/hw/arm/smmuv3.c -@@ -856,43 +856,45 @@ static void smmuv3_inv_notifiers_iova(SMMUState *s, int asid, dma_addr_t iova, - - static void smmuv3_s1_range_inval(SMMUState *s, Cmd *cmd) - { -- uint8_t scale = 0, num = 0, ttl = 0; -- dma_addr_t addr = CMD_ADDR(cmd); -+ dma_addr_t end, addr = CMD_ADDR(cmd); - uint8_t type = CMD_TYPE(cmd); - uint16_t vmid = CMD_VMID(cmd); -+ uint8_t scale = CMD_SCALE(cmd); -+ uint8_t num = CMD_NUM(cmd); -+ uint8_t ttl = CMD_TTL(cmd); - bool leaf = CMD_LEAF(cmd); - uint8_t tg = CMD_TG(cmd); -- uint64_t first_page = 0, last_page; -- uint64_t num_pages = 1; -+ uint64_t num_pages; -+ uint8_t granule; - int asid = -1; - -- if (tg) { -- scale = CMD_SCALE(cmd); -- num = CMD_NUM(cmd); -- ttl = CMD_TTL(cmd); -- num_pages = (num + 1) * BIT_ULL(scale); -- } -- - if (type == SMMU_CMD_TLBI_NH_VA) { - asid = CMD_ASID(cmd); - } - -- /* Split invalidations into ^2 range invalidations */ -- last_page = num_pages - 1; -- while (num_pages) { -- uint8_t granule = tg * 2 + 10; -- uint64_t mask, count; -+ if (!tg) { -+ trace_smmuv3_s1_range_inval(vmid, asid, addr, tg, 1, ttl, leaf); -+ smmuv3_inv_notifiers_iova(s, asid, addr, tg, 1); -+ smmu_iotlb_inv_iova(s, asid, addr, tg, 1, ttl); -+ return; -+ } -+ -+ /* RIL in use */ - -- mask = dma_aligned_pow2_mask(first_page, last_page, 64 - granule); -- count = mask + 1; -+ num_pages = (num + 1) * BIT_ULL(scale); -+ granule = tg * 2 + 10; -+ -+ /* Split invalidations into ^2 range invalidations */ -+ end = addr + (num_pages << granule) - 1; - -- trace_smmuv3_s1_range_inval(vmid, asid, addr, tg, count, ttl, leaf); -- smmuv3_inv_notifiers_iova(s, asid, addr, tg, count); -- smmu_iotlb_inv_iova(s, asid, addr, tg, count, ttl); -+ while (addr != end + 1) { -+ uint64_t mask = dma_aligned_pow2_mask(addr, end, 64); - -- num_pages -= count; -- first_page += count; -- addr += count * BIT_ULL(granule); -+ num_pages = (mask + 1) >> granule; -+ trace_smmuv3_s1_range_inval(vmid, asid, addr, tg, num_pages, ttl, leaf); -+ smmuv3_inv_notifiers_iova(s, asid, addr, tg, num_pages); -+ smmu_iotlb_inv_iova(s, asid, addr, tg, num_pages, ttl); -+ addr += mask + 1; - } - } - --- -2.27.0 - diff --git a/SOURCES/kvm-hw-arm-virt-Add-8.5-and-9.0-machine-types-and-remove.patch b/SOURCES/kvm-hw-arm-virt-Add-8.5-and-9.0-machine-types-and-remove.patch deleted file mode 100644 index 6415284..0000000 --- a/SOURCES/kvm-hw-arm-virt-Add-8.5-and-9.0-machine-types-and-remove.patch +++ /dev/null @@ -1,63 +0,0 @@ -From ee0be09f3598596e41b3fc2dbefef3382c5b0541 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Tue, 25 May 2021 09:22:24 +0200 -Subject: [PATCH 02/15] hw/arm/virt: Add 8.5 and 9.0 machine types and remove - older ones - -RH-Author: Eric Auger -RH-MergeRequest: 1: Add 9.0.0 and 8.5.0 arm-virt machine types -RH-Commit: [2/2] ace4619a1d505a3b552a236260b259bd6ddabc00 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1952449 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones - -Add 8.5 and 9.0 machine types and remove older ones. - -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/arm/virt.c | 24 +++++------------------- - 1 file changed, 5 insertions(+), 19 deletions(-) - -diff --git a/hw/arm/virt.c b/hw/arm/virt.c -index 51a415570c..e4aa794f83 100644 ---- a/hw/arm/virt.c -+++ b/hw/arm/virt.c -@@ -3095,28 +3095,14 @@ static void rhel_machine_init(void) - } - type_init(rhel_machine_init); - --static void rhel840_virt_options(MachineClass *mc) -+static void rhel900_virt_options(MachineClass *mc) - { - compat_props_add(mc->compat_props, arm_rhel_compat, arm_rhel_compat_len); -- compat_props_add(mc->compat_props, hw_compat_rhel_8_4, hw_compat_rhel_8_4_len); - } --DEFINE_RHEL_MACHINE_AS_LATEST(8, 4, 0) -+DEFINE_RHEL_MACHINE_AS_LATEST(9, 0, 0) - --static void rhel830_virt_options(MachineClass *mc) -+static void rhel850_virt_options(MachineClass *mc) - { -- VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); -- -- rhel840_virt_options(mc); -- compat_props_add(mc->compat_props, hw_compat_rhel_8_3, hw_compat_rhel_8_3_len); -- vmc->no_kvm_steal_time = true; --} --DEFINE_RHEL_MACHINE(8, 3, 0) -- --static void rhel820_virt_options(MachineClass *mc) --{ -- rhel830_virt_options(mc); -- compat_props_add(mc->compat_props, hw_compat_rhel_8_2, hw_compat_rhel_8_2_len); -- mc->numa_mem_supported = true; -- mc->auto_enable_numa_with_memdev = false; -+ rhel900_virt_options(mc); - } --DEFINE_RHEL_MACHINE(8, 2, 0) -+DEFINE_RHEL_MACHINE(8, 5, 0) --- -2.27.0 - diff --git a/SOURCES/kvm-hw-arm-virt-Add-hw_compat_rhel_8_5-to-8.5-machine-ty.patch b/SOURCES/kvm-hw-arm-virt-Add-hw_compat_rhel_8_5-to-8.5-machine-ty.patch new file mode 100644 index 0000000..5d7af51 --- /dev/null +++ b/SOURCES/kvm-hw-arm-virt-Add-hw_compat_rhel_8_5-to-8.5-machine-ty.patch @@ -0,0 +1,38 @@ +From c0fa5e8ad618a980752f7053de4d4fedd46b5b53 Mon Sep 17 00:00:00 2001 +From: Eric Auger +Date: Tue, 12 Oct 2021 17:53:07 +0200 +Subject: [PATCH] hw: arm: virt: Add hw_compat_rhel_8_5 to 8.5 machine type + +RH-Author: Eric Auger +RH-MergeRequest: 48: hw: arm: virt: Add hw_compat_rhel_8_5 to 8.5 machine type +RH-Commit: [1/1] f4230d3bbd94beb44afb23cb0d1561ff2bc71340 (eauger1/centos-qemu-kvm) +RH-Bugzilla: 1998942 +RH-Acked-by: Miroslav Rezanina +RH-Acked-by: Gavin Shan +RH-Acked-by: Andrew Jones + +branch: c9s +Upstream: no +Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=40295089 + +Add hw_compat_rhel_8_5 to rhel8.5 virt options. + +Signed-off-by: Eric Auger +--- + hw/arm/virt.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hw/arm/virt.c b/hw/arm/virt.c +index 9e7cb687dc..79286c40ec 100644 +--- a/hw/arm/virt.c ++++ b/hw/arm/virt.c +@@ -3148,5 +3148,6 @@ type_init(rhel_machine_init); + static void rhel850_virt_options(MachineClass *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); + } + DEFINE_RHEL_MACHINE_AS_LATEST(8, 5, 0) +-- +2.27.0 + diff --git a/SOURCES/kvm-hw-arm-virt-Disable-PL011-clock-migration-through-hw.patch b/SOURCES/kvm-hw-arm-virt-Disable-PL011-clock-migration-through-hw.patch deleted file mode 100644 index 6ce6dd0..0000000 --- a/SOURCES/kvm-hw-arm-virt-Disable-PL011-clock-migration-through-hw.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 7f76c347f17c5fc60f3bcb99ad65e26f9da4ed9f Mon Sep 17 00:00:00 2001 -From: Auger Eric -Date: Thu, 20 May 2021 19:23:26 -0400 -Subject: [PATCH 10/15] hw/arm/virt: Disable PL011 clock migration through - hw_compat_rhel_8_3 - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [6/12] 5f52975350b2497ee82cc5c9b8ba930e3a9b8c3d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -Disable PL011 clock migration for machine types before -virt-rhel8.4.0. - -The regression was introduced by aac63e0e6ea3 -("hw/char/pl011: add a clock input"), in 8.4, -causing failure of migration between qemu 8.4 towards -older ones. - -The fix was taken in 8.5 as part of the rebase, -e6fa978d8343 ("hw/arm/virt: Disable pl011 clock migration -if needed"). But the compat needs to be applied in -hw_compat_rhel_8_3[]. - -Signed-off-by: Eric Auger -Signed-off-by: Danilo C. L. de Paula -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 c665e869de..6c534e14fa 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -69,6 +69,8 @@ GlobalProperty hw_compat_rhel_8_3[] = { - { "nvme", "use-intel-id", "on"}, - /* hw_compat_rhel_8_3 from hw_compat_5_1 */ - { "pvpanic", "events", "1"}, /* PVPANIC_PANICKED */ -+ /* hw_compat_rhel_8_3 from hw_compat_5_1 */ -+ { "pl011", "migrate-clk", "off" }, - /* hw_compat_rhel_8_3 bz 1912846 */ - { "pci-xhci", "x-rh-late-msi-cap", "off" }, - /* hw_compat_rhel_8_3 from hw_compat_5_1 */ --- -2.27.0 - diff --git a/SOURCES/kvm-hw-arm-virt-Remove-9.0-machine-type.patch b/SOURCES/kvm-hw-arm-virt-Remove-9.0-machine-type.patch index 2df1426..4ccd33c 100644 --- a/SOURCES/kvm-hw-arm-virt-Remove-9.0-machine-type.patch +++ b/SOURCES/kvm-hw-arm-virt-Remove-9.0-machine-type.patch @@ -1,37 +1,37 @@ -From 29af345b5879e73a45d6ea549037835d3db80726 Mon Sep 17 00:00:00 2001 -From: Eric Auger -Date: Tue, 17 Aug 2021 07:21:13 -0400 -Subject: [PATCH] hw/arm/virt: Remove 9.0 machine type +From 8dc162b2ae2e412c7d4e0d46f7a11001c34263dc Mon Sep 17 00:00:00 2001 +From: Andrew Jones +Date: Mon, 23 Aug 2021 18:57:11 +0200 +Subject: [PATCH 1/4] hw/arm/virt: Remove 9.0 machine type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -RH-Author: Eric Auger -RH-MergeRequest: 23: hw/arm/virt: Remove 9.0 machine type -RH-Commit: [1/1] 07dd3c160593867473bc4be6cad707426a75bd81 -RH-Bugzilla: 1981462 +RH-Author: Andrew Jones +RH-MergeRequest: 38: hw/arm/virt: Remove 9.0 machine type +RH-Commit: [1/1 35c0734886622b88f6a715f13fba8f65331f7a82 +RH-Bugzilla: 2002937 +RH-Acked-by: Daniel P. Berrangé +RH-Acked-by: Miroslav Rezanina RH-Acked-by: Gavin Shan RH-Acked-by: Philippe Mathieu-Daudé -RH-Acked-by: Andrew Jones -branch: rhel-9.0.0-beta -Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=39020228 -Upstream: no -Test: QMP query-machines and sample VM run +Testing: '/usr/libexec/qemu-kvm -M help' and sample VM run -To Align with other architectures, we remove the 9.0 machine type -for now and just keep the 8.5 one. +Remove the 9.0 machine type for RHEL9 Beta to align with other +architectures. Also, like other architectures, the 8.5 machine +type should be the RHEL9 Beta default. -Signed-off-by: Eric Auger +Signed-off-by: Andrew Jones +Signed-off-by: Miroslav Rezanina --- 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 0084935ec8..ddd9a33e98 100644 +index 3c8e6de36d..9e7cb687dc 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c -@@ -3103,14 +3103,8 @@ static void rhel_machine_init(void) +@@ -3145,14 +3145,8 @@ static void rhel_machine_init(void) } type_init(rhel_machine_init); diff --git a/SOURCES/kvm-hw-s390x-Remove-the-RHEL7-only-machine-type.patch b/SOURCES/kvm-hw-s390x-Remove-the-RHEL7-only-machine-type.patch deleted file mode 100644 index cf4e6bb..0000000 --- a/SOURCES/kvm-hw-s390x-Remove-the-RHEL7-only-machine-type.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 64a9a5c971c424ff2d8074f52d48dd6233dc97ac Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Tue, 18 May 2021 18:27:54 +0200 -Subject: [PATCH] hw/s390x: Remove the RHEL7-only machine type - -RH-Author: Thomas Huth -RH-MergeRequest: 7: hw/s390x: Remove the RHEL7-only machine type -RH-Commit: [1/1] 8c53d4ae81 (thuth/qemu-kvm) -RH-Bugzilla: 1944730 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Cornelia Huck -RH-Acked-by: David Hildenbrand - -We only support live migration from RHEL8 in RHEL9, so we can remove -the RHEL7 machine type "s390-ccw-virtio-rhel7.5.0". - -Signed-off-by: Thomas Huth ---- - hw/s390x/s390-virtio-ccw.c | 32 -------------------------------- - 1 file changed, 32 deletions(-) - -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 8df6dd1c71..432f36bce5 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1125,38 +1125,6 @@ static void ccw_machine_rhel760_class_options(MachineClass *mc) - } - DEFINE_CCW_MACHINE(rhel760, "rhel7.6.0", false); - --static void ccw_machine_rhel750_instance_options(MachineState *machine) --{ -- static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V2_11 }; -- ccw_machine_rhel760_instance_options(machine); -- -- /* before 2.12 we emulated the very first z900, and RHEL 7.5 is -- based on 2.10 */ -- s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat); -- -- /* bpb and ppa15 were only in the full model in RHEL 7.5 */ -- s390_cpudef_featoff_greater(11, 1, S390_FEAT_PPA15); -- s390_cpudef_featoff_greater(11, 1, S390_FEAT_BPB); --} -- --GlobalProperty ccw_compat_rhel_7_5[] = { -- { -- .driver = TYPE_SCLP_EVENT_FACILITY, -- .property = "allow_all_mask_sizes", -- .value = "off", -- }, --}; --const size_t ccw_compat_rhel_7_5_len = G_N_ELEMENTS(ccw_compat_rhel_7_5); -- --static void ccw_machine_rhel750_class_options(MachineClass *mc) --{ -- ccw_machine_rhel760_class_options(mc); -- compat_props_add(mc->compat_props, hw_compat_rhel_7_5, hw_compat_rhel_7_5_len); -- compat_props_add(mc->compat_props, ccw_compat_rhel_7_5, ccw_compat_rhel_7_5_len); -- S390_CCW_MACHINE_CLASS(mc)->hpage_1m_allowed = false; --} --DEFINE_CCW_MACHINE(rhel750, "rhel7.5.0", false); -- - static void ccw_machine_register_types(void) - { - type_register_static(&ccw_machine_info); --- -2.27.0 - diff --git a/SOURCES/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch b/SOURCES/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch deleted file mode 100644 index 71f143a..0000000 --- a/SOURCES/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch +++ /dev/null @@ -1,219 +0,0 @@ -From e92a6c64cb4b1437c5b75f25a638dbb6eb041383 Mon Sep 17 00:00:00 2001 -From: "plai@redhat.com" -Date: Thu, 29 Jul 2021 07:42:27 -0400 -Subject: [PATCH 16/39] i386: Add ratelimit for bus locks acquired in guest - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [8/15] 2b8f01e05e44388c2f90d5281a9fe5537ab2433d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -A bus lock is acquired through either split locked access to writeback -(WB) memory or any locked access to non-WB memory. It is typically >1000 -cycles slower than an atomic operation within a cache and can also -disrupts performance on other cores. - -Virtual Machines can exploit bus locks to degrade the performance of -system. To address this kind of performance DOS attack coming from the -VMs, bus lock VM exit is introduced in KVM and it can report the bus -locks detected in guest. If enabled in KVM, it would exit to the -userspace to let the user enforce throttling policies once bus locks -acquired in VMs. - -The availability of bus lock VM exit can be detected through the -KVM_CAP_X86_BUS_LOCK_EXIT. The returned bitmap contains the potential -policies supported by KVM. The field KVM_BUS_LOCK_DETECTION_EXIT in -bitmap is the only supported strategy at present. It indicates that KVM -will exit to userspace to handle the bus locks. - -This patch adds a ratelimit on the bus locks acquired in guest as a -mitigation policy. - -Introduce a new field "bus_lock_ratelimit" to record the limited speed -of bus locks in the target VM. The user can specify it through the -"bus-lock-ratelimit" as a machine property. In current implementation, -the default value of the speed is 0 per second, which means no -restrictions on the bus locks. - -As for ratelimit on detected bus locks, simply set the ratelimit -interval to 1s and restrict the quota of bus lock occurence to the value -of "bus_lock_ratelimit". A potential alternative is to introduce the -time slice as a property which can help the user achieve more precise -control. - -The detail of bus lock VM exit can be found in spec: -https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html - -Signed-off-by: Chenyi Qiang -Message-Id: <20210521043820.29678-1-chenyi.qiang@intel.com> -Signed-off-by: Eduardo Habkost -(cherry picked from commit 035d1ef26565f8f8eae058c37f5731a9ae304b96) -Signed-off-by: Paul Lai -Signed-off-by: Miroslav Rezanina ---- - hw/i386/x86.c | 24 ++++++++++++++++++++++++ - include/hw/i386/x86.h | 8 ++++++++ - target/i386/kvm/kvm.c | 41 +++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 73 insertions(+) - -diff --git a/hw/i386/x86.c b/hw/i386/x86.c -index ed796fe6ba..d30cf27e29 100644 ---- a/hw/i386/x86.c -+++ b/hw/i386/x86.c -@@ -1246,6 +1246,23 @@ static void x86_machine_set_oem_table_id(Object *obj, const char *value, - strncpy(x86ms->oem_table_id, value, 8); - } - -+static void x86_machine_get_bus_lock_ratelimit(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ X86MachineState *x86ms = X86_MACHINE(obj); -+ uint64_t bus_lock_ratelimit = x86ms->bus_lock_ratelimit; -+ -+ visit_type_uint64(v, name, &bus_lock_ratelimit, errp); -+} -+ -+static void x86_machine_set_bus_lock_ratelimit(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ X86MachineState *x86ms = X86_MACHINE(obj); -+ -+ visit_type_uint64(v, name, &x86ms->bus_lock_ratelimit, errp); -+} -+ - static void x86_machine_initfn(Object *obj) - { - X86MachineState *x86ms = X86_MACHINE(obj); -@@ -1256,6 +1273,7 @@ static void x86_machine_initfn(Object *obj) - x86ms->pci_irq_mask = ACPI_BUILD_PCI_IRQS; - x86ms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); - x86ms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); -+ x86ms->bus_lock_ratelimit = 0; - } - - static void x86_machine_class_init(ObjectClass *oc, void *data) -@@ -1299,6 +1317,12 @@ static void x86_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(oc, X86_MACHINE_BUS_LOCK_RATELIMIT, "uint64_t", -+ x86_machine_get_bus_lock_ratelimit, -+ x86_machine_set_bus_lock_ratelimit, NULL, NULL); -+ object_class_property_set_description(oc, X86_MACHINE_BUS_LOCK_RATELIMIT, -+ "Set the ratelimit for the bus locks acquired in VMs"); - } - - static const TypeInfo x86_machine_info = { -diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h -index c09b648dff..25a1f16f01 100644 ---- a/include/hw/i386/x86.h -+++ b/include/hw/i386/x86.h -@@ -74,12 +74,20 @@ struct X86MachineState { - * will be translated to MSI messages in the address space. - */ - AddressSpace *ioapic_as; -+ -+ /* -+ * Ratelimit enforced on detected bus locks in guest. -+ * The default value of the bus_lock_ratelimit is 0 per second, -+ * which means no limitation on the guest's bus locks. -+ */ -+ uint64_t bus_lock_ratelimit; - }; - - #define X86_MACHINE_SMM "smm" - #define X86_MACHINE_ACPI "acpi" - #define X86_MACHINE_OEM_ID "x-oem-id" - #define X86_MACHINE_OEM_TABLE_ID "x-oem-table-id" -+#define X86_MACHINE_BUS_LOCK_RATELIMIT "bus-lock-ratelimit" - - #define TYPE_X86_MACHINE MACHINE_TYPE_NAME("x86") - OBJECT_DECLARE_TYPE(X86MachineState, X86MachineClass, X86_MACHINE) -diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c -index 4c69c2cb4b..af030af116 100644 ---- a/target/i386/kvm/kvm.c -+++ b/target/i386/kvm/kvm.c -@@ -130,6 +130,9 @@ static bool has_msr_mcg_ext_ctl; - static struct kvm_cpuid2 *cpuid_cache; - static struct kvm_msr_list *kvm_feature_msrs; - -+#define BUS_LOCK_SLICE_TIME 1000000000ULL /* ns */ -+static RateLimit bus_lock_ratelimit_ctrl; -+ - int kvm_has_pit_state2(void) - { - return has_pit_state2; -@@ -2267,6 +2270,28 @@ int kvm_arch_init(MachineState *ms, KVMState *s) - } - } - -+ if (object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE)) { -+ X86MachineState *x86ms = X86_MACHINE(ms); -+ -+ if (x86ms->bus_lock_ratelimit > 0) { -+ ret = kvm_check_extension(s, KVM_CAP_X86_BUS_LOCK_EXIT); -+ if (!(ret & KVM_BUS_LOCK_DETECTION_EXIT)) { -+ error_report("kvm: bus lock detection unsupported"); -+ return -ENOTSUP; -+ } -+ ret = kvm_vm_enable_cap(s, KVM_CAP_X86_BUS_LOCK_EXIT, 0, -+ KVM_BUS_LOCK_DETECTION_EXIT); -+ if (ret < 0) { -+ error_report("kvm: Failed to enable bus lock detection cap: %s", -+ strerror(-ret)); -+ return ret; -+ } -+ ratelimit_init(&bus_lock_ratelimit_ctrl); -+ ratelimit_set_speed(&bus_lock_ratelimit_ctrl, -+ x86ms->bus_lock_ratelimit, BUS_LOCK_SLICE_TIME); -+ } -+ } -+ - return 0; - } - -@@ -4225,6 +4250,15 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run) - } - } - -+static void kvm_rate_limit_on_bus_lock(void) -+{ -+ uint64_t delay_ns = ratelimit_calculate_delay(&bus_lock_ratelimit_ctrl, 1); -+ -+ if (delay_ns) { -+ g_usleep(delay_ns / SCALE_US); -+ } -+} -+ - MemTxAttrs kvm_arch_post_run(CPUState *cpu, struct kvm_run *run) - { - X86CPU *x86_cpu = X86_CPU(cpu); -@@ -4240,6 +4274,9 @@ MemTxAttrs kvm_arch_post_run(CPUState *cpu, struct kvm_run *run) - } else { - env->eflags &= ~IF_MASK; - } -+ if (run->flags & KVM_RUN_X86_BUS_LOCK) { -+ kvm_rate_limit_on_bus_lock(); -+ } - - /* We need to protect the apic state against concurrent accesses from - * different threads in case the userspace irqchip is used. */ -@@ -4598,6 +4635,10 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) - ioapic_eoi_broadcast(run->eoi.vector); - ret = 0; - break; -+ case KVM_EXIT_X86_BUS_LOCK: -+ /* already handled in kvm_arch_post_run */ -+ ret = 0; -+ break; - default: - fprintf(stderr, "KVM: unknown exit reason %d\n", run->exit_reason); - ret = -1; --- -2.27.0 - diff --git a/SOURCES/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch b/SOURCES/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch deleted file mode 100644 index 9f007d8..0000000 --- a/SOURCES/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch +++ /dev/null @@ -1,82 +0,0 @@ -From c24fcdf0712ef81ec25ca3a4a1144cca18303fbe Mon Sep 17 00:00:00 2001 -From: "plai@redhat.com" -Date: Thu, 29 Jul 2021 07:42:19 -0400 -Subject: [PATCH 13/39] i386/cpu: Expose AVX_VNNI instruction to guest - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [5/15] 56381e35a1dc06af7d457d1fe61b1c108dd25d06 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Expose AVX (VEX-encoded) versions of the Vector Neural Network -Instructions to guest. - -The bit definition: -CPUID.(EAX=7,ECX=1):EAX[bit 4] AVX_VNNI - -The following instructions are available when this feature is -present in the guest. - 1. VPDPBUS: Multiply and Add Unsigned and Signed Bytes - 2. VPDPBUSDS: Multiply and Add Unsigned and Signed Bytes with Saturation - 3. VPDPWSSD: Multiply and Add Signed Word Integers - 4. VPDPWSSDS: Multiply and Add Signed Integers with Saturation - -As for the kvm related code, please reference Linux commit id 1085a6b585d7. - -The release document ref below link: -https://software.intel.com/content/www/us/en/develop/download/\ -intel-architecture-instruction-set-extensions-programming-reference.html - -Signed-off-by: Yang Zhong -Message-Id: <20210407015609.22936-1-yang.zhong@intel.com> -Signed-off-by: Paolo Bonzini -(cherry picked from commit c1826ea6a052084f2e6a0bae9dd5932a727df039) -Signed-off-by: Paul Lai -Signed-off-by: Miroslav Rezanina ---- - target/i386/cpu.c | 4 ++-- - target/i386/cpu.h | 2 ++ - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/target/i386/cpu.c b/target/i386/cpu.c -index da47c3e50e..0de2932c79 100644 ---- a/target/i386/cpu.c -+++ b/target/i386/cpu.c -@@ -996,7 +996,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { - .type = CPUID_FEATURE_WORD, - .feat_names = { - NULL, NULL, NULL, NULL, -- NULL, "avx512-bf16", NULL, NULL, -+ "avx-vnni", "avx512-bf16", NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, -@@ -3284,7 +3284,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - MSR_ARCH_CAP_SKIP_L1DFL_VMENTRY | MSR_ARCH_CAP_MDS_NO | - MSR_ARCH_CAP_PSCHANGE_MC_NO | MSR_ARCH_CAP_TAA_NO, - .features[FEAT_7_1_EAX] = -- CPUID_7_1_EAX_AVX512_BF16, -+ CPUID_7_1_EAX_AVX_VNNI | CPUID_7_1_EAX_AVX512_BF16, - /* XSAVES is added in version 2 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | -diff --git a/target/i386/cpu.h b/target/i386/cpu.h -index 570f916878..edc8984448 100644 ---- a/target/i386/cpu.h -+++ b/target/i386/cpu.h -@@ -804,6 +804,8 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS]; - /* Speculative Store Bypass Disable */ - #define CPUID_7_0_EDX_SPEC_CTRL_SSBD (1U << 31) - -+/* AVX VNNI Instruction */ -+#define CPUID_7_1_EAX_AVX_VNNI (1U << 4) - /* AVX512 BFloat16 Instruction */ - #define CPUID_7_1_EAX_AVX512_BF16 (1U << 5) - --- -2.27.0 - diff --git a/SOURCES/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch b/SOURCES/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch deleted file mode 100644 index 1d1ebf0..0000000 --- a/SOURCES/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch +++ /dev/null @@ -1,178 +0,0 @@ -From a6ab9f3d290c2ff3c2fc0187c69cf8cf69feff40 Mon Sep 17 00:00:00 2001 -From: Eric Blake -Date: Fri, 6 Aug 2021 15:07:47 -0400 -Subject: [PATCH 24/39] iotests: Improve and rename test 291 to qemu-img-bitmap -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 35: Synchronize with RHEL-AV 8.5 release 28 to RHEL 9 -RH-Commit: [1/4] bf400ceb9ef48b81c5f7cade97bc1cbf7bc4842c (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Philippe Mathieu-Daudé - -Enhance the test to demonstrate existing less-than-stellar behavior of -qemu-img with a qcow2 image containing an inconsistent bitmap: we -don't diagnose the problem until after copying the entire image (a -potentially long time), and when we do diagnose the failure, we still -end up leaving an empty bitmap in the destination. This mess will be -cleaned up in the next patch. - -While at it, rename the test now that we support useful iotest names, -and fix a missing newline in the error message thus exposed. - -Signed-off-by: Eric Blake -Message-Id: <20210709153951.2801666-2-eblake@redhat.com> -Reviewed-by: Vladimir Sementsov-Ogievskiy -Reviewed-by: Nir Soffer - -(cherry picked from commit 94075c28eea0755173939dfaf1eae688b224a74e) -Conflicts: - tests/qemu-iotests/tests/qemu-img-bitmaps.out - commit 8417e1378c not backported -Signed-off-by: Eric Blake -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/dirty-bitmap.c | 2 +- - .../{291 => tests/qemu-img-bitmaps} | 21 +++++++- - .../{291.out => tests/qemu-img-bitmaps.out} | 49 ++++++++++++++++++- - 3 files changed, 69 insertions(+), 3 deletions(-) - rename tests/qemu-iotests/{291 => tests/qemu-img-bitmaps} (87%) - rename tests/qemu-iotests/{291.out => tests/qemu-img-bitmaps.out} (75%) - -diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c -index 68d295d6e3..0ef46163e3 100644 ---- a/block/dirty-bitmap.c -+++ b/block/dirty-bitmap.c -@@ -193,7 +193,7 @@ int bdrv_dirty_bitmap_check(const BdrvDirtyBitmap *bitmap, uint32_t flags, - error_setg(errp, "Bitmap '%s' is inconsistent and cannot be used", - bitmap->name); - error_append_hint(errp, "Try block-dirty-bitmap-remove to delete" -- " this bitmap from disk"); -+ " this bitmap from disk\n"); - return -1; - } - -diff --git a/tests/qemu-iotests/291 b/tests/qemu-iotests/tests/qemu-img-bitmaps -similarity index 87% -rename from tests/qemu-iotests/291 -rename to tests/qemu-iotests/tests/qemu-img-bitmaps -index 20efb080a6..409c4497a3 100755 ---- a/tests/qemu-iotests/291 -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps -@@ -3,7 +3,7 @@ - # - # Test qemu-img bitmap handling - # --# Copyright (C) 2018-2020 Red Hat, Inc. -+# Copyright (C) 2018-2021 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 -@@ -27,11 +27,13 @@ status=1 # failure is the default! - _cleanup() - { - _cleanup_test_img -+ _rm_test_img "$TEST_IMG.copy" - nbd_server_stop - } - trap "_cleanup; exit \$status" 0 1 2 3 15 - - # get standard environment, filters and checks -+cd .. - . ./common.rc - . ./common.filter - . ./common.nbd -@@ -129,6 +131,23 @@ $QEMU_IMG map --output=json --image-opts \ - - nbd_server_stop - -+echo -+echo "=== Check handling of inconsistent bitmap ===" -+echo -+ -+# Prepare image with corrupted bitmap -+$QEMU_IO -c abort "$TEST_IMG" 2>/dev/null -+$QEMU_IMG bitmap --add "$TEST_IMG" b4 -+$QEMU_IMG bitmap --remove "$TEST_IMG" b1 -+_img_info --format-specific | _filter_irrelevant_img_info -+echo -+$QEMU_IMG convert --bitmaps -O qcow2 "$TEST_IMG" "$TEST_IMG.copy" && -+ echo "unexpected success" -+# Bug - even though we failed at conversion, we left a file around with -+# a bitmap marked as not corrupt -+TEST_IMG=$TEST_IMG.copy _img_info --format-specific \ -+ | _filter_irrelevant_img_info -+ - # success, all done - echo '*** done' - rm -f $seq.full -diff --git a/tests/qemu-iotests/291.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -similarity index 75% -rename from tests/qemu-iotests/291.out -rename to tests/qemu-iotests/tests/qemu-img-bitmaps.out -index 23411c0ff4..543b028da6 100644 ---- a/tests/qemu-iotests/291.out -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -@@ -1,4 +1,4 @@ --QA output created by 291 -+QA output created by qemu-img-bitmaps - - === Initial image setup === - -@@ -115,4 +115,51 @@ Format specific information: - [{ "start": 0, "length": 2097152, "depth": 0, "zero": false, "data": true, "offset": OFFSET}, - { "start": 2097152, "length": 1048576, "depth": 0, "zero": false, "data": false}, - { "start": 3145728, "length": 7340032, "depth": 0, "zero": false, "data": true, "offset": OFFSET}] -+ -+=== Check handling of inconsistent bitmap === -+ -+image: TEST_DIR/t.IMGFMT -+file format: IMGFMT -+virtual size: 10 MiB (10485760 bytes) -+cluster_size: 65536 -+backing file: TEST_DIR/t.IMGFMT.base -+backing file format: IMGFMT -+Format specific information: -+ bitmaps: -+ [0]: -+ flags: -+ [0]: in-use -+ [1]: auto -+ name: b2 -+ granularity: 65536 -+ [1]: -+ flags: -+ [0]: in-use -+ name: b0 -+ granularity: 65536 -+ [2]: -+ flags: -+ [0]: auto -+ name: b4 -+ granularity: 65536 -+ corrupt: false -+ -+qemu-img: Failed to populate bitmap b0: Bitmap 'b0' is inconsistent and cannot be used -+Try block-dirty-bitmap-remove to delete this bitmap from disk -+image: TEST_DIR/t.IMGFMT.copy -+file format: IMGFMT -+virtual size: 10 MiB (10485760 bytes) -+cluster_size: 65536 -+Format specific information: -+ bitmaps: -+ [0]: -+ flags: -+ name: b0 -+ granularity: 65536 -+ [1]: -+ flags: -+ [0]: auto -+ name: b4 -+ granularity: 65536 -+ corrupt: false - *** done --- -2.27.0 - diff --git a/SOURCES/kvm-iothread-add-aio-max-batch-parameter.patch b/SOURCES/kvm-iothread-add-aio-max-batch-parameter.patch deleted file mode 100644 index 78a6c23..0000000 --- a/SOURCES/kvm-iothread-add-aio-max-batch-parameter.patch +++ /dev/null @@ -1,324 +0,0 @@ -From d8682ef60e3a658d776473fee2299015dd5105d7 Mon Sep 17 00:00:00 2001 -From: Stefano Garzarella -Date: Thu, 29 Jul 2021 07:42:31 -0400 -Subject: [PATCH 18/39] iothread: add aio-max-batch parameter - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [10/15] d033b3c8ddd71bae799103832039d6daa6dfad52 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -The `aio-max-batch` parameter will be propagated to AIO engines -and it will be used to control the maximum number of queued requests. - -When there are in queue a number of requests equal to `aio-max-batch`, -the engine invokes the system call to forward the requests to the kernel. - -This parameter allows us to control the maximum batch size to reduce -the latency that requests might accumulate while queued in the AIO -engine queue. - -If `aio-max-batch` is equal to 0 (default value), the AIO engine will -use its default maximum batch size value. - -Signed-off-by: Stefano Garzarella -Message-id: 20210721094211.69853-3-sgarzare@redhat.com -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 1793ad0247cad35db1ebbc04fbea0446c30a27ca) -Signed-off-by: Stefano Garzarella -Signed-off-by: Miroslav Rezanina ---- - include/block/aio.h | 12 +++++++++ - include/sysemu/iothread.h | 3 +++ - iothread.c | 55 +++++++++++++++++++++++++++++++++++---- - monitor/hmp-cmds.c | 2 ++ - qapi/misc.json | 6 ++++- - qapi/qom.json | 7 ++++- - qemu-options.hx | 8 ++++-- - util/aio-posix.c | 12 +++++++++ - util/aio-win32.c | 5 ++++ - util/async.c | 2 ++ - 10 files changed, 103 insertions(+), 9 deletions(-) - -diff --git a/include/block/aio.h b/include/block/aio.h -index 5f342267d5..ea68a139c8 100644 ---- a/include/block/aio.h -+++ b/include/block/aio.h -@@ -232,6 +232,9 @@ struct AioContext { - int64_t poll_grow; /* polling time growth factor */ - int64_t poll_shrink; /* polling time shrink factor */ - -+ /* AIO engine parameters */ -+ int64_t aio_max_batch; /* maximum number of requests in a batch */ -+ - /* - * List of handlers participating in userspace polling. Protected by - * ctx->list_lock. Iterated and modified mostly by the event loop thread -@@ -727,4 +730,13 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns, - int64_t grow, int64_t shrink, - Error **errp); - -+/** -+ * aio_context_set_aio_params: -+ * @ctx: the aio context -+ * @max_batch: maximum number of requests in a batch, 0 means that the -+ * engine will use its default -+ */ -+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch, -+ Error **errp); -+ - #endif -diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h -index f177142f16..7f714bd136 100644 ---- a/include/sysemu/iothread.h -+++ b/include/sysemu/iothread.h -@@ -37,6 +37,9 @@ struct IOThread { - int64_t poll_max_ns; - int64_t poll_grow; - int64_t poll_shrink; -+ -+ /* AioContext AIO engine parameters */ -+ int64_t aio_max_batch; - }; - typedef struct IOThread IOThread; - -diff --git a/iothread.c b/iothread.c -index a12de6e455..272be5e146 100644 ---- a/iothread.c -+++ b/iothread.c -@@ -159,6 +159,24 @@ static void iothread_init_gcontext(IOThread *iothread) - iothread->main_loop = g_main_loop_new(iothread->worker_context, TRUE); - } - -+static void iothread_set_aio_context_params(IOThread *iothread, Error **errp) -+{ -+ ERRP_GUARD(); -+ -+ aio_context_set_poll_params(iothread->ctx, -+ iothread->poll_max_ns, -+ iothread->poll_grow, -+ iothread->poll_shrink, -+ errp); -+ if (*errp) { -+ return; -+ } -+ -+ aio_context_set_aio_params(iothread->ctx, -+ iothread->aio_max_batch, -+ errp); -+} -+ - static void iothread_complete(UserCreatable *obj, Error **errp) - { - Error *local_error = NULL; -@@ -178,11 +196,7 @@ static void iothread_complete(UserCreatable *obj, Error **errp) - */ - iothread_init_gcontext(iothread); - -- aio_context_set_poll_params(iothread->ctx, -- iothread->poll_max_ns, -- iothread->poll_grow, -- iothread->poll_shrink, -- &local_error); -+ iothread_set_aio_context_params(iothread, &local_error); - if (local_error) { - error_propagate(errp, local_error); - aio_context_unref(iothread->ctx); -@@ -219,6 +233,9 @@ static PollParamInfo poll_grow_info = { - static PollParamInfo poll_shrink_info = { - "poll-shrink", offsetof(IOThread, poll_shrink), - }; -+static PollParamInfo aio_max_batch_info = { -+ "aio-max-batch", offsetof(IOThread, aio_max_batch), -+}; - - static void iothread_get_param(Object *obj, Visitor *v, - const char *name, void *opaque, Error **errp) -@@ -278,6 +295,29 @@ static void iothread_set_poll_param(Object *obj, Visitor *v, - } - } - -+static void iothread_get_aio_param(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ -+ iothread_get_param(obj, v, name, opaque, errp); -+} -+ -+static void iothread_set_aio_param(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ IOThread *iothread = IOTHREAD(obj); -+ -+ if (!iothread_set_param(obj, v, name, opaque, errp)) { -+ return; -+ } -+ -+ if (iothread->ctx) { -+ aio_context_set_aio_params(iothread->ctx, -+ iothread->aio_max_batch, -+ errp); -+ } -+} -+ - static void iothread_class_init(ObjectClass *klass, void *class_data) - { - UserCreatableClass *ucc = USER_CREATABLE_CLASS(klass); -@@ -295,6 +335,10 @@ static void iothread_class_init(ObjectClass *klass, void *class_data) - iothread_get_poll_param, - iothread_set_poll_param, - NULL, &poll_shrink_info); -+ object_class_property_add(klass, "aio-max-batch", "int", -+ iothread_get_aio_param, -+ iothread_set_aio_param, -+ NULL, &aio_max_batch_info); - } - - static const TypeInfo iothread_info = { -@@ -344,6 +388,7 @@ static int query_one_iothread(Object *object, void *opaque) - info->poll_max_ns = iothread->poll_max_ns; - info->poll_grow = iothread->poll_grow; - info->poll_shrink = iothread->poll_shrink; -+ info->aio_max_batch = iothread->aio_max_batch; - - QAPI_LIST_APPEND(*tail, info); - return 0; -diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c -index cc15d9b6ee..2905bc1594 100644 ---- a/monitor/hmp-cmds.c -+++ b/monitor/hmp-cmds.c -@@ -1889,6 +1889,8 @@ void hmp_info_iothreads(Monitor *mon, const QDict *qdict) - monitor_printf(mon, " poll-max-ns=%" PRId64 "\n", value->poll_max_ns); - monitor_printf(mon, " poll-grow=%" PRId64 "\n", value->poll_grow); - monitor_printf(mon, " poll-shrink=%" PRId64 "\n", value->poll_shrink); -+ monitor_printf(mon, " aio-max-batch=%" PRId64 "\n", -+ value->aio_max_batch); - } - - qapi_free_IOThreadInfoList(info_list); -diff --git a/qapi/misc.json b/qapi/misc.json -index 156f98203e..5c2ca3b556 100644 ---- a/qapi/misc.json -+++ b/qapi/misc.json -@@ -86,6 +86,9 @@ - # @poll-shrink: how many ns will be removed from polling time, 0 means that - # it's not configured (since 2.9) - # -+# @aio-max-batch: maximum number of requests in a batch for the AIO engine, -+# 0 means that the engine will use its default (since 6.1) -+# - # Since: 2.0 - ## - { 'struct': 'IOThreadInfo', -@@ -93,7 +96,8 @@ - 'thread-id': 'int', - 'poll-max-ns': 'int', - 'poll-grow': 'int', -- 'poll-shrink': 'int' } } -+ 'poll-shrink': 'int', -+ 'aio-max-batch': 'int' } } - - ## - # @query-iothreads: -diff --git a/qapi/qom.json b/qapi/qom.json -index cd0e76d564..f361157903 100644 ---- a/qapi/qom.json -+++ b/qapi/qom.json -@@ -516,12 +516,17 @@ - # algorithm detects it is spending too long polling without - # encountering events. 0 selects a default behaviour (default: 0) - # -+# @aio-max-batch: maximum number of requests in a batch for the AIO engine, -+# 0 means that the engine will use its default -+# (default:0, since 6.1) -+# - # Since: 2.0 - ## - { 'struct': 'IothreadProperties', - 'data': { '*poll-max-ns': 'int', - '*poll-grow': 'int', -- '*poll-shrink': 'int' } } -+ '*poll-shrink': 'int', -+ '*aio-max-batch': 'int' } } - - ## - # @MemoryBackendProperties: -diff --git a/qemu-options.hx b/qemu-options.hx -index 79ca09feac..d5f1ec27c5 100644 ---- a/qemu-options.hx -+++ b/qemu-options.hx -@@ -5185,7 +5185,7 @@ SRST - - CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB - -- ``-object iothread,id=id,poll-max-ns=poll-max-ns,poll-grow=poll-grow,poll-shrink=poll-shrink`` -+ ``-object iothread,id=id,poll-max-ns=poll-max-ns,poll-grow=poll-grow,poll-shrink=poll-shrink,aio-max-batch=aio-max-batch`` - Creates a dedicated event loop thread that devices can be - assigned to. This is known as an IOThread. By default device - emulation happens in vCPU threads or the main event loop thread. -@@ -5221,7 +5221,11 @@ SRST - the polling time when the algorithm detects it is spending too - long polling without encountering events. - -- The polling parameters can be modified at run-time using the -+ The ``aio-max-batch`` parameter is the maximum number of requests -+ in a batch for the AIO engine, 0 means that the engine will use -+ its default. -+ -+ The IOThread parameters can be modified at run-time using the - ``qom-set`` command (where ``iothread1`` is the IOThread's - ``id``): - -diff --git a/util/aio-posix.c b/util/aio-posix.c -index 30f5354b1e..2b86777e91 100644 ---- a/util/aio-posix.c -+++ b/util/aio-posix.c -@@ -716,3 +716,15 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns, - - aio_notify(ctx); - } -+ -+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch, -+ Error **errp) -+{ -+ /* -+ * No thread synchronization here, it doesn't matter if an incorrect value -+ * is used once. -+ */ -+ ctx->aio_max_batch = max_batch; -+ -+ aio_notify(ctx); -+} -diff --git a/util/aio-win32.c b/util/aio-win32.c -index 168717b51b..d5b09a1193 100644 ---- a/util/aio-win32.c -+++ b/util/aio-win32.c -@@ -440,3 +440,8 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns, - error_setg(errp, "AioContext polling is not implemented on Windows"); - } - } -+ -+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch, -+ Error **errp) -+{ -+} -diff --git a/util/async.c b/util/async.c -index 674dbefb7c..6a9588d86b 100644 ---- a/util/async.c -+++ b/util/async.c -@@ -537,6 +537,8 @@ AioContext *aio_context_new(Error **errp) - ctx->poll_grow = 0; - ctx->poll_shrink = 0; - -+ ctx->aio_max_batch = 0; -+ - return ctx; - fail: - g_source_destroy(&ctx->source); --- -2.27.0 - diff --git a/SOURCES/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch b/SOURCES/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch deleted file mode 100644 index 8910da2..0000000 --- a/SOURCES/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 6f827f890e68c3b8bda80822edc09369e93da01f Mon Sep 17 00:00:00 2001 -From: Stefano Garzarella -Date: Thu, 29 Jul 2021 07:42:29 -0400 -Subject: [PATCH 17/39] iothread: generalize - iothread_set_param/iothread_get_param - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [9/15] 7c624847cfc636bdfa0d4f35062500a7f9e8437f (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Changes in preparation for next patches where we add a new -parameter not related to the poll mechanism. - -Let's add two new generic functions (iothread_set_param and -iothread_get_param) that we use to set and get IOThread -parameters. - -Signed-off-by: Stefano Garzarella -Message-id: 20210721094211.69853-2-sgarzare@redhat.com -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit 0445409d7497bededa1047f0d8298b0d4bb3b1a3) -Signed-off-by: Stefano Garzarella -Signed-off-by: Miroslav Rezanina ---- - iothread.c | 27 +++++++++++++++++++++++---- - 1 file changed, 23 insertions(+), 4 deletions(-) - -diff --git a/iothread.c b/iothread.c -index 7f086387be..a12de6e455 100644 ---- a/iothread.c -+++ b/iothread.c -@@ -220,7 +220,7 @@ static PollParamInfo poll_shrink_info = { - "poll-shrink", offsetof(IOThread, poll_shrink), - }; - --static void iothread_get_poll_param(Object *obj, Visitor *v, -+static void iothread_get_param(Object *obj, Visitor *v, - const char *name, void *opaque, Error **errp) - { - IOThread *iothread = IOTHREAD(obj); -@@ -230,7 +230,7 @@ static void iothread_get_poll_param(Object *obj, Visitor *v, - visit_type_int64(v, name, field, errp); - } - --static void iothread_set_poll_param(Object *obj, Visitor *v, -+static bool iothread_set_param(Object *obj, Visitor *v, - const char *name, void *opaque, Error **errp) - { - IOThread *iothread = IOTHREAD(obj); -@@ -239,17 +239,36 @@ static void iothread_set_poll_param(Object *obj, Visitor *v, - int64_t value; - - if (!visit_type_int64(v, name, &value, errp)) { -- return; -+ return false; - } - - if (value < 0) { - error_setg(errp, "%s value must be in range [0, %" PRId64 "]", - info->name, INT64_MAX); -- return; -+ return false; - } - - *field = value; - -+ return true; -+} -+ -+static void iothread_get_poll_param(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ -+ iothread_get_param(obj, v, name, opaque, errp); -+} -+ -+static void iothread_set_poll_param(Object *obj, Visitor *v, -+ const char *name, void *opaque, Error **errp) -+{ -+ IOThread *iothread = IOTHREAD(obj); -+ -+ if (!iothread_set_param(obj, v, name, opaque, errp)) { -+ return; -+ } -+ - if (iothread->ctx) { - aio_context_set_poll_params(iothread->ctx, - iothread->poll_max_ns, --- -2.27.0 - diff --git a/SOURCES/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch b/SOURCES/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch deleted file mode 100644 index 93fcc9b..0000000 --- a/SOURCES/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 6f4cb3e1e5d718356f16645e806d47cb2159ae98 Mon Sep 17 00:00:00 2001 -From: Stefano Garzarella -Date: Thu, 29 Jul 2021 07:42:33 -0400 -Subject: [PATCH 19/39] linux-aio: limit the batch size using `aio-max-batch` - parameter - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [11/15] 44e2f2d294d8ed1d13fb29c5c1599543b86c67e5 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -When there are multiple queues attached to the same AIO context, -some requests may experience high latency, since in the worst case -the AIO engine queue is only flushed when it is full (MAX_EVENTS) or -there are no more queues plugged. - -Commit 2558cb8dd4 ("linux-aio: increasing MAX_EVENTS to a larger -hardcoded value") changed MAX_EVENTS from 128 to 1024, to increase -the number of in-flight requests. But this change also increased -the potential maximum batch to 1024 elements. - -When there is a single queue attached to the AIO context, the issue -is mitigated from laio_io_unplug() that will flush the queue every -time is invoked since there can't be others queue plugged. - -Let's use the new `aio-max-batch` IOThread parameter to mitigate -this issue, limiting the number of requests in a batch. - -We also define a default value (32): this value is obtained running -some benchmarks and it represents a good tradeoff between the latency -increase while a request is queued and the cost of the io_submit(2) -system call. - -Signed-off-by: Stefano Garzarella -Message-id: 20210721094211.69853-4-sgarzare@redhat.com -Signed-off-by: Stefan Hajnoczi -(cherry picked from commit d7ddd0a1618a75b31dc308bb37365ce1da972154) -Signed-off-by: Stefano Garzarella -Signed-off-by: Miroslav Rezanina ---- - block/linux-aio.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/block/linux-aio.c b/block/linux-aio.c -index 3c0527c2bf..0dab507b71 100644 ---- a/block/linux-aio.c -+++ b/block/linux-aio.c -@@ -28,6 +28,9 @@ - */ - #define MAX_EVENTS 1024 - -+/* Maximum number of requests in a batch. (default value) */ -+#define DEFAULT_MAX_BATCH 32 -+ - struct qemu_laiocb { - Coroutine *co; - LinuxAioState *ctx; -@@ -351,6 +354,10 @@ static int laio_do_submit(int fd, struct qemu_laiocb *laiocb, off_t offset, - LinuxAioState *s = laiocb->ctx; - struct iocb *iocbs = &laiocb->iocb; - QEMUIOVector *qiov = laiocb->qiov; -+ int64_t max_batch = s->aio_context->aio_max_batch ?: DEFAULT_MAX_BATCH; -+ -+ /* limit the batch with the number of available events */ -+ max_batch = MIN_NON_ZERO(MAX_EVENTS - s->io_q.in_flight, max_batch); - - switch (type) { - case QEMU_AIO_WRITE: -@@ -371,7 +378,7 @@ static int laio_do_submit(int fd, struct qemu_laiocb *laiocb, off_t offset, - s->io_q.in_queue++; - if (!s->io_q.blocked && - (!s->io_q.plugged || -- s->io_q.in_flight + s->io_q.in_queue >= MAX_EVENTS)) { -+ s->io_q.in_queue >= max_batch)) { - ioq_submit(s); - } - --- -2.27.0 - diff --git a/SOURCES/kvm-migration-Add-migrate_add_blocker_internal.patch b/SOURCES/kvm-migration-Add-migrate_add_blocker_internal.patch new file mode 100644 index 0000000..f00183f --- /dev/null +++ b/SOURCES/kvm-migration-Add-migrate_add_blocker_internal.patch @@ -0,0 +1,100 @@ +From 58d47d795b91beb1f87929fb07d9f1b4af79cb14 Mon Sep 17 00:00:00 2001 +From: Peter Xu +Date: Wed, 22 Sep 2021 12:20:08 -0400 +Subject: [PATCH 2/6] migration: Add migrate_add_blocker_internal() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Peter Xu +RH-MergeRequest: 51: dump-guest-memory: Add blocker for migration +RH-Commit: [2/3] 44cf3879ee66cc9974dd3d8a5f9a0d4f762b7c01 (peterx/qemu-kvm) +RH-Bugzilla: 1996609 +RH-Acked-by: Dr. David Alan Gilbert +RH-Acked-by: quintela1 +RH-Acked-by: Laszlo Ersek + +An internal version that removes -only-migratable implications. It can be used +for temporary migration blockers like dump-guest-memory. + +Reviewed-by: Marc-André Lureau +Reviewed-by: Juan Quintela +Signed-off-by: Peter Xu +Signed-off-by: Juan Quintela +(cherry picked from commit 60fd680193119e7e4d50eccff7b55a0aadc934ab) +Signed-off-by: Peter Xu +--- + include/migration/blocker.h | 16 ++++++++++++++++ + migration/migration.c | 21 +++++++++++++-------- + 2 files changed, 29 insertions(+), 8 deletions(-) + +diff --git a/include/migration/blocker.h b/include/migration/blocker.h +index acd27018e9..9cebe2ba06 100644 +--- a/include/migration/blocker.h ++++ b/include/migration/blocker.h +@@ -25,6 +25,22 @@ + */ + int migrate_add_blocker(Error *reason, Error **errp); + ++/** ++ * @migrate_add_blocker_internal - prevent migration from proceeding without ++ * only-migrate implications ++ * ++ * @reason - an error to be returned whenever migration is attempted ++ * ++ * @errp - [out] The reason (if any) we cannot block migration right now. ++ * ++ * @returns - 0 on success, -EBUSY on failure, with errp set. ++ * ++ * Some of the migration blockers can be temporary (e.g., for a few seconds), ++ * so it shouldn't need to conflict with "-only-migratable". For those cases, ++ * we can call this function rather than @migrate_add_blocker(). ++ */ ++int migrate_add_blocker_internal(Error *reason, Error **errp); ++ + /** + * @migrate_del_blocker - remove a blocking error from migration + * +diff --git a/migration/migration.c b/migration/migration.c +index f476e2101e..2aaf2fd449 100644 +--- a/migration/migration.c ++++ b/migration/migration.c +@@ -2053,15 +2053,8 @@ void migrate_init(MigrationState *s) + s->threshold_size = 0; + } + +-int migrate_add_blocker(Error *reason, Error **errp) ++int migrate_add_blocker_internal(Error *reason, Error **errp) + { +- if (only_migratable) { +- error_propagate_prepend(errp, error_copy(reason), +- "disallowing migration blocker " +- "(--only-migratable) for: "); +- return -EACCES; +- } +- + /* Snapshots are similar to migrations, so check RUN_STATE_SAVE_VM too. */ + if (runstate_check(RUN_STATE_SAVE_VM) || !migration_is_idle()) { + error_propagate_prepend(errp, error_copy(reason), +@@ -2074,6 +2067,18 @@ int migrate_add_blocker(Error *reason, Error **errp) + return 0; + } + ++int migrate_add_blocker(Error *reason, Error **errp) ++{ ++ if (only_migratable) { ++ error_propagate_prepend(errp, error_copy(reason), ++ "disallowing migration blocker " ++ "(--only-migratable) for: "); ++ return -EACCES; ++ } ++ ++ return migrate_add_blocker_internal(reason, errp); ++} ++ + void migrate_del_blocker(Error *reason) + { + migration_blockers = g_slist_remove(migration_blockers, reason); +-- +2.27.0 + diff --git a/SOURCES/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch b/SOURCES/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch deleted file mode 100644 index 980466c..0000000 --- a/SOURCES/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 5e1535771bba299aae4de2d810100fa7fedfeca8 Mon Sep 17 00:00:00 2001 -From: Peter Xu -Date: Tue, 29 Jun 2021 14:13:56 -0400 -Subject: [PATCH 02/39] migration: Allow reset of postcopy_recover_triggered - when failed -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Leonardo Brás -RH-MergeRequest: 25: migration: Move yank outside qemu_start_incoming_migration() -RH-Commit: [2/2] b766a7f36df4f889d74a2e8d518e1100e52ab726 (LeoBras/centos-qemu-kvm) -RH-Bugzilla: 1974683 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Peter Xu > - -It's possible qemu_start_incoming_migration() failed at any point, when it -happens we should reset postcopy_recover_triggered to false so that the user -can still retry with a saner incoming port. - -Signed-off-by: Peter Xu -Message-Id: <20210629181356.217312-3-peterx@redhat.com> -Reviewed-by: Dr. David Alan Gilbert -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit b7f9afd48e7bc5c341e55348f2c2eed08314be7d) -Fixes: b5eea99e ("migration: Add yank feature", 2021-01-13) -Signed-off-by: Leonardo Bras -Signed-off-by: Miroslav Rezanina ---- - migration/migration.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/migration/migration.c b/migration/migration.c -index f077640df2..9d185f0e28 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -2109,6 +2109,13 @@ void qmp_migrate_recover(const char *uri, Error **errp) - { - MigrationIncomingState *mis = migration_incoming_get_current(); - -+ /* -+ * Don't even bother to use ERRP_GUARD() as it _must_ always be set by -+ * callers (no one should ignore a recover failure); if there is, it's a -+ * programming error. -+ */ -+ assert(errp); -+ - if (mis->state != MIGRATION_STATUS_POSTCOPY_PAUSED) { - error_setg(errp, "Migrate recover can only be run " - "when postcopy is paused."); -@@ -2127,6 +2134,12 @@ void qmp_migrate_recover(const char *uri, Error **errp) - * to continue using that newly established channel. - */ - qemu_start_incoming_migration(uri, errp); -+ -+ /* Safe to dereference with the assert above */ -+ if (*errp) { -+ /* Reset the flag so user could still retry */ -+ qatomic_set(&mis->postcopy_recover_triggered, false); -+ } - } - - void qmp_migrate_pause(Error **errp) --- -2.27.0 - diff --git a/SOURCES/kvm-migration-Make-migration-blocker-work-for-snapshots-.patch b/SOURCES/kvm-migration-Make-migration-blocker-work-for-snapshots-.patch new file mode 100644 index 0000000..afdbdb1 --- /dev/null +++ b/SOURCES/kvm-migration-Make-migration-blocker-work-for-snapshots-.patch @@ -0,0 +1,61 @@ +From 0a9b55b44c5c548ff6f3da7335acf2138ecb4376 Mon Sep 17 00:00:00 2001 +From: Peter Xu +Date: Wed, 22 Sep 2021 12:20:07 -0400 +Subject: [PATCH 1/6] migration: Make migration blocker work for snapshots too +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Peter Xu +RH-MergeRequest: 51: dump-guest-memory: Add blocker for migration +RH-Commit: [1/3] 241888d12c7197dd4ee1e1ba6e3115f70901636e (peterx/qemu-kvm) +RH-Bugzilla: 1996609 +RH-Acked-by: Dr. David Alan Gilbert +RH-Acked-by: quintela1 +RH-Acked-by: Laszlo Ersek + +save_snapshot() checks migration blocker, which looks sane. At the meantime we +should also teach the blocker add helper to fail if during a snapshot, just +like for migrations. + +Reviewed-by: Marc-André Lureau +Signed-off-by: Peter Xu +Reviewed-by: Juan Quintela +Signed-off-by: Juan Quintela +(cherry picked from commit 4c170330aae4a4ed75c3a8638b7d4c5d9f365244) +Signed-off-by: Peter Xu +--- + migration/migration.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/migration/migration.c b/migration/migration.c +index 041b8451a6..f476e2101e 100644 +--- a/migration/migration.c ++++ b/migration/migration.c +@@ -2062,15 +2062,16 @@ int migrate_add_blocker(Error *reason, Error **errp) + return -EACCES; + } + +- if (migration_is_idle()) { +- migration_blockers = g_slist_prepend(migration_blockers, reason); +- return 0; ++ /* Snapshots are similar to migrations, so check RUN_STATE_SAVE_VM too. */ ++ if (runstate_check(RUN_STATE_SAVE_VM) || !migration_is_idle()) { ++ error_propagate_prepend(errp, error_copy(reason), ++ "disallowing migration blocker " ++ "(migration/snapshot in progress) for: "); ++ return -EBUSY; + } + +- error_propagate_prepend(errp, error_copy(reason), +- "disallowing migration blocker " +- "(migration in progress) for: "); +- return -EBUSY; ++ migration_blockers = g_slist_prepend(migration_blockers, reason); ++ return 0; + } + + void migrate_del_blocker(Error *reason) +-- +2.27.0 + diff --git a/SOURCES/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch b/SOURCES/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch deleted file mode 100644 index d163571..0000000 --- a/SOURCES/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 7726f6461eebf2c4a4b129f1c98add25c0b1bee2 Mon Sep 17 00:00:00 2001 -From: Peter Xu -Date: Thu, 29 Jul 2021 07:42:16 -0400 -Subject: [PATCH 12/39] migration: Move bitmap_mutex out of - migration_bitmap_clear_dirty() - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [4/15] cc207372dab253a4db3b6d351fa2fb2f442437ad (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Taking the mutex every time for each dirty bit to clear is too slow, especially -we'll take/release even if the dirty bit is cleared. So far it's only used to -sync with special cases with qemu_guest_free_page_hint() against migration -thread, nothing really that serious yet. Let's move the lock to be upper. - -There're two callers of migration_bitmap_clear_dirty(). - -For migration, move it into ram_save_iterate(). With the help of MAX_WAIT -logic, we'll only run ram_save_iterate() for no more than 50ms-ish time, so -taking the lock once there at the entry. It also means any call sites to -qemu_guest_free_page_hint() can be delayed; but it should be very rare, only -during migration, and I don't see a problem with it. - -For COLO, move it up to colo_flush_ram_cache(). I think COLO forgot to take -that lock even when calling ramblock_sync_dirty_bitmap(), where another example -is migration_bitmap_sync() who took it right. So let the mutex cover both the -ramblock_sync_dirty_bitmap() and migration_bitmap_clear_dirty() calls. - -It's even possible to drop the lock so we use atomic operations upon rb->bmap -and the variable migration_dirty_pages. I didn't do it just to still be safe, -also not predictable whether the frequent atomic ops could bring overhead too -e.g. on huge vms when it happens very often. When that really comes, we can -keep a local counter and periodically call atomic ops. Keep it simple for now. - -Cc: Wei Wang -Cc: David Hildenbrand -Cc: Hailiang Zhang -Cc: Dr. David Alan Gilbert -Cc: Juan Quintela -Cc: Leonardo Bras Soares Passos -Signed-off-by: Peter Xu -Message-Id: <20210630200805.280905-1-peterx@redhat.com> -Reviewed-by: Wei Wang -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit 63268c4970a5f126cc9af75f3ccb8057abef5ec0) -Signed-off-by: Peter Xu -Signed-off-by: Miroslav Rezanina ---- - migration/ram.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/migration/ram.c b/migration/ram.c -index 4682f3625c..5d64917dce 100644 ---- a/migration/ram.c -+++ b/migration/ram.c -@@ -819,8 +819,6 @@ static inline bool migration_bitmap_clear_dirty(RAMState *rs, - { - bool ret; - -- QEMU_LOCK_GUARD(&rs->bitmap_mutex); -- - /* - * Clear dirty bitmap if needed. This _must_ be called before we - * send any of the page in the chunk because we need to make sure -@@ -2869,6 +2867,14 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) - goto out; - } - -+ /* -+ * We'll take this lock a little bit long, but it's okay for two reasons. -+ * Firstly, the only possible other thread to take it is who calls -+ * qemu_guest_free_page_hint(), which should be rare; secondly, see -+ * MAX_WAIT (if curious, further see commit 4508bd9ed8053ce) below, which -+ * guarantees that we'll at least released it in a regular basis. -+ */ -+ qemu_mutex_lock(&rs->bitmap_mutex); - WITH_RCU_READ_LOCK_GUARD() { - if (ram_list.version != rs->last_version) { - ram_state_reset(rs); -@@ -2928,6 +2934,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) - i++; - } - } -+ qemu_mutex_unlock(&rs->bitmap_mutex); - - /* - * Must occur before EOS (or any QEMUFile operation) -@@ -3710,6 +3717,7 @@ void colo_flush_ram_cache(void) - unsigned long offset = 0; - - memory_global_dirty_log_sync(); -+ qemu_mutex_lock(&ram_state->bitmap_mutex); - WITH_RCU_READ_LOCK_GUARD() { - RAMBLOCK_FOREACH_NOT_IGNORED(block) { - ramblock_sync_dirty_bitmap(ram_state, block); -@@ -3738,6 +3746,7 @@ void colo_flush_ram_cache(void) - } - } - trace_colo_flush_ram_cache_end(); -+ qemu_mutex_unlock(&ram_state->bitmap_mutex); - } - - /** --- -2.27.0 - diff --git a/SOURCES/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch b/SOURCES/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch deleted file mode 100644 index 9822ab6..0000000 --- a/SOURCES/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 4c11e06222ca5a88f48f2d47adc3a7da306bb345 Mon Sep 17 00:00:00 2001 -From: Peter Xu -Date: Tue, 29 Jun 2021 14:13:55 -0400 -Subject: [PATCH 01/39] migration: Move yank outside - qemu_start_incoming_migration() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Leonardo Brás -RH-MergeRequest: 25: migration: Move yank outside qemu_start_incoming_migration() -RH-Commit: [1/2] e5694b0ae9a55f6b147c336e86fce6f4f2163db6 (LeoBras/centos-qemu-kvm) -RH-Bugzilla: 1974683 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Peter Xu > - -Starting from commit b5eea99ec2f5c, qmp_migrate_recover() calls unregister -before calling qemu_start_incoming_migration(). I believe it wanted to mitigate -the next call to yank_register_instance(), but I think that's wrong. - -Firstly, if during recover, we should keep the yank instance there, not -"quickly removing and adding it back". - -Meanwhile, calling qmp_migrate_recover() twice with b5eea99ec2f5c will directly -crash the dest qemu (right now it can't; but it'll start to work right after -the next patch) because the 1st call of qmp_migrate_recover() will unregister -permanently when the channel failed to establish, then the 2nd call of -qmp_migrate_recover() crashes at yank_unregister_instance(). - -This patch fixes it by moving yank ops out of qemu_start_incoming_migration() -into qmp_migrate_incoming. For qmp_migrate_recover(), drop the unregister of -yank instance too since we keep it there during the recovery phase. - -Signed-off-by: Peter Xu -Reviewed-by: Dr. David Alan Gilbert -Message-Id: <20210629181356.217312-2-peterx@redhat.com> -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit cc48c587d25ff5dd7dddb4e5072de9ca8464c832) -Fixes: b5eea99e ("migration: Add yank feature", 2021-01-13) -Signed-off-by: Leonardo Bras -Signed-off-by: Miroslav Rezanina ---- - migration/migration.c | 11 +++++------ - 1 file changed, 5 insertions(+), 6 deletions(-) - -diff --git a/migration/migration.c b/migration/migration.c -index 4afc6069b6..f077640df2 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -454,10 +454,6 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) - { - const char *p = NULL; - -- if (!yank_register_instance(MIGRATION_YANK_INSTANCE, errp)) { -- return; -- } -- - qapi_event_send_migration(MIGRATION_STATUS_SETUP); - if (strstart(uri, "tcp:", &p) || - strstart(uri, "unix:", NULL) || -@@ -472,7 +468,6 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) - } else if (strstart(uri, "fd:", &p)) { - fd_start_incoming_migration(p, errp); - } else { -- yank_unregister_instance(MIGRATION_YANK_INSTANCE); - error_setg(errp, "unknown migration protocol: %s", uri); - } - } -@@ -2095,9 +2090,14 @@ void qmp_migrate_incoming(const char *uri, Error **errp) - return; - } - -+ if (!yank_register_instance(MIGRATION_YANK_INSTANCE, errp)) { -+ return; -+ } -+ - qemu_start_incoming_migration(uri, &local_err); - - if (local_err) { -+ yank_unregister_instance(MIGRATION_YANK_INSTANCE); - error_propagate(errp, local_err); - return; - } -@@ -2126,7 +2126,6 @@ void qmp_migrate_recover(const char *uri, Error **errp) - * only re-setup the migration stream and poke existing migration - * to continue using that newly established channel. - */ -- yank_unregister_instance(MIGRATION_YANK_INSTANCE); - qemu_start_incoming_migration(uri, errp); - } - --- -2.27.0 - diff --git a/SOURCES/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch b/SOURCES/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch deleted file mode 100644 index c0cf7e6..0000000 --- a/SOURCES/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 0f41423f2bb57e77400cfec0683b7514c9798c55 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Wed, 4 Aug 2021 07:10:13 -0400 -Subject: [PATCH 22/39] migration: failover: continue to wait card unplug on - error - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [14/15] e3bfdeee808b2ecd5b141464193b6ee97a4bca3a (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -If the user cancels the migration in the unplug-wait state, -QEMU will try to plug back the card and this fails because the card -is partially unplugged. -To avoid the problem, continue to wait the card unplug, but to -allow the migration to be canceled if the card never finishes to unplug -use a timeout. - -Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1976852 -Signed-off-by: Laurent Vivier -Reviewed-by: Dr. David Alan Gilbert -Message-Id: <20210629155007.629086-3-lvivier@redhat.com> -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit 944bc528421aa848ca218ee535ea923a4147a525) -Signed-off-by: Laurent Vivier -Signed-off-by: Miroslav Rezanina ---- - migration/migration.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/migration/migration.c b/migration/migration.c -index 58df1dac05..fc1d0db04a 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -3696,6 +3696,17 @@ static void qemu_savevm_wait_unplug(MigrationState *s, int old_state, - qemu_savevm_state_guest_unplug_pending()) { - qemu_sem_timedwait(&s->wait_unplug_sem, 250); - } -+ if (s->state != MIGRATION_STATUS_WAIT_UNPLUG) { -+ int timeout = 120; /* 30 seconds */ -+ /* -+ * migration has been canceled -+ * but as we have started an unplug we must wait the end -+ * to be able to plug back the card -+ */ -+ while (timeout-- && qemu_savevm_state_guest_unplug_pending()) { -+ qemu_sem_timedwait(&s->wait_unplug_sem, 250); -+ } -+ } - - migrate_set_state(&s->state, MIGRATION_STATUS_WAIT_UNPLUG, new_state); - } else { --- -2.27.0 - diff --git a/SOURCES/kvm-migration-failover-reset-partially_hotplugged.patch b/SOURCES/kvm-migration-failover-reset-partially_hotplugged.patch deleted file mode 100644 index 97fb427..0000000 --- a/SOURCES/kvm-migration-failover-reset-partially_hotplugged.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 2e07c4c66a1199ef33fb2e89164e03ca2acdcf10 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Thu, 29 Jul 2021 07:42:12 -0400 -Subject: [PATCH 10/39] migration: failover: reset partially_hotplugged - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [2/15] b01f5640ce93192b2239ad4ef15ff53d977f2341 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -When the card is plugged back, reset the partially_hotplugged flag to false - -Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1787194 -Signed-off-by: Laurent Vivier -Message-Id: <20210629152937.619193-1-lvivier@redhat.com> -Reviewed-by: Juan Quintela -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 109c20ea28cc0d82fa353e692345b172cb5721cc) -Signed-off-by: Laurent Vivier -Signed-off-by: Miroslav Rezanina ---- - hw/net/virtio-net.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c -index 914051feb7..c2e32fedbf 100644 ---- a/hw/net/virtio-net.c -+++ b/hw/net/virtio-net.c -@@ -3134,6 +3134,7 @@ static bool failover_replug_primary(VirtIONet *n, DeviceState *dev, - } - hotplug_handler_plug(hotplug_ctrl, dev, &err); - } -+ pdev->partially_hotplugged = false; - - out: - error_propagate(errp, err); --- -2.27.0 - diff --git a/SOURCES/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch b/SOURCES/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch deleted file mode 100644 index 524cda3..0000000 --- a/SOURCES/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch +++ /dev/null @@ -1,118 +0,0 @@ -From e9848f4a4f45960bff1a2a7bc4a4670670de37a5 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Wed, 4 Aug 2021 07:10:12 -0400 -Subject: [PATCH 21/39] migration: move wait-unplug loop to its own function - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [13/15] ab3f26a86e4ea955678323608512e54af2a7c83b (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -The loop is used in migration_thread() and bg_migration_thread(), -so we can move it to its own function and call it from these both places. - -Moreover, in migration_thread() we have a wrong state transition from -SETUP to ACTIVE while state could be WAIT_UNPLUG. This is correctly -managed in bg_migration_thread() so use this code instead. - -Signed-off-by: Laurent Vivier -Message-Id: <20210629155007.629086-2-lvivier@redhat.com> -Reviewed-by: Dr. David Alan Gilbert -Reviewed-by: Juan Quintela -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit fde93d99d9c208c07e2dcc24cd04e824d2b65b35) -Signed-off-by: Laurent Vivier -Signed-off-by: Miroslav Rezanina ---- - migration/migration.c | 54 +++++++++++++++++++++---------------------- - 1 file changed, 26 insertions(+), 28 deletions(-) - -diff --git a/migration/migration.c b/migration/migration.c -index 9cf1cde39d..58df1dac05 100644 ---- a/migration/migration.c -+++ b/migration/migration.c -@@ -3681,6 +3681,28 @@ bool migration_rate_limit(void) - return urgent; - } - -+/* -+ * if failover devices are present, wait they are completely -+ * unplugged -+ */ -+ -+static void qemu_savevm_wait_unplug(MigrationState *s, int old_state, -+ int new_state) -+{ -+ if (qemu_savevm_state_guest_unplug_pending()) { -+ migrate_set_state(&s->state, old_state, MIGRATION_STATUS_WAIT_UNPLUG); -+ -+ while (s->state == MIGRATION_STATUS_WAIT_UNPLUG && -+ qemu_savevm_state_guest_unplug_pending()) { -+ qemu_sem_timedwait(&s->wait_unplug_sem, 250); -+ } -+ -+ migrate_set_state(&s->state, MIGRATION_STATUS_WAIT_UNPLUG, new_state); -+ } else { -+ migrate_set_state(&s->state, old_state, new_state); -+ } -+} -+ - /* - * Master migration thread on the source VM. - * It drives the migration and pumps the data down the outgoing channel. -@@ -3727,22 +3749,10 @@ static void *migration_thread(void *opaque) - - qemu_savevm_state_setup(s->to_dst_file); - -- if (qemu_savevm_state_guest_unplug_pending()) { -- migrate_set_state(&s->state, MIGRATION_STATUS_SETUP, -- MIGRATION_STATUS_WAIT_UNPLUG); -- -- while (s->state == MIGRATION_STATUS_WAIT_UNPLUG && -- qemu_savevm_state_guest_unplug_pending()) { -- qemu_sem_timedwait(&s->wait_unplug_sem, 250); -- } -- -- migrate_set_state(&s->state, MIGRATION_STATUS_WAIT_UNPLUG, -- MIGRATION_STATUS_ACTIVE); -- } -+ qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP, -+ MIGRATION_STATUS_ACTIVE); - - s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start; -- migrate_set_state(&s->state, MIGRATION_STATUS_SETUP, -- MIGRATION_STATUS_ACTIVE); - - trace_migration_thread_setup_complete(); - -@@ -3850,21 +3860,9 @@ static void *bg_migration_thread(void *opaque) - qemu_savevm_state_header(s->to_dst_file); - qemu_savevm_state_setup(s->to_dst_file); - -- if (qemu_savevm_state_guest_unplug_pending()) { -- migrate_set_state(&s->state, MIGRATION_STATUS_SETUP, -- MIGRATION_STATUS_WAIT_UNPLUG); -- -- while (s->state == MIGRATION_STATUS_WAIT_UNPLUG && -- qemu_savevm_state_guest_unplug_pending()) { -- qemu_sem_timedwait(&s->wait_unplug_sem, 250); -- } -+ qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP, -+ MIGRATION_STATUS_ACTIVE); - -- migrate_set_state(&s->state, MIGRATION_STATUS_WAIT_UNPLUG, -- MIGRATION_STATUS_ACTIVE); -- } else { -- migrate_set_state(&s->state, MIGRATION_STATUS_SETUP, -- MIGRATION_STATUS_ACTIVE); -- } - s->setup_time = qemu_clock_get_ms(QEMU_CLOCK_HOST) - setup_start; - - trace_migration_thread_setup_complete(); --- -2.27.0 - diff --git a/SOURCES/kvm-nbd-server-Use-drained-block-ops-to-quiesce-the-serv.patch b/SOURCES/kvm-nbd-server-Use-drained-block-ops-to-quiesce-the-serv.patch deleted file mode 100644 index af8a82c..0000000 --- a/SOURCES/kvm-nbd-server-Use-drained-block-ops-to-quiesce-the-serv.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 9182af6a819e60a079349fd6d8b28a28adea90b1 Mon Sep 17 00:00:00 2001 -From: Sergio Lopez Pascual -Date: Thu, 17 Jun 2021 09:13:21 -0400 -Subject: [PATCH 06/12] nbd/server: Use drained block ops to quiesce the server -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [4/8] ca32c99563254a8a31104948e41fa691453d0399 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -Before switching between AioContexts we need to make sure that we're -fully quiesced ("nb_requests == 0" for every client) when entering the -drained section. - -To do this, we set "quiescing = true" for every client on -".drained_begin" to prevent new coroutines from being created, and -check if "nb_requests == 0" on ".drained_poll". Finally, once we're -exiting the drained section, on ".drained_end" we set "quiescing = -false" and call "nbd_client_receive_next_request()" to resume the -processing of new requests. - -With these changes, "blk_aio_attach()" and "blk_aio_detach()" can be -reverted to be as simple as they were before f148ae7d36. - -RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1960137 -Suggested-by: Kevin Wolf -Signed-off-by: Sergio Lopez -Message-Id: <20210602060552.17433-3-slp@redhat.com> -Reviewed-by: Vladimir Sementsov-Ogievskiy -Signed-off-by: Kevin Wolf -(cherry picked from commit fd6afc501a019682d1b8468b562355a2887087bd) -Signed-off-by: Sergio Lopez -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - nbd/server.c | 82 ++++++++++++++++++++++++++++++++++++++-------------- - 1 file changed, 61 insertions(+), 21 deletions(-) - -diff --git a/nbd/server.c b/nbd/server.c -index 86a44a9b41..b60ebc3ab6 100644 ---- a/nbd/server.c -+++ b/nbd/server.c -@@ -1513,6 +1513,11 @@ static void nbd_request_put(NBDRequestData *req) - g_free(req); - - client->nb_requests--; -+ -+ if (client->quiescing && client->nb_requests == 0) { -+ aio_wait_kick(); -+ } -+ - nbd_client_receive_next_request(client); - - nbd_client_put(client); -@@ -1530,49 +1535,68 @@ static void blk_aio_attached(AioContext *ctx, void *opaque) - QTAILQ_FOREACH(client, &exp->clients, next) { - qio_channel_attach_aio_context(client->ioc, ctx); - -+ assert(client->nb_requests == 0); - assert(client->recv_coroutine == NULL); - assert(client->send_coroutine == NULL); -- -- if (client->quiescing) { -- client->quiescing = false; -- nbd_client_receive_next_request(client); -- } - } - } - --static void nbd_aio_detach_bh(void *opaque) -+static void blk_aio_detach(void *opaque) - { - NBDExport *exp = opaque; - NBDClient *client; - -+ trace_nbd_blk_aio_detach(exp->name, exp->common.ctx); -+ - QTAILQ_FOREACH(client, &exp->clients, next) { - qio_channel_detach_aio_context(client->ioc); -+ } -+ -+ exp->common.ctx = NULL; -+} -+ -+static void nbd_drained_begin(void *opaque) -+{ -+ NBDExport *exp = opaque; -+ NBDClient *client; -+ -+ QTAILQ_FOREACH(client, &exp->clients, next) { - client->quiescing = true; -+ } -+} - -- if (client->recv_coroutine) { -- if (client->read_yielding) { -- qemu_aio_coroutine_enter(exp->common.ctx, -- client->recv_coroutine); -- } else { -- AIO_WAIT_WHILE(exp->common.ctx, client->recv_coroutine != NULL); -- } -- } -+static void nbd_drained_end(void *opaque) -+{ -+ NBDExport *exp = opaque; -+ NBDClient *client; - -- if (client->send_coroutine) { -- AIO_WAIT_WHILE(exp->common.ctx, client->send_coroutine != NULL); -- } -+ QTAILQ_FOREACH(client, &exp->clients, next) { -+ client->quiescing = false; -+ nbd_client_receive_next_request(client); - } - } - --static void blk_aio_detach(void *opaque) -+static bool nbd_drained_poll(void *opaque) - { - NBDExport *exp = opaque; -+ NBDClient *client; - -- trace_nbd_blk_aio_detach(exp->name, exp->common.ctx); -+ QTAILQ_FOREACH(client, &exp->clients, next) { -+ if (client->nb_requests != 0) { -+ /* -+ * If there's a coroutine waiting for a request on nbd_read_eof() -+ * enter it here so we don't depend on the client to wake it up. -+ */ -+ if (client->recv_coroutine != NULL && client->read_yielding) { -+ qemu_aio_coroutine_enter(exp->common.ctx, -+ client->recv_coroutine); -+ } - -- aio_wait_bh_oneshot(exp->common.ctx, nbd_aio_detach_bh, exp); -+ return true; -+ } -+ } - -- exp->common.ctx = NULL; -+ return false; - } - - static void nbd_eject_notifier(Notifier *n, void *data) -@@ -1594,6 +1618,12 @@ void nbd_export_set_on_eject_blk(BlockExport *exp, BlockBackend *blk) - blk_add_remove_bs_notifier(blk, &nbd_exp->eject_notifier); - } - -+static const BlockDevOps nbd_block_ops = { -+ .drained_begin = nbd_drained_begin, -+ .drained_end = nbd_drained_end, -+ .drained_poll = nbd_drained_poll, -+}; -+ - static int nbd_export_create(BlockExport *blk_exp, BlockExportOptions *exp_args, - Error **errp) - { -@@ -1715,8 +1745,17 @@ static int nbd_export_create(BlockExport *blk_exp, BlockExportOptions *exp_args, - - exp->allocation_depth = arg->allocation_depth; - -+ /* -+ * We need to inhibit request queuing in the block layer to ensure we can -+ * be properly quiesced when entering a drained section, as our coroutines -+ * servicing pending requests might enter blk_pread(). -+ */ -+ blk_set_disable_request_queuing(blk, true); -+ - blk_add_aio_context_notifier(blk, blk_aio_attached, blk_aio_detach, exp); - -+ blk_set_dev_ops(blk, &nbd_block_ops, exp); -+ - QTAILQ_INSERT_TAIL(&exports, exp, next); - - return 0; -@@ -1788,6 +1827,7 @@ static void nbd_export_delete(BlockExport *blk_exp) - } - blk_remove_aio_context_notifier(exp->common.blk, blk_aio_attached, - blk_aio_detach, exp); -+ blk_set_disable_request_queuing(exp->common.blk, false); - } - - for (i = 0; i < exp->nr_export_bitmaps; i++) { --- -2.27.0 - diff --git a/SOURCES/kvm-osdep-provide-ROUND_DOWN-macro.patch b/SOURCES/kvm-osdep-provide-ROUND_DOWN-macro.patch deleted file mode 100644 index cf8a1a3..0000000 --- a/SOURCES/kvm-osdep-provide-ROUND_DOWN-macro.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d9fa07a04ee19ad713b053f6a649178361d822a8 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:31 -0400 -Subject: [PATCH 15/43] osdep: provide ROUND_DOWN macro - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -osdep.h provides a ROUND_UP macro to hide bitwise operations for the -purpose of rounding a number up to a power of two; add a ROUND_DOWN -macro that does the same with truncation towards zero. - -While at it, change the formatting of some comments. - -Signed-off-by: Paolo Bonzini -(cherry picked from commit c9797456f64ce72c03eb2969d97ac1dd4698d91e) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - include/qemu/osdep.h | 28 ++++++++++++++++++++++------ - 1 file changed, 22 insertions(+), 6 deletions(-) - -diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h -index cb2a07e472..e327220992 100644 ---- a/include/qemu/osdep.h -+++ b/include/qemu/osdep.h -@@ -316,11 +316,16 @@ extern "C" { - }) - #endif - --/* Round number down to multiple */ -+/* -+ * Round number down to multiple. Safe when m is not a power of 2 (see -+ * ROUND_DOWN for a faster version when a power of 2 is guaranteed). -+ */ - #define QEMU_ALIGN_DOWN(n, m) ((n) / (m) * (m)) - --/* Round number up to multiple. Safe when m is not a power of 2 (see -- * ROUND_UP for a faster version when a power of 2 is guaranteed) */ -+/* -+ * Round number up to multiple. Safe when m is not a power of 2 (see -+ * ROUND_UP for a faster version when a power of 2 is guaranteed). -+ */ - #define QEMU_ALIGN_UP(n, m) QEMU_ALIGN_DOWN((n) + (m) - 1, (m)) - - /* Check if n is a multiple of m */ -@@ -337,11 +342,22 @@ extern "C" { - /* Check if pointer p is n-bytes aligned */ - #define QEMU_PTR_IS_ALIGNED(p, n) QEMU_IS_ALIGNED((uintptr_t)(p), (n)) - --/* Round number up to multiple. Requires that d be a power of 2 (see -+/* -+ * Round number down to multiple. Requires that d be a power of 2 (see - * QEMU_ALIGN_UP for a safer but slower version on arbitrary -- * numbers); works even if d is a smaller type than n. */ -+ * numbers); works even if d is a smaller type than n. -+ */ -+#ifndef ROUND_DOWN -+#define ROUND_DOWN(n, d) ((n) & -(0 ? (n) : (d))) -+#endif -+ -+/* -+ * Round number up to multiple. Requires that d be a power of 2 (see -+ * QEMU_ALIGN_UP for a safer but slower version on arbitrary -+ * numbers); works even if d is a smaller type than n. -+ */ - #ifndef ROUND_UP --#define ROUND_UP(n, d) (((n) + (d) - 1) & -(0 ? (n) : (d))) -+#define ROUND_UP(n, d) ROUND_DOWN((n) + (d) - 1, (d)) - #endif - - #ifndef DIV_ROUND_UP --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch b/SOURCES/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch deleted file mode 100644 index e443376..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 9da71839fdc4e8b9d034998b0ed8a7ee9dfe7645 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Sun, 2 May 2021 13:22:21 +0200 -Subject: [PATCH 34/39] pc-bios/s390-ccw: Allow building with Clang, too -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [7/11] d7c510f1e5f6434f6b3e4bab5b5f75403cbc7e1b (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -Clang unfortunately does not support generating code for the z900 -architecture level and starts with the z10 instead. Thus to be able -to support compiling with Clang, we have to check for the supported -compiler flags. The disadvantage is of course that the bios image -will only run with z10 guest CPUs upwards (which is what most people -use anyway), so just in case let's also emit a warning in that case -(we will continue to ship firmware images that have been pre-built -with GCC in future releases, so this should not impact normal users, -too). - -Message-Id: <20210502174836.838816-5-thuth@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé -Reviewed-by: Cornelia Huck -Signed-off-by: Thomas Huth -(cherry picked from commit a5b2afd522dde375c38cf94b7c696ffa3faba2fb) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - configure | 9 ++++++++- - pc-bios/s390-ccw/Makefile | 3 ++- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/configure b/configure -index 7edc08afb3..83d8af7fe4 100755 ---- a/configure -+++ b/configure -@@ -5424,9 +5424,16 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ - fi - - # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900 -+# or -march=z10 (which is the lowest architecture level that Clang supports) - if test "$cpu" = "s390x" ; then - write_c_skeleton -- if compile_prog "-march=z900" ""; then -+ compile_prog "-march=z900" "" -+ has_z900=$? -+ if [ $has_z900 = 0 ] || compile_prog "-march=z10" ""; then -+ if [ $has_z900 != 0 ]; then -+ echo "WARNING: Your compiler does not support the z900!" -+ echo " The s390-ccw bios will only work with guest CPUs >= z10." -+ fi - roms="$roms s390-ccw" - # SLOF is required for building the s390-ccw firmware on s390x, - # since it is using the libnet code from SLOF for network booting. -diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile -index 83fb1afb73..cee9d2c63b 100644 ---- a/pc-bios/s390-ccw/Makefile -+++ b/pc-bios/s390-ccw/Makefile -@@ -34,7 +34,8 @@ QEMU_CFLAGS += $(call cc-option,-Werror $(QEMU_CFLAGS),-Wno-stringop-overflow) - QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -fno-common -fPIE - QEMU_CFLAGS += -fwrapv -fno-strict-aliasing -fno-asynchronous-unwind-tables - QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector) --QEMU_CFLAGS += -msoft-float -march=z900 -+QEMU_CFLAGS += -msoft-float -+QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS),-march=z900,-march=z10) - QEMU_CFLAGS += -std=gnu99 - LDFLAGS += -Wl,-pie -nostdlib - --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch b/SOURCES/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch deleted file mode 100644 index aeca11f..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch +++ /dev/null @@ -1,106 +0,0 @@ -From c783eab8a3770703a39bbbd7edd23af7b9cb8f14 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Wed, 12 May 2021 19:15:48 +0200 -Subject: [PATCH 35/39] pc-bios/s390-ccw: Fix inline assembly for older - versions of Clang -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [8/11] 9a69c7705b8128b4098f818c6b672d484e459c83 (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -Clang versions before v11.0 insist on having the %rX or %cX register -names instead of just a number. Since our Travis-CI is currently -still using Clang v6.0, we have to fix this to avoid failing jobs. - -Message-Id: <20210512171550.476130-2-thuth@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé -Signed-off-by: Thomas Huth -(cherry picked from commit 052b66e7211af64964e005126eaa3c944b296b0e) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/helper.h | 2 +- - pc-bios/s390-ccw/jump2ipl.c | 4 ++-- - pc-bios/s390-ccw/menu.c | 8 ++++---- - pc-bios/s390-ccw/virtio.c | 2 +- - 4 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/pc-bios/s390-ccw/helper.h b/pc-bios/s390-ccw/helper.h -index dfcfea0ff0..3d0731c4c6 100644 ---- a/pc-bios/s390-ccw/helper.h -+++ b/pc-bios/s390-ccw/helper.h -@@ -31,7 +31,7 @@ static inline void *u32toptr(uint32_t n) - - static inline void yield(void) - { -- asm volatile ("diag 0,0,0x44" -+ asm volatile ("diag %%r0,%%r0,0x44" - : : - : "memory", "cc"); - } -diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c -index 73e4367e09..78f5f46533 100644 ---- a/pc-bios/s390-ccw/jump2ipl.c -+++ b/pc-bios/s390-ccw/jump2ipl.c -@@ -64,8 +64,8 @@ void jump_to_IPL_code(uint64_t address) - * We use the load normal reset to keep r15 unchanged. jump_to_IPL_2 - * can then use r15 as its stack pointer. - */ -- asm volatile("lghi 1,1\n\t" -- "diag 1,1,0x308\n\t" -+ asm volatile("lghi %%r1,1\n\t" -+ "diag %%r1,%%r1,0x308\n\t" - : : : "1", "memory"); - panic("\n! IPL returns !\n"); - } -diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c -index de8260a5d6..d601952d3e 100644 ---- a/pc-bios/s390-ccw/menu.c -+++ b/pc-bios/s390-ccw/menu.c -@@ -36,9 +36,9 @@ static inline void enable_clock_int(void) - uint64_t tmp = 0; - - asm volatile( -- "stctg 0,0,%0\n" -+ "stctg %%c0,%%c0,%0\n" - "oi 6+%0, 0x8\n" -- "lctlg 0,0,%0" -+ "lctlg %%c0,%%c0,%0" - : : "Q" (tmp) : "memory" - ); - } -@@ -48,9 +48,9 @@ static inline void disable_clock_int(void) - uint64_t tmp = 0; - - asm volatile( -- "stctg 0,0,%0\n" -+ "stctg %%c0,%%c0,%0\n" - "ni 6+%0, 0xf7\n" -- "lctlg 0,0,%0" -+ "lctlg %%c0,%%c0,%0" - : : "Q" (tmp) : "memory" - ); - } -diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c -index ab49840db8..5d2c6e3381 100644 ---- a/pc-bios/s390-ccw/virtio.c -+++ b/pc-bios/s390-ccw/virtio.c -@@ -54,7 +54,7 @@ static long kvm_hypercall(unsigned long nr, unsigned long param1, - register ulong r_param3 asm("4") = param3; - register long retval asm("2"); - -- asm volatile ("diag 2,4,0x500" -+ asm volatile ("diag %%r2,%%r4,0x500" - : "=d" (retval) - : "d" (r_nr), "0" (r_param1), "r"(r_param2), "d"(r_param3) - : "memory", "cc"); --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch b/SOURCES/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch deleted file mode 100644 index 06d0d4d..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch +++ /dev/null @@ -1,48 +0,0 @@ -From f2d40216872a40bc5f5089de760c7ba0e3a710bc Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Sun, 2 May 2021 13:07:46 +0200 -Subject: [PATCH 32/39] pc-bios/s390-ccw: Fix the cc-option macro in the - Makefile - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [5/11] 75379671567451e12ca32a3ea35d1ad2aa04bf5f (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -The cc-option macro is not doing what it should - compared with the -original from the rules.mak file that got removed with commit -660f793093 ("Makefile: inline the relevant parts of rules.mak"), -the arguments got changed and thus the macro is rather doubling -the QEMU_CFLAGS than adding the flag that should be tested. - -Message-Id: <20210502174836.838816-3-thuth@redhat.com> -Fixes: 22fb2ab096 ("pc-bios/s390-ccw: do not use rules.mak") -Signed-off-by: Thomas Huth -(cherry picked from commit 3462ff35512e925df5ee8c079ed46d4c93b633a7) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile -index 29fd9019b8..f0fe84c9eb 100644 ---- a/pc-bios/s390-ccw/Makefile -+++ b/pc-bios/s390-ccw/Makefile -@@ -6,8 +6,8 @@ include ../../config-host.mak - CFLAGS = -O2 -g - - quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1)) --cc-option = $(if $(shell $(CC) $1 -S -o /dev/null -xc /dev/null > /dev/null \ -- 2>&1 && echo OK), $1, $2) -+cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \ -+ >/dev/null 2>&1 && echo OK),$2,$3) - - VPATH_SUFFIXES = %.c %.h %.S %.m %.mak %.sh %.rc Kconfig% %.json.in - set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES),$(eval vpath $(PATTERN) $1))) --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch b/SOURCES/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch deleted file mode 100644 index ee9f702..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch +++ /dev/null @@ -1,75 +0,0 @@ -From c5b348e6d0334333295332c55fc4be51ce2668b8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= -Date: Thu, 22 Apr 2021 16:59:11 +0200 -Subject: [PATCH 33/39] pc-bios/s390-ccw: Silence GCC 11 stringop-overflow - warning -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [6/11] 92851a154f2425363aa1f5ed2bb12740f589229e (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -When building on Fedora 34 (gcc version 11.0.0 20210210) we get: - - In file included from pc-bios/s390-ccw/main.c:11: - In function ‘memset’, - inlined from ‘boot_setup’ at pc-bios/s390-ccw/main.c:185:5, - inlined from ‘main’ at pc-bios/s390-ccw/main.c:288:5: - pc-bios/s390-ccw/libc.h:28:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] - 28 | p[i] = c; - | ~~~~~^~~ - -The offending code is: - - memset((char *)S390EP, 0, 6); - -where S390EP is a const address: - - #define S390EP 0x10008 - -The compiler doesn't know how big that pointed area is, so it assume that -its length is zero. This has been reported as BZ#99578 to GCC: -"gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a -pointer from integer literal" -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578 - -As this warning does us more harm than good in the BIOS code (where -lot of direct accesses to low memory are done), silence this warning -for all BIOS objects. - -Suggested-by: Thomas Huth -Signed-off-by: Philippe Mathieu-Daudé -Message-Id: <20210422145911.2513980-1-philmd@redhat.com> -Acked-by: Christian Borntraeger -Message-Id: <20210502174836.838816-4-thuth@redhat.com> -[thuth: Use the pre-existing cc-option macro instead of adding a new one] -Reviewed-by: Cornelia Huck -Signed-off-by: Thomas Huth -(cherry picked from commit da231910d33084ccf63f07de210b145e0fa31d98) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/Makefile | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile -index f0fe84c9eb..83fb1afb73 100644 ---- a/pc-bios/s390-ccw/Makefile -+++ b/pc-bios/s390-ccw/Makefile -@@ -30,6 +30,7 @@ OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o menu.o \ - virtio.o virtio-scsi.o virtio-blkdev.o libc.o cio.o dasd-ipl.o - - QEMU_CFLAGS := -Wall $(filter -W%, $(QEMU_CFLAGS)) -+QEMU_CFLAGS += $(call cc-option,-Werror $(QEMU_CFLAGS),-Wno-stringop-overflow) - QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -fno-common -fPIE - QEMU_CFLAGS += -fwrapv -fno-strict-aliasing -fno-asynchronous-unwind-tables - QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector) --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch b/SOURCES/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch deleted file mode 100644 index e361980..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 12acb42f2e6317a530fa01b5cf55a199231bfdce Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Sun, 2 May 2021 13:49:20 +0200 -Subject: [PATCH 31/39] pc-bios/s390-ccw: Silence warning from Clang by marking - panic() as noreturn -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [4/11] 806b776bf01b733e04664534641cf89d1cb48f1b (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -When compiling the s390-ccw bios with Clang, the compiler emits a warning: - - pc-bios/s390-ccw/main.c:210:5: warning: variable 'found' is used uninitialized - whenever switch default is taken [-Wsometimes-uninitialized] - default: - ^~~~~~~ - pc-bios/s390-ccw/main.c:214:16: note: uninitialized use occurs here - IPL_assert(found, "Boot device not found\n"); - ^~~~~ - -It's a false positive, it only happens because Clang is not smart enough -to see that the panic() function in the "default:" case can never return. - -Anyway, let's explicitely mark panic() with "noreturn" to shut up the -warning. - -Message-Id: <20210502174836.838816-2-thuth@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé -Reviewed-by: Cornelia Huck -Signed-off-by: Thomas Huth -(cherry picked from commit 679196a646c91b8ce9a97b0aa81ffb3776cf8046) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/s390-ccw.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h -index 6cd92669e9..79db69ff54 100644 ---- a/pc-bios/s390-ccw/s390-ccw.h -+++ b/pc-bios/s390-ccw/s390-ccw.h -@@ -89,6 +89,7 @@ bool menu_is_enabled_enum(void); - - #define MAX_BOOT_ENTRIES 31 - -+__attribute__ ((__noreturn__)) - static inline void panic(const char *string) - { - sclp_print(string); --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch b/SOURCES/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch deleted file mode 100644 index c98c1c2..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 609d8661171760c7ead04f64359d47a77c31d474 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Fri, 23 Apr 2021 10:30:51 +0200 -Subject: [PATCH 29/39] pc-bios/s390-ccw: Use reset_psw pointer instead of - hard-coded null pointer -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [2/11] c65a986104a1830847e772879ca6eaf76c86b2f3 (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -When compiling the s390-ccw bios with clang, it emits a warning like this: - - pc-bios/s390-ccw/jump2ipl.c:86:9: warning: indirection of non-volatile null - pointer will be deleted, not trap [-Wnull-dereference] - if (*((uint64_t *)0) & RESET_PSW_MASK) { - ^~~~~~~~~~~~~~~~ - pc-bios/s390-ccw/jump2ipl.c:86:9: note: consider using __builtin_trap() or - qualifying pointer with 'volatile' - -We could add a "volatile" here to shut it up, but on the other hand, -we also have a pointer variable called "reset_psw" in this file already -that points to the PSW at address 0, so we can simply use that pointer -variable instead. - -Reviewed-by: Philippe Mathieu-Daudé -Message-Id: <20210423142440.582188-1-thuth@redhat.com> -Reviewed-by: Janosch Frank -Signed-off-by: Thomas Huth -(cherry picked from commit ff77712a8a2e15e5901fad35b9a6bb65974b2e4a) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/jump2ipl.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c -index b9c70d64a5..73e4367e09 100644 ---- a/pc-bios/s390-ccw/jump2ipl.c -+++ b/pc-bios/s390-ccw/jump2ipl.c -@@ -82,8 +82,8 @@ void jump_to_low_kernel(void) - jump_to_IPL_code(KERN_IMAGE_START); - } - -- /* Trying to get PSW at zero address */ -- if (*((uint64_t *)0) & RESET_PSW_MASK) { -+ /* Trying to get PSW at zero address (pointed to by reset_psw) */ -+ if (*reset_psw & RESET_PSW_MASK) { - /* - * Surely nobody will try running directly from lowcore, so - * let's use 0 as an indication that we want to load the reset --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch b/SOURCES/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch deleted file mode 100644 index bace1cc..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c00df86dd570d78767c5435f97bbe1d06407e470 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Wed, 21 Apr 2021 17:48:48 +0200 -Subject: [PATCH 28/39] pc-bios/s390-ccw/bootmap: Silence compiler warning from - Clang -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [1/11] 85e41a04a0f47afe23e62f70397a5f79b2703499 (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -When compiling the s390-ccw bios with Clang, the compiler complains: - - pc-bios/s390-ccw/bootmap.c:302:9: warning: logical not is only applied - to the left hand side of this comparison [-Wlogical-not-parentheses] - if (!mbr->dev_type == DEV_TYPE_ECKD) { - ^ ~~ - -The code works (more or less by accident), since dev_type can only be -0 or 1, but it's better of course to use the intended != operator here -instead. - -Fixes: 5dc739f343 ("Allow booting in case the first virtio-blk disk is bad") -Message-Id: <20210421163331.358178-1-thuth@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé -Reviewed-by: Christian Borntraeger -Signed-off-by: Thomas Huth -(cherry picked from commit d08a64940452060ab7ad5eb49cd5801131c2b9ec) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/bootmap.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c -index b46997c0b7..56411ab3b6 100644 ---- a/pc-bios/s390-ccw/bootmap.c -+++ b/pc-bios/s390-ccw/bootmap.c -@@ -299,7 +299,7 @@ static void ipl_eckd_cdl(void) - sclp_print("Bad block size in zIPL section of IPL2 record.\n"); - return; - } -- if (!mbr->dev_type == DEV_TYPE_ECKD) { -+ if (mbr->dev_type != DEV_TYPE_ECKD) { - sclp_print("Non-ECKD device type in zIPL section of IPL2 record.\n"); - return; - } --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-don-t-try-to-read-the-next-block-if.patch b/SOURCES/kvm-pc-bios-s390-ccw-don-t-try-to-read-the-next-block-if.patch deleted file mode 100644 index 77db467..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-don-t-try-to-read-the-next-block-if.patch +++ /dev/null @@ -1,51 +0,0 @@ -From bd1d37e3536136130df41ac8162ce5bb4f361f87 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Tue, 1 Jun 2021 08:52:10 -0400 -Subject: [PATCH 02/21] pc-bios/s390-ccw: don't try to read the next block if - end of chunk is reached -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [1/8] 69a43520a9e7f0ab92bdfdc47281c7606f5159e7 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -From: Marc Hartmayer - -Don't read the block if a null block number is reached, because this means that -the end of chunk is reached. - -Reviewed-by: Collin Walling -Signed-off-by: Marc Hartmayer -Message-Id: <20210416074736.17409-1-mhartmay@linux.ibm.com> -Signed-off-by: Thomas Huth -(cherry picked from commit a6625d38cce3901a7c1cba069f0abcf743a293f1) -Signed-off-by: Thomas Huth -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/bootmap.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c -index 44df7d16af..b46997c0b7 100644 ---- a/pc-bios/s390-ccw/bootmap.c -+++ b/pc-bios/s390-ccw/bootmap.c -@@ -213,7 +213,7 @@ static int eckd_get_boot_menu_index(block_number_t s1b_block_nr) - next_block_nr = eckd_block_num(&s1b->seek[i + 1].chs); - } - -- if (next_block_nr) { -+ if (next_block_nr && !is_null_block_number(next_block_nr)) { - read_block(next_block_nr, s2_next_blk, - "Cannot read stage2 boot loader"); - } --- -2.27.0 - diff --git a/SOURCES/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch b/SOURCES/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch deleted file mode 100644 index 95c276d..0000000 --- a/SOURCES/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 354026a79551358a5be4ed561e080ff550738e92 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Fri, 23 Apr 2021 17:20:46 +0200 -Subject: [PATCH 30/39] pc-bios/s390-ccw/netboot: Use "-Wl," prefix to pass - parameter to the linker - -RH-Author: Jon Maloy -RH-MergeRequest: 24: v7: Add support for building qemu-kvm with clang and safe-stack -RH-Commit: [3/11] 6a22a1705fbeb5fb2eab6c0e149a433286f98e5f (jmaloy/qemu-kvm-centos-jon) -RH-Bugzilla: 1939509 1940132 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Thomas Huth -RH-Acked-by: Cornelia Huck - -We are using the compiler to do the linking of the bios files. GCC still -accepts the "-Ttext=..." linker flag directly and is smart enough to -pass it to the linker, but in case we are compiling with Clang, we have -to use the official way with the "-Wl," prefix instead. - -Message-Id: <20210423153646.593153-1-thuth@redhat.com> -Signed-off-by: Thomas Huth -(cherry picked from commit b460a220872c28a8da95cbc7e9369d26aa268848) -Signed-off-by: Jon Maloy -Signed-off-by: Miroslav Rezanina ---- - pc-bios/s390-ccw/netboot.mak | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak -index 577c023afe..68b4d7edcb 100644 ---- a/pc-bios/s390-ccw/netboot.mak -+++ b/pc-bios/s390-ccw/netboot.mak -@@ -6,7 +6,7 @@ NETOBJS := start.o sclp.o cio.o virtio.o virtio-net.o jump2ipl.o netmain.o - LIBC_INC := -nostdinc -I$(SLOF_DIR)/lib/libc/include - LIBNET_INC := -I$(SLOF_DIR)/lib/libnet - --NETLDFLAGS := $(LDFLAGS) -Ttext=0x7800000 -+NETLDFLAGS := $(LDFLAGS) -Wl,-Ttext=0x7800000 - - $(NETOBJS): QEMU_CFLAGS += $(LIBC_INC) $(LIBNET_INC) - --- -2.27.0 - diff --git a/SOURCES/kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch b/SOURCES/kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch deleted file mode 100644 index dd982e3..0000000 --- a/SOURCES/kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch +++ /dev/null @@ -1,69 +0,0 @@ -From e496360f627cdc4202f185b63175ced08c8b1f07 Mon Sep 17 00:00:00 2001 -From: Daniel Henrique Barboza -Date: Wed, 23 Jun 2021 19:39:32 -0400 -Subject: [PATCH 3/6] ppc/pef.c: initialize cgs->ready in kvmppc_svm_init() - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 22: Synchronize with RHEL-AV 8.5 release 23 to RHEL 9 -RH-Commit: [2/5] b204f898d2333686e30b14c050ac7a9289670f23 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 - -QEMU is failing to launch a CGS pSeries guest in a host that has PEF -support: - -qemu-system-ppc64: ../softmmu/vl.c:2585: qemu_machine_creation_done: Assertion `machine->cgs->ready' failed. -Aborted - -This is happening because we're not setting the cgs->ready flag that is -asserted in qemu_machine_creation_done() during machine start. - -cgs->ready is set in s390_pv_kvm_init() and sev_kvm_init(). Let's set it -in kvmppc_svm_init() as well. - -Reported-by: Ram Pai -Signed-off-by: Daniel Henrique Barboza -Message-Id: <20210528201619.52363-1-danielhb413@gmail.com> -Acked-by: Ram Pai -Signed-off-by: David Gibson -(cherry picked from commit b873ed83311d96644b544b10f6869a430660585a) -Signed-off-by: Daniel Henrique Barboza -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/pef.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/hw/ppc/pef.c b/hw/ppc/pef.c -index 573be3ed79..cc44d5e339 100644 ---- a/hw/ppc/pef.c -+++ b/hw/ppc/pef.c -@@ -41,7 +41,7 @@ struct PefGuest { - ConfidentialGuestSupport parent_obj; - }; - --static int kvmppc_svm_init(Error **errp) -+static int kvmppc_svm_init(ConfidentialGuestSupport *cgs, Error **errp) - { - #ifdef CONFIG_KVM - static Error *pef_mig_blocker; -@@ -65,6 +65,8 @@ static int kvmppc_svm_init(Error **errp) - /* NB: This can fail if --only-migratable is used */ - migrate_add_blocker(pef_mig_blocker, &error_fatal); - -+ cgs->ready = true; -+ - return 0; - #else - g_assert_not_reached(); -@@ -102,7 +104,7 @@ int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp) - return -1; - } - -- return kvmppc_svm_init(errp); -+ return kvmppc_svm_init(cgs, errp); - } - - int pef_kvm_reset(ConfidentialGuestSupport *cgs, Error **errp) --- -2.27.0 - diff --git a/SOURCES/kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch b/SOURCES/kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch deleted file mode 100644 index 8b618c0..0000000 --- a/SOURCES/kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 9d2700ed836cdfabbd031da74cd5a3d01c9127dd Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Fri, 20 Aug 2021 18:25:12 +0200 -Subject: [PATCH 1/4] qcow2: Deprecation warning when opening v2 images rw -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Kevin Wolf -RH-MergeRequest: 37: qcow2: Deprecation warning when opening v2 images rw -RH-Commit: [1/1] f450d0ae32d35063b28c72c4f2d2ebb9e6d8db3e (kmwolf/centos-qemu-kvm) -RH-Bugzilla: 1951814 -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Hanna Reitz -RH-Acked-by: Thomas Huth -RH-Acked-by: Philippe Mathieu-Daudé - -qcow2 v3 has been around for a long time (since QEMU 1.1/RHEL 7), so -there is no real reason any more to use it. People still using it might -do so unintentionally. Warn about it and suggest upgrading during the -RHEL 9 timeframe so that the code can possibly be disabled in RHEL 10. - -The warning is restricted to read-write mode and the system emulator. -The primary motivation for not having it in qemu-img is that 'qemu-img -amend' for upgrades would warn otherwise. It also avoids having to make -too many changes to the test suite. - -bdrv_uses_whitelist() is used as a proxy for deciding whether we are -running in a tool or the system emulator. This is not entirely clean, -but it's what is available and the same function qcow2_do_open() already -uses it this way for another warning. - -Signed-off-by: Kevin Wolf ---- - block/qcow2.c | 6 ++++++ - tests/qemu-iotests/common.filter | 1 + - 2 files changed, 7 insertions(+) - -diff --git a/block/qcow2.c b/block/qcow2.c -index 9727ae8fe3..7c061bf315 100644 ---- a/block/qcow2.c -+++ b/block/qcow2.c -@@ -1336,6 +1336,12 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options, - ret = -ENOTSUP; - goto fail; - } -+ if (header.version < 3 && !bs->read_only && bdrv_uses_whitelist()) { -+ warn_report_once("qcow2 v2 images are deprecated and may not be " -+ "supported in future versions. Please consider " -+ "upgrading the image with 'qemu-img amend " -+ "-o compat=v3'."); -+ } - - s->qcow_version = header.version; - -diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter -index 268b749e2f..1f243a8bc1 100644 ---- a/tests/qemu-iotests/common.filter -+++ b/tests/qemu-iotests/common.filter -@@ -82,6 +82,7 @@ _filter_qemu() - { - $SED -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 - diff --git a/SOURCES/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch b/SOURCES/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch deleted file mode 100644 index aa106c9..0000000 --- a/SOURCES/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch +++ /dev/null @@ -1,265 +0,0 @@ -From c5a2313ba173568087d78f76cc0258e7a353830b Mon Sep 17 00:00:00 2001 -From: Eric Blake -Date: Fri, 6 Aug 2021 15:07:49 -0400 -Subject: [PATCH 26/39] qemu-img: Add --skip-broken-bitmaps for 'convert - --bitmaps' -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 35: Synchronize with RHEL-AV 8.5 release 28 to RHEL 9 -RH-Commit: [3/4] 4b7203c66367c601f9710bbcd91bdbdd56f0f8bd (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Philippe Mathieu-Daudé - -The point of 'qemu-img convert --bitmaps' is to be a convenience for -actions that are already possible through a string of smaller -'qemu-img bitmap' sub-commands. One situation not accounted for -already is that if a source image contains an inconsistent bitmap (for -example, because a qemu process died abruptly before flushing bitmap -state), the user MUST delete those inconsistent bitmaps before -anything else useful can be done with the image. - -We don't want to delete inconsistent bitmaps by default: although a -corrupt bitmap is only a loss of optimization rather than a corruption -of user-visible data, it is still nice to require the user to opt in -to the fact that they are aware of the loss of the bitmap. Still, -requiring the user to check 'qemu-img info' to see whether bitmaps are -consistent, then use 'qemu-img bitmap --remove' to remove offenders, -all before using 'qemu-img convert', is a lot more work than just -adding a knob 'qemu-img convert --bitmaps --skip-broken-bitmaps' which -opts in to skipping the broken bitmaps. - -After testing the new option, also demonstrate the way to manually fix -things (either deleting bad bitmaps, or re-creating them as empty) so -that it is possible to convert without the option. - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1946084 -Signed-off-by: Eric Blake -Message-Id: <20210709153951.2801666-4-eblake@redhat.com> -[eblake: warning message tweak, test enhancements] -Reviewed-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 955171e4417bf39edb5503e694501e082a757731) -Signed-off-by: Eric Blake -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - docs/tools/qemu-img.rst | 8 ++++- - qemu-img.c | 29 +++++++++++---- - tests/qemu-iotests/tests/qemu-img-bitmaps | 16 ++++++++- - tests/qemu-iotests/tests/qemu-img-bitmaps.out | 35 ++++++++++++++++++- - 4 files changed, 79 insertions(+), 9 deletions(-) - -diff --git a/docs/tools/qemu-img.rst b/docs/tools/qemu-img.rst -index c9efcfaefc..3df6277d6a 100644 ---- a/docs/tools/qemu-img.rst -+++ b/docs/tools/qemu-img.rst -@@ -414,7 +414,7 @@ Command description: - 4 - Error on reading data - --.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME -+.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps [--skip-broken-bitmaps]] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME - - Convert the disk image *FILENAME* or a snapshot *SNAPSHOT_PARAM* - to disk image *OUTPUT_FILENAME* using format *OUTPUT_FMT*. It can -@@ -456,6 +456,12 @@ Command description: - *NUM_COROUTINES* specifies how many coroutines work in parallel during - the convert process (defaults to 8). - -+ Use of ``--bitmaps`` requests that any persistent bitmaps present in -+ the original are also copied to the destination. If any bitmap is -+ inconsistent in the source, the conversion will fail unless -+ ``--skip-broken-bitmaps`` is also specified to copy only the -+ consistent bitmaps. -+ - .. option:: create [--object OBJECTDEF] [-q] [-f FMT] [-b BACKING_FILE] [-F BACKING_FMT] [-u] [-o OPTIONS] FILENAME [SIZE] - - Create the new disk image *FILENAME* of size *SIZE* and format -diff --git a/qemu-img.c b/qemu-img.c -index 7684684bfa..75bab32416 100644 ---- a/qemu-img.c -+++ b/qemu-img.c -@@ -82,6 +82,7 @@ enum { - OPTION_MERGE = 274, - OPTION_BITMAPS = 275, - OPTION_FORCE = 276, -+ OPTION_SKIP_BROKEN = 277, - }; - - typedef enum OutputFormat { -@@ -2099,7 +2100,7 @@ static int convert_do_copy(ImgConvertState *s) - } - - /* Check that bitmaps can be copied, or output an error */ --static int convert_check_bitmaps(BlockDriverState *src) -+static int convert_check_bitmaps(BlockDriverState *src, bool skip_broken) - { - BdrvDirtyBitmap *bm; - -@@ -2111,17 +2112,19 @@ static int convert_check_bitmaps(BlockDriverState *src) - if (!bdrv_dirty_bitmap_get_persistence(bm)) { - continue; - } -- if (bdrv_dirty_bitmap_inconsistent(bm)) { -+ if (!skip_broken && bdrv_dirty_bitmap_inconsistent(bm)) { - error_report("Cannot copy inconsistent bitmap '%s'", - bdrv_dirty_bitmap_name(bm)); -- error_printf("Try 'qemu-img bitmap --remove' to delete it\n"); -+ error_printf("Try --skip-broken-bitmaps, or " -+ "use 'qemu-img bitmap --remove' to delete it\n"); - return -1; - } - } - return 0; - } - --static int convert_copy_bitmaps(BlockDriverState *src, BlockDriverState *dst) -+static int convert_copy_bitmaps(BlockDriverState *src, BlockDriverState *dst, -+ bool skip_broken) - { - BdrvDirtyBitmap *bm; - Error *err = NULL; -@@ -2133,6 +2136,10 @@ static int convert_copy_bitmaps(BlockDriverState *src, BlockDriverState *dst) - continue; - } - name = bdrv_dirty_bitmap_name(bm); -+ if (skip_broken && bdrv_dirty_bitmap_inconsistent(bm)) { -+ warn_report("Skipping inconsistent bitmap '%s'", name); -+ continue; -+ } - qmp_block_dirty_bitmap_add(dst->node_name, name, - true, bdrv_dirty_bitmap_granularity(bm), - true, true, -@@ -2188,6 +2195,7 @@ static int img_convert(int argc, char **argv) - bool force_share = false; - bool explict_min_sparse = false; - bool bitmaps = false; -+ bool skip_broken = false; - int64_t rate_limit = 0; - - ImgConvertState s = (ImgConvertState) { -@@ -2209,6 +2217,7 @@ static int img_convert(int argc, char **argv) - {"salvage", no_argument, 0, OPTION_SALVAGE}, - {"target-is-zero", no_argument, 0, OPTION_TARGET_IS_ZERO}, - {"bitmaps", no_argument, 0, OPTION_BITMAPS}, -+ {"skip-broken-bitmaps", no_argument, 0, OPTION_SKIP_BROKEN}, - {0, 0, 0, 0} - }; - c = getopt_long(argc, argv, ":hf:O:B:Cco:l:S:pt:T:qnm:WUr:", -@@ -2337,6 +2346,9 @@ static int img_convert(int argc, char **argv) - case OPTION_BITMAPS: - bitmaps = true; - break; -+ case OPTION_SKIP_BROKEN: -+ skip_broken = true; -+ break; - } - } - -@@ -2344,6 +2356,11 @@ static int img_convert(int argc, char **argv) - out_fmt = "raw"; - } - -+ if (skip_broken && !bitmaps) { -+ error_report("Use of --skip-broken-bitmaps requires --bitmaps"); -+ goto fail_getopt; -+ } -+ - if (s.compressed && s.copy_range) { - error_report("Cannot enable copy offloading when -c is used"); - goto fail_getopt; -@@ -2573,7 +2590,7 @@ static int img_convert(int argc, char **argv) - ret = -1; - goto out; - } -- ret = convert_check_bitmaps(blk_bs(s.src[0])); -+ ret = convert_check_bitmaps(blk_bs(s.src[0]), skip_broken); - if (ret < 0) { - goto out; - } -@@ -2698,7 +2715,7 @@ static int img_convert(int argc, char **argv) - - /* Now copy the bitmaps */ - if (bitmaps && ret == 0) { -- ret = convert_copy_bitmaps(blk_bs(s.src[0]), out_bs); -+ ret = convert_copy_bitmaps(blk_bs(s.src[0]), out_bs, skip_broken); - } - - out: -diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps b/tests/qemu-iotests/tests/qemu-img-bitmaps -index 09c3d395d1..7a3fe8c3d3 100755 ---- a/tests/qemu-iotests/tests/qemu-img-bitmaps -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps -@@ -144,7 +144,21 @@ _img_info --format-specific | _filter_irrelevant_img_info - echo - $QEMU_IMG convert --bitmaps -O qcow2 "$TEST_IMG" "$TEST_IMG.copy" && - echo "unexpected success" --TEST_IMG=$TEST_IMG.copy _img_info --format-specific \ -+TEST_IMG="$TEST_IMG.copy" _img_info --format-specific \ -+ | _filter_irrelevant_img_info -+# Skipping the broken bitmaps works,... -+echo -+$QEMU_IMG convert --bitmaps --skip-broken-bitmaps \ -+ -O qcow2 "$TEST_IMG" "$TEST_IMG.copy" -+TEST_IMG="$TEST_IMG.copy" _img_info --format-specific \ -+ | _filter_irrelevant_img_info -+# ...as does removing them -+echo -+_rm_test_img "$TEST_IMG.copy" -+$QEMU_IMG bitmap --remove "$TEST_IMG" b0 -+$QEMU_IMG bitmap --remove --add "$TEST_IMG" b2 -+$QEMU_IMG convert --bitmaps -O qcow2 "$TEST_IMG" "$TEST_IMG.copy" -+TEST_IMG="$TEST_IMG.copy" _img_info --format-specific \ - | _filter_irrelevant_img_info - - # success, all done -diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -index 1e32833bf1..7a7429e320 100644 ---- a/tests/qemu-iotests/tests/qemu-img-bitmaps.out -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -@@ -145,6 +145,39 @@ Format specific information: - corrupt: false - - qemu-img: Cannot copy inconsistent bitmap 'b0' --Try 'qemu-img bitmap --remove' to delete it -+Try --skip-broken-bitmaps, or use 'qemu-img bitmap --remove' to delete it - qemu-img: Could not open 'TEST_DIR/t.IMGFMT.copy': Could not open 'TEST_DIR/t.IMGFMT.copy': No such file or directory -+ -+qemu-img: warning: Skipping inconsistent bitmap 'b0' -+qemu-img: warning: Skipping inconsistent bitmap 'b2' -+image: TEST_DIR/t.IMGFMT.copy -+file format: IMGFMT -+virtual size: 10 MiB (10485760 bytes) -+cluster_size: 65536 -+Format specific information: -+ bitmaps: -+ [0]: -+ flags: -+ [0]: auto -+ name: b4 -+ granularity: 65536 -+ corrupt: false -+ -+image: TEST_DIR/t.IMGFMT.copy -+file format: IMGFMT -+virtual size: 10 MiB (10485760 bytes) -+cluster_size: 65536 -+Format specific information: -+ bitmaps: -+ [0]: -+ flags: -+ [0]: auto -+ name: b4 -+ granularity: 65536 -+ [1]: -+ flags: -+ [0]: auto -+ name: b2 -+ granularity: 65536 -+ corrupt: false - *** done --- -2.27.0 - diff --git a/SOURCES/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch b/SOURCES/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch deleted file mode 100644 index bdd40b9..0000000 --- a/SOURCES/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 5e8f99ea87409e1423c2e1c5e445003cf4a032a9 Mon Sep 17 00:00:00 2001 -From: Eric Blake -Date: Fri, 6 Aug 2021 15:07:48 -0400 -Subject: [PATCH 25/39] qemu-img: Fail fast on convert --bitmaps with - inconsistent bitmap -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 35: Synchronize with RHEL-AV 8.5 release 28 to RHEL 9 -RH-Commit: [2/4] 3fd8d357c3a365d4bc142b3d339745e5b15c5894 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Philippe Mathieu-Daudé - -Waiting until the end of the convert operation (a potentially -time-consuming task) to finally detect that we can't copy a bitmap is -bad, comparing to failing fast up front. Furthermore, this prevents -us from leaving a file behind with a bitmap that is not marked as -inconsistent even though it does not have sane contents. - -This fixes the problems exposed in the previous patch to the iotest: -it adds a fast failure up front, and even if we don't fail early, it -ensures that any bitmap we add but do not properly populate is removed -again rather than left behind incomplete. - -Signed-off-by: Eric Blake -Message-Id: <20210709153951.2801666-3-eblake@redhat.com> -[eblake: add a hint to the warning message, simplify name computation] -Reviewed-by: Nir Soffer -Reviewed-by: Vladimir Sementsov-Ogievskiy -(cherry picked from commit 74a4320f30632fa539507861b3835698282e462e) -Signed-off-by: Eric Blake -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - qemu-img.c | 29 +++++++++++++++++-- - tests/qemu-iotests/tests/qemu-img-bitmaps | 3 +- - tests/qemu-iotests/tests/qemu-img-bitmaps.out | 21 ++------------ - 3 files changed, 30 insertions(+), 23 deletions(-) - -diff --git a/qemu-img.c b/qemu-img.c -index babb5573ab..7684684bfa 100644 ---- a/qemu-img.c -+++ b/qemu-img.c -@@ -2098,6 +2098,29 @@ static int convert_do_copy(ImgConvertState *s) - return s->ret; - } - -+/* Check that bitmaps can be copied, or output an error */ -+static int convert_check_bitmaps(BlockDriverState *src) -+{ -+ BdrvDirtyBitmap *bm; -+ -+ if (!bdrv_supports_persistent_dirty_bitmap(src)) { -+ error_report("Source lacks bitmap support"); -+ return -1; -+ } -+ FOR_EACH_DIRTY_BITMAP(src, bm) { -+ if (!bdrv_dirty_bitmap_get_persistence(bm)) { -+ continue; -+ } -+ if (bdrv_dirty_bitmap_inconsistent(bm)) { -+ error_report("Cannot copy inconsistent bitmap '%s'", -+ bdrv_dirty_bitmap_name(bm)); -+ error_printf("Try 'qemu-img bitmap --remove' to delete it\n"); -+ return -1; -+ } -+ } -+ return 0; -+} -+ - static int convert_copy_bitmaps(BlockDriverState *src, BlockDriverState *dst) - { - BdrvDirtyBitmap *bm; -@@ -2124,6 +2147,7 @@ static int convert_copy_bitmaps(BlockDriverState *src, BlockDriverState *dst) - &err); - if (err) { - error_reportf_err(err, "Failed to populate bitmap %s: ", name); -+ qmp_block_dirty_bitmap_remove(dst->node_name, name, NULL); - return -1; - } - } -@@ -2549,9 +2573,8 @@ static int img_convert(int argc, char **argv) - ret = -1; - goto out; - } -- if (!bdrv_supports_persistent_dirty_bitmap(blk_bs(s.src[0]))) { -- error_report("Source lacks bitmap support"); -- ret = -1; -+ ret = convert_check_bitmaps(blk_bs(s.src[0])); -+ if (ret < 0) { - goto out; - } - } -diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps b/tests/qemu-iotests/tests/qemu-img-bitmaps -index 409c4497a3..09c3d395d1 100755 ---- a/tests/qemu-iotests/tests/qemu-img-bitmaps -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps -@@ -140,11 +140,10 @@ $QEMU_IO -c abort "$TEST_IMG" 2>/dev/null - $QEMU_IMG bitmap --add "$TEST_IMG" b4 - $QEMU_IMG bitmap --remove "$TEST_IMG" b1 - _img_info --format-specific | _filter_irrelevant_img_info -+# Proof that we fail fast if bitmaps can't be copied - echo - $QEMU_IMG convert --bitmaps -O qcow2 "$TEST_IMG" "$TEST_IMG.copy" && - echo "unexpected success" --# Bug - even though we failed at conversion, we left a file around with --# a bitmap marked as not corrupt - TEST_IMG=$TEST_IMG.copy _img_info --format-specific \ - | _filter_irrelevant_img_info - -diff --git a/tests/qemu-iotests/tests/qemu-img-bitmaps.out b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -index 543b028da6..1e32833bf1 100644 ---- a/tests/qemu-iotests/tests/qemu-img-bitmaps.out -+++ b/tests/qemu-iotests/tests/qemu-img-bitmaps.out -@@ -144,22 +144,7 @@ Format specific information: - granularity: 65536 - corrupt: false - --qemu-img: Failed to populate bitmap b0: Bitmap 'b0' is inconsistent and cannot be used --Try block-dirty-bitmap-remove to delete this bitmap from disk --image: TEST_DIR/t.IMGFMT.copy --file format: IMGFMT --virtual size: 10 MiB (10485760 bytes) --cluster_size: 65536 --Format specific information: -- bitmaps: -- [0]: -- flags: -- name: b0 -- granularity: 65536 -- [1]: -- flags: -- [0]: auto -- name: b4 -- granularity: 65536 -- corrupt: false -+qemu-img: Cannot copy inconsistent bitmap 'b0' -+Try 'qemu-img bitmap --remove' to delete it -+qemu-img: Could not open 'TEST_DIR/t.IMGFMT.copy': Could not open 'TEST_DIR/t.IMGFMT.copy': No such file or directory - *** done --- -2.27.0 - diff --git a/SOURCES/kvm-ratelimit-protect-with-a-mutex.patch b/SOURCES/kvm-ratelimit-protect-with-a-mutex.patch deleted file mode 100644 index 6d18a15..0000000 --- a/SOURCES/kvm-ratelimit-protect-with-a-mutex.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 05efd4675b1241f2cc68fd54c92a8a834699f212 Mon Sep 17 00:00:00 2001 -From: "plai@redhat.com" -Date: Thu, 29 Jul 2021 07:42:21 -0400 -Subject: [PATCH 14/39] ratelimit: protect with a mutex - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 32: Synchronize with RHEL-AV 8.5 release 27 to RHEL 9 -RH-Commit: [6/15] 48586bf5d422cb676a6f2d2cd0abb0822cfc17b2 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Stefano Garzarella -RH-Acked-by: Kevin Wolf -RH-Acked-by: Igor Mammedov -RH-Acked-by: Andrew Jones - -Right now, rate limiting is protected by the AioContext mutex, which is -taken for example both by the block jobs and by qmp_block_job_set_speed -(via find_block_job). - -We would like to remove the dependency of block layer code on the -AioContext mutex, since most drivers and the core I/O code are already -not relying on it. However, there is no existing lock that can easily -be taken by both ratelimit_set_speed and ratelimit_calculate_delay, -especially because the latter might run in coroutine context (and -therefore under a CoMutex) but the former will not. - -Since concurrent calls to ratelimit_calculate_delay are not possible, -one idea could be to use a seqlock to get a snapshot of slice_ns and -slice_quota. But for now keep it simple, and just add a mutex to the -RateLimit struct; block jobs are generally not performance critical to -the point of optimizing the clock cycles spent in synchronization. - -This also requires the introduction of init/destroy functions, so -add them to the two users of ratelimit.h. - -Signed-off-by: Paolo Bonzini -(cherry picked from commit 4951967d84a0acbf47895add9158e2d4c6056ea0) -Signed-off-by: Paul Lai -Signed-off-by: Miroslav Rezanina ---- - block/block-copy.c | 2 ++ - blockjob.c | 3 +++ - include/qemu/ratelimit.h | 14 ++++++++++++++ - 3 files changed, 19 insertions(+) - -diff --git a/block/block-copy.c b/block/block-copy.c -index 39ae481c8b..9b4af00614 100644 ---- a/block/block-copy.c -+++ b/block/block-copy.c -@@ -230,6 +230,7 @@ void block_copy_state_free(BlockCopyState *s) - return; - } - -+ ratelimit_destroy(&s->rate_limit); - bdrv_release_dirty_bitmap(s->copy_bitmap); - shres_destroy(s->mem); - g_free(s); -@@ -289,6 +290,7 @@ BlockCopyState *block_copy_state_new(BdrvChild *source, BdrvChild *target, - s->copy_size = MAX(s->cluster_size, BLOCK_COPY_MAX_BUFFER); - } - -+ ratelimit_init(&s->rate_limit); - QLIST_INIT(&s->tasks); - QLIST_INIT(&s->calls); - -diff --git a/blockjob.c b/blockjob.c -index 207e8c7fd9..46f15befe8 100644 ---- a/blockjob.c -+++ b/blockjob.c -@@ -87,6 +87,7 @@ void block_job_free(Job *job) - - block_job_remove_all_bdrv(bjob); - blk_unref(bjob->blk); -+ ratelimit_destroy(&bjob->limit); - error_free(bjob->blocker); - } - -@@ -435,6 +436,8 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver, - assert(job->job.driver->free == &block_job_free); - assert(job->job.driver->user_resume == &block_job_user_resume); - -+ ratelimit_init(&job->limit); -+ - job->blk = blk; - - job->finalize_cancelled_notifier.notify = block_job_event_cancelled; -diff --git a/include/qemu/ratelimit.h b/include/qemu/ratelimit.h -index 01da8d63f1..003ea6d5a3 100644 ---- a/include/qemu/ratelimit.h -+++ b/include/qemu/ratelimit.h -@@ -14,9 +14,11 @@ - #ifndef QEMU_RATELIMIT_H - #define QEMU_RATELIMIT_H - -+#include "qemu/lockable.h" - #include "qemu/timer.h" - - typedef struct { -+ QemuMutex lock; - int64_t slice_start_time; - int64_t slice_end_time; - uint64_t slice_quota; -@@ -40,6 +42,7 @@ static inline int64_t ratelimit_calculate_delay(RateLimit *limit, uint64_t n) - int64_t now = qemu_clock_get_ns(QEMU_CLOCK_REALTIME); - double delay_slices; - -+ QEMU_LOCK_GUARD(&limit->lock); - assert(limit->slice_quota && limit->slice_ns); - - if (limit->slice_end_time < now) { -@@ -65,9 +68,20 @@ static inline int64_t ratelimit_calculate_delay(RateLimit *limit, uint64_t n) - return limit->slice_end_time - now; - } - -+static inline void ratelimit_init(RateLimit *limit) -+{ -+ qemu_mutex_init(&limit->lock); -+} -+ -+static inline void ratelimit_destroy(RateLimit *limit) -+{ -+ qemu_mutex_destroy(&limit->lock); -+} -+ - static inline void ratelimit_set_speed(RateLimit *limit, uint64_t speed, - uint64_t slice_ns) - { -+ QEMU_LOCK_GUARD(&limit->lock); - limit->slice_ns = slice_ns; - limit->slice_quota = MAX(((double)speed * slice_ns) / 1000000000ULL, 1); - } --- -2.27.0 - diff --git a/SOURCES/kvm-redhat-Add-s390x-machine-type-compatibility-update-f.patch b/SOURCES/kvm-redhat-Add-s390x-machine-type-compatibility-update-f.patch new file mode 100644 index 0000000..16f5957 --- /dev/null +++ b/SOURCES/kvm-redhat-Add-s390x-machine-type-compatibility-update-f.patch @@ -0,0 +1,45 @@ +From 9b72a86292fb2c34d7be7b928ac06f2609de0f43 Mon Sep 17 00:00:00 2001 +From: Thomas Huth +Date: Thu, 30 Sep 2021 09:25:23 +0200 +Subject: [PATCH 2/2] redhat: Add s390x machine type compatibility update for + 6.1 rebase +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 45: Add s390x machine type compatibility update for 6.1 rebase +RH-Commit: [2/2] 6f71801ac2d77b82b010eac46cd82cd74c53f246 (thuth/qemu-kvm-cs9) +RH-Bugzilla: 1998943 +RH-Acked-by: Greg Kurz +RH-Acked-by: Daniel P. Berrangé +RH-Acked-by: Cornelia Huck +RH-Acked-by: David Hildenbrand + +Add hw_compat_rhel_8_5 for the s390-ccw-virtio-rhel8.5.0 machine +type. It's currently not urgently required, since hw_compat_rhel_8_5 +only contains entries that are not related to s390x, but just in +case some other entries are added there later, it's better if we +add this right from the start to the s390x machine, too. + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1998943 +Signed-off-by: Thomas Huth +--- + hw/s390x/s390-virtio-ccw.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c +index 9a51dd8de2..4ee8d266ec 100644 +--- a/hw/s390x/s390-virtio-ccw.c ++++ b/hw/s390x/s390-virtio-ccw.c +@@ -1091,6 +1091,7 @@ static void ccw_machine_rhel850_instance_options(MachineState *machine) + + 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); + } + DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); + +-- +2.27.0 + diff --git a/SOURCES/kvm-redhat-Define-hw_compat_rhel_8_5.patch b/SOURCES/kvm-redhat-Define-hw_compat_rhel_8_5.patch new file mode 100644 index 0000000..60f7fa1 --- /dev/null +++ b/SOURCES/kvm-redhat-Define-hw_compat_rhel_8_5.patch @@ -0,0 +1,74 @@ +From 1f0a5d3ae9c835e35b83cf8bbedd0f814df3451d Mon Sep 17 00:00:00 2001 +From: Greg Kurz +Date: Mon, 27 Sep 2021 10:02:46 +0200 +Subject: [PATCH 1/2] redhat: Define hw_compat_rhel_8_5 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Thomas Huth +RH-MergeRequest: 45: Add s390x machine type compatibility update for 6.1 rebase +RH-Commit: [1/2] 5d304edf2bee7abc57843deb9e5d85ab5f19a34c (thuth/qemu-kvm-cs9) +RH-Bugzilla: 1998943 +RH-Acked-by: Greg Kurz +RH-Acked-by: Daniel P. Berrangé +RH-Acked-by: Cornelia Huck +RH-Acked-by: David Hildenbrand + +The QEMU 6.1 rebase changed the default value of some properties +for existing machine types. Prepare ground by introducing +hw_compat_rhel_8_5. + +Signed-off-by: Greg Kurz +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1998943 +Signed-off-by: Thomas Huth +--- + hw/core/machine.c | 17 +++++++++++++++++ + include/hw/boards.h | 3 +++ + 2 files changed, 20 insertions(+) + +diff --git a/hw/core/machine.c b/hw/core/machine.c +index d681a06a47..a14503cc30 100644 +--- a/hw/core/machine.c ++++ b/hw/core/machine.c +@@ -37,6 +37,23 @@ + #include "hw/virtio/virtio.h" + #include "hw/virtio/virtio-pci.h" + ++/* ++ * Mostly the same as hw_compat_6_0 ++ */ ++GlobalProperty hw_compat_rhel_8_5[] = { ++ /* hw_compat_rhel_8_5 from hw_compat_6_0 */ ++ { "gpex-pcihost", "allow-unmapped-accesses", "false" }, ++ /* hw_compat_rhel_8_5 from hw_compat_6_0 */ ++ { "i8042", "extended-state", "false"}, ++ /* hw_compat_rhel_8_5 from hw_compat_6_0 */ ++ { "nvme-ns", "eui64-default", "off"}, ++ /* hw_compat_rhel_8_5 from hw_compat_6_0 */ ++ { "e1000", "init-vet", "off" }, ++ /* hw_compat_rhel_8_5 from hw_compat_6_0 */ ++ { "e1000e", "init-vet", "off" }, ++}; ++const size_t hw_compat_rhel_8_5_len = G_N_ELEMENTS(hw_compat_rhel_8_5); ++ + /* + * Mostly the same as hw_compat_5_2 + */ +diff --git a/include/hw/boards.h b/include/hw/boards.h +index a2b1681027..7b9208ef7a 100644 +--- a/include/hw/boards.h ++++ b/include/hw/boards.h +@@ -418,6 +418,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_5[]; ++extern const size_t hw_compat_rhel_8_5_len; ++ + extern GlobalProperty hw_compat_rhel_8_4[]; + extern const size_t hw_compat_rhel_8_4_len; + +-- +2.27.0 + diff --git a/SOURCES/kvm-redhat-Define-pseries-rhel8.5.0-machine-type.patch b/SOURCES/kvm-redhat-Define-pseries-rhel8.5.0-machine-type.patch deleted file mode 100644 index eb9f32a..0000000 --- a/SOURCES/kvm-redhat-Define-pseries-rhel8.5.0-machine-type.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 1194549a01a472b9ce21819cd32fe253d6263cd6 Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Mon, 10 May 2021 15:37:40 -0400 -Subject: [PATCH 08/15] redhat: Define pseries-rhel8.5.0 machine type - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [3/12] accc2ed549b94360bc6ab180c4266466816f122e (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -Note that the compat entries for 8.4.0 were already wired up -in the rhel-8.4.0 machine type. - -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/spapr.c | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index f9e8dfdfc9..653574ba91 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -5083,6 +5083,19 @@ static void spapr_machine_rhel_default_class_options(MachineClass *mc) - mc->max_cpus = 384; - } - -+/* -+ * pseries-rhel8.5.0 -+ * like pseries-6.0 -+ */ -+ -+static void spapr_machine_rhel850_class_options(MachineClass *mc) -+{ -+ /* The default machine type must apply the RHEL specific defaults */ -+ spapr_machine_rhel_default_class_options(mc); -+} -+ -+DEFINE_SPAPR_MACHINE(rhel850, "rhel8.5.0", true); -+ - /* - * pseries-rhel8.4.0 - * like pseries-5.2 -@@ -5090,13 +5103,12 @@ static void spapr_machine_rhel_default_class_options(MachineClass *mc) - - static void spapr_machine_rhel840_class_options(MachineClass *mc) - { -- /* The default machine type must apply the RHEL specific defaults */ -- spapr_machine_rhel_default_class_options(mc); -+ spapr_machine_rhel850_class_options(mc); - compat_props_add(mc->compat_props, hw_compat_rhel_8_4, - hw_compat_rhel_8_4_len); - } - --DEFINE_SPAPR_MACHINE(rhel840, "rhel8.4.0", true); -+DEFINE_SPAPR_MACHINE(rhel840, "rhel8.4.0", false); - - /* - * pseries-rhel8.3.0 --- -2.27.0 - diff --git a/SOURCES/kvm-redhat-Enable-the-test-block-iothread-test-again.patch b/SOURCES/kvm-redhat-Enable-the-test-block-iothread-test-again.patch deleted file mode 100644 index 28dce0f..0000000 --- a/SOURCES/kvm-redhat-Enable-the-test-block-iothread-test-again.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4231cac75289acd643c2daaa2dece485b958bef1 Mon Sep 17 00:00:00 2001 -From: Thomas Huth -Date: Fri, 20 Aug 2021 10:27:12 +0200 -Subject: [PATCH 4/4] redhat: Enable the 'test-block-iothread' test again -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Thomas Huth -RH-MergeRequest: 36: Disable LTO on non-x86 architectures -RH-Commit: [2/2] e010396f3ee0f3f39ff8bcd4749f8ae2e8624980 (thuth/qemu-kvm-cs9) -RH-Bugzilla: 1950192 -RH-Acked-by: Andrew Jones -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Cornelia Huck -RH-Acked-by: Philippe Mathieu-Daudé - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1950192 - -Now that we disabled LTO to fix the coroutines/iothreads on s390x and -aarch64, we can also enable the 'test-block-iothread' test again. - -Signed-off-by: Thomas Huth ---- - tests/unit/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/unit/meson.build b/tests/unit/meson.build -index 244d35f5d4..b3bc2109da 100644 ---- a/tests/unit/meson.build -+++ b/tests/unit/meson.build -@@ -65,7 +65,7 @@ if have_block - 'test-blockjob': [testblock], - 'test-blockjob-txn': [testblock], - 'test-block-backend': [testblock], --# 'test-block-iothread': [testblock], -+ 'test-block-iothread': [testblock], - 'test-write-threshold': [testblock], - 'test-crypto-hash': [crypto], - 'test-crypto-hmac': [crypto], --- -2.27.0 - diff --git a/SOURCES/kvm-redhat-add-missing-entries-in-hw_compat_rhel_8_4.patch b/SOURCES/kvm-redhat-add-missing-entries-in-hw_compat_rhel_8_4.patch deleted file mode 100644 index b70c6de..0000000 --- a/SOURCES/kvm-redhat-add-missing-entries-in-hw_compat_rhel_8_4.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 8be260b07df50891463e6efbd45f84b1b8323983 Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Mon, 10 May 2021 15:37:39 -0400 -Subject: [PATCH 07/15] redhat: add missing entries in hw_compat_rhel_8_4 - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [2/12] 69b6e4dff872478b6d0b09b2587f55967e1c9740 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -Some entries from hw_compat_5_2 were missing. - -Signed-off-by: Cornelia Huck -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/core/machine.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/hw/core/machine.c b/hw/core/machine.c -index 848e7fdff6..c665e869de 100644 ---- a/hw/core/machine.c -+++ b/hw/core/machine.c -@@ -44,6 +44,10 @@ GlobalProperty hw_compat_rhel_8_4[] = { - { "ICH9-LPC", "smm-compat", "on"}, - /* hw_compat_rhel_8_4 from hw_compat_5_2 */ - { "PIIX4_PM", "smm-compat", "on"}, -+ /* 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"}, - }; - const size_t hw_compat_rhel_8_4_len = G_N_ELEMENTS(hw_compat_rhel_8_4); - --- -2.27.0 - diff --git a/SOURCES/kvm-redhat-s390x-add-rhel-8.5.0-compat-machine.patch b/SOURCES/kvm-redhat-s390x-add-rhel-8.5.0-compat-machine.patch deleted file mode 100644 index 1be8506..0000000 --- a/SOURCES/kvm-redhat-s390x-add-rhel-8.5.0-compat-machine.patch +++ /dev/null @@ -1,59 +0,0 @@ -From a5e149c13279386c4fc3fae130289ac4ac53bd3e Mon Sep 17 00:00:00 2001 -From: Cornelia Huck -Date: Mon, 10 May 2021 14:41:31 -0400 -Subject: [PATCH 06/15] redhat: s390x: add rhel-8.5.0 compat machine - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [1/12] 3560ef3f773425f1479a131df7a351df2cbb502c (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -Note that the compat entries for 8.4.0 were already wired up -in the rhel-8.4.0 machine type. - -Signed-off-by: Cornelia Huck -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/s390x/s390-virtio-ccw.c | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c -index 432f36bce5..667a99f336 100644 ---- a/hw/s390x/s390-virtio-ccw.c -+++ b/hw/s390x/s390-virtio-ccw.c -@@ -1074,15 +1074,26 @@ static void ccw_machine_2_4_class_options(MachineClass *mc) - DEFINE_CCW_MACHINE(2_4, "2.4", false); - #endif - -+static void ccw_machine_rhel850_instance_options(MachineState *machine) -+{ -+} -+ -+static void ccw_machine_rhel850_class_options(MachineClass *mc) -+{ -+} -+DEFINE_CCW_MACHINE(rhel850, "rhel8.5.0", true); -+ - static void ccw_machine_rhel840_instance_options(MachineState *machine) - { -+ ccw_machine_rhel850_instance_options(machine); - } - - static void ccw_machine_rhel840_class_options(MachineClass *mc) - { -+ ccw_machine_rhel850_class_options(mc); - compat_props_add(mc->compat_props, hw_compat_rhel_8_4, hw_compat_rhel_8_4_len); - } --DEFINE_CCW_MACHINE(rhel840, "rhel8.4.0", true); -+DEFINE_CCW_MACHINE(rhel840, "rhel8.4.0", false); - - static void ccw_machine_rhel820_instance_options(MachineState *machine) - { --- -2.27.0 - diff --git a/SOURCES/kvm-redhat-x86-Enable-kvm-asyncpf-int-by-default.patch b/SOURCES/kvm-redhat-x86-Enable-kvm-asyncpf-int-by-default.patch deleted file mode 100644 index 7fd2a56..0000000 --- a/SOURCES/kvm-redhat-x86-Enable-kvm-asyncpf-int-by-default.patch +++ /dev/null @@ -1,49 +0,0 @@ -From a9546384e1fe8b4dad9ab00c52f45dac3a8fbc00 Mon Sep 17 00:00:00 2001 -From: Vitaly Kuznetsov -Date: Tue, 8 Jun 2021 10:29:07 -0400 -Subject: [PATCH 04/12] redhat: x86: Enable 'kvm-asyncpf-int' by default -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [2/8] 2ea940445291df74dfed2d2f9f2b1f88a3eca31b (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -'kvm-asyncpf-int' feature is supported by KVM starting with RHEL-8.4 -kernel, enable the feature by default starting with RHEL-8.5 machine -type. - -Signed-off-by: Vitaly Kuznetsov -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/i386/pc.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index 0a374dec39..cdbfa84d2e 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -366,12 +366,15 @@ GlobalProperty pc_rhel_compat[] = { - { TYPE_X86_CPU, "vmx-exit-load-perf-global-ctrl", "off" }, - /* bz 1508330 */ - { "vfio-pci", "x-no-geforce-quirks", "on" }, -+ /* bz 1941397 */ -+ { TYPE_X86_CPU, "kvm-asyncpf-int", "on" }, - }; - const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); - - GlobalProperty pc_rhel_8_4_compat[] = { - /* pc_rhel_8_4_compat from pc_compat_5_2 */ - { "ICH9-LPC", "x-smi-cpu-hotunplug", "off" }, -+ { TYPE_X86_CPU, "kvm-asyncpf-int", "off" }, - }; - const size_t pc_rhel_8_4_compat_len = G_N_ELEMENTS(pc_rhel_8_4_compat); - --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-cpumodel-add-3931-and-3932.patch b/SOURCES/kvm-s390x-cpumodel-add-3931-and-3932.patch deleted file mode 100644 index 70ad80b..0000000 --- a/SOURCES/kvm-s390x-cpumodel-add-3931-and-3932.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 5536da8458b7825b084bfc94256bfdc1ca0127a3 Mon Sep 17 00:00:00 2001 -From: Christian Borntraeger -Date: Tue, 22 Jun 2021 22:19:23 +0200 -Subject: [PATCH 1/6] s390x/cpumodel: add 3931 and 3932 - -RH-Author: Cornelia Huck -RH-MergeRequest: 21: s390x/cpumodel: add 3931 and 3932 -RH-Commit: [1/1] b678fdf9364407c615678980330e496676e04f9e (cohuck/qemu-kvm-c9s) -RH-Bugzilla: 1932191 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: David Hildenbrand -RH-Acked-by: Thomas Huth - -This defines 5 new facilities and the new 3931 and 3932 machines. -As before the name is not yet known and we do use gen16a and gen16b. -The new features are part of the full model. - -The default model is still empty (same as z15) and will be added -in a separate patch at a later point in time. - -Also add the dependencies of new facilities and as a fix for z15 add -a dependency from S390_FEAT_VECTOR_PACKED_DECIMAL_ENH to -S390_VECTOR_PACKED_DECIMAL. - -[merged <20210701084348.26556-1-borntraeger@de.ibm.com>] -Signed-off-by: Christian Borntraeger -Message-Id: <20210622201923.150205-2-borntraeger@de.ibm.com> -Reviewed-by: David Hildenbrand -Signed-off-by: Cornelia Huck -(cherry picked from commit fb4a08121695a88acefcbcd86f1376df079eefee) -Signed-off-by: Cornelia Huck -Signed-off-by: Miroslav Rezanina ---- - target/s390x/cpu_features_def.h.inc | 5 +++++ - target/s390x/cpu_models.c | 6 ++++++ - target/s390x/gen-features.c | 14 ++++++++++++++ - 3 files changed, 25 insertions(+) - -diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc -index 7db3449e04..e86662bb3b 100644 ---- a/target/s390x/cpu_features_def.h.inc -+++ b/target/s390x/cpu_features_def.h.inc -@@ -109,6 +109,11 @@ DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH, "vxpdeh", STFL, 152, "Vector-Packed-Decimal- - DEF_FEAT(MSA_EXT_9, "msa9-base", STFL, 155, "Message-security-assist-extension-9 facility (excluding subfunctions)") - DEF_FEAT(ETOKEN, "etoken", STFL, 156, "Etoken facility") - DEF_FEAT(UNPACK, "unpack", STFL, 161, "Unpack facility") -+DEF_FEAT(NNPA, "nnpa", STFL, 165, "NNPA facility") -+DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH2, "vxpdeh2", STFL, 192, "Vector-Packed-Decimal-Enhancement facility 2") -+DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility") -+DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility") -+DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility") - - /* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */ - DEF_FEAT(SIE_GSLS, "gsls", SCLP_CONF_CHAR, 40, "SIE: Guest-storage-limit-suppression facility") -diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c -index 9254ff46bf..3cb4d25a10 100644 ---- a/target/s390x/cpu_models.c -+++ b/target/s390x/cpu_models.c -@@ -88,6 +88,8 @@ static S390CPUDef s390_cpu_defs[] = { - CPUDEF_INIT(0x3907, 14, 1, 47, 0x08000000U, "z14ZR1", "IBM z14 Model ZR1 GA1"), - CPUDEF_INIT(0x8561, 15, 1, 47, 0x08000000U, "gen15a", "IBM z15 T01 GA1"), - CPUDEF_INIT(0x8562, 15, 1, 47, 0x08000000U, "gen15b", "IBM z15 T02 GA1"), -+ CPUDEF_INIT(0x3931, 16, 1, 47, 0x08000000U, "gen16a", "IBM 3931 GA1"), -+ CPUDEF_INIT(0x3932, 16, 1, 47, 0x08000000U, "gen16b", "IBM 3932 GA1"), - }; - - #define QEMU_MAX_CPU_TYPE 0x2964 -@@ -815,6 +817,8 @@ static void check_consistency(const S390CPUModel *model) - { S390_FEAT_MSA_EXT_9, S390_FEAT_MSA_EXT_4 }, - { S390_FEAT_MULTIPLE_EPOCH, S390_FEAT_TOD_CLOCK_STEERING }, - { S390_FEAT_VECTOR_PACKED_DECIMAL, S390_FEAT_VECTOR }, -+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL }, -+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH }, - { S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR }, - { S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2 }, - { S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, S390_FEAT_ESOP }, -@@ -846,6 +850,8 @@ static void check_consistency(const S390CPUModel *model) - { S390_FEAT_PTFF_STOUE, S390_FEAT_MULTIPLE_EPOCH }, - { S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL, S390_FEAT_AP }, - { S390_FEAT_DIAG_318, S390_FEAT_EXTENDED_LENGTH_SCCB }, -+ { S390_FEAT_NNPA, S390_FEAT_VECTOR }, -+ { S390_FEAT_RDP, S390_FEAT_LOCAL_TLB_CLEARING }, - }; - int i; - -diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c -index a6ec918e90..8f99cea665 100644 ---- a/target/s390x/gen-features.c -+++ b/target/s390x/gen-features.c -@@ -424,6 +424,8 @@ static uint16_t base_GEN15_GA1[] = { - S390_FEAT_MISC_INSTRUCTION_EXT3, - }; - -+#define base_GEN16_GA1 EmptyFeat -+ - /* Full features (in order of release) - * Automatically includes corresponding base features. - * Full features are all features this hardware supports even if kvm/QEMU do not -@@ -567,6 +569,15 @@ static uint16_t full_GEN15_GA1[] = { - S390_FEAT_UNPACK, - }; - -+static uint16_t full_GEN16_GA1[] = { -+ S390_FEAT_NNPA, -+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, -+ S390_FEAT_BEAR_ENH, -+ S390_FEAT_RDP, -+ S390_FEAT_PAI, -+}; -+ -+ - /* Default features (in order of release) - * Automatically includes corresponding base features. - * Default features are all features this version of QEMU supports for this -@@ -652,6 +663,8 @@ static uint16_t default_GEN15_GA1[] = { - S390_FEAT_ETOKEN, - }; - -+#define default_GEN16_GA1 EmptyFeat -+ - /* QEMU (CPU model) features */ - - static uint16_t qemu_V2_11[] = { -@@ -782,6 +795,7 @@ static CpuFeatDefSpec CpuFeatDef[] = { - CPU_FEAT_INITIALIZER(GEN14_GA1), - CPU_FEAT_INITIALIZER(GEN14_GA2), - CPU_FEAT_INITIALIZER(GEN15_GA1), -+ CPU_FEAT_INITIALIZER(GEN16_GA1), - }; - - #define FEAT_GROUP_INITIALIZER(_name) \ --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-css-Add-passthrough-IRB.patch b/SOURCES/kvm-s390x-css-Add-passthrough-IRB.patch deleted file mode 100644 index 339a45c..0000000 --- a/SOURCES/kvm-s390x-css-Add-passthrough-IRB.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 4eb1f0936bfc921cad9af37f1573075148843b1d Mon Sep 17 00:00:00 2001 -From: Eric Farman -Date: Thu, 24 Jun 2021 14:15:16 -0400 -Subject: [PATCH 04/43] s390x/css: Add passthrough IRB - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Wire in the subchannel callback for building the IRB -ESW and ECW space for passthrough devices, and copy -the hardware's ESW into the IRB we are building. - -If the hardware presented concurrent sense, then copy -that sense data into the IRB's ECW space. - -Signed-off-by: Eric Farman -Message-Id: <20210617232537.1337506-5-farman@linux.ibm.com> -Signed-off-by: Cornelia Huck -(cherry picked from commit c626710fc755628d0d6b88aab0514c9238a84522) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/s390x/css.c | 16 +++++++++++++++- - hw/s390x/s390-ccw.c | 1 + - hw/vfio/ccw.c | 4 ++++ - include/hw/s390x/css.h | 3 +++ - 4 files changed, 23 insertions(+), 1 deletion(-) - -diff --git a/hw/s390x/css.c b/hw/s390x/css.c -index e77a0e523d..c3150da4f7 100644 ---- a/hw/s390x/css.c -+++ b/hw/s390x/css.c -@@ -1336,7 +1336,7 @@ static void copy_schib_to_guest(SCHIB *dest, const SCHIB *src) - } - } - --static void copy_esw_to_guest(ESW *dest, const ESW *src) -+void copy_esw_to_guest(ESW *dest, const ESW *src) - { - dest->word0 = cpu_to_be32(src->word0); - dest->erw = cpu_to_be32(src->erw); -@@ -1651,6 +1651,20 @@ static void build_irb_sense_data(SubchDev *sch, IRB *irb) - } - } - -+void build_irb_passthrough(SubchDev *sch, IRB *irb) -+{ -+ /* Copy ESW from hardware */ -+ irb->esw = sch->esw; -+ -+ /* -+ * If (irb->esw.erw & ESW_ERW_SENSE) is true, then the contents -+ * of the ECW is sense data. If false, then it is model-dependent -+ * information. Either way, copy it into the IRB for the guest to -+ * read/decide what to do with. -+ */ -+ build_irb_sense_data(sch, irb); -+} -+ - void build_irb_virtual(SubchDev *sch, IRB *irb) - { - SCHIB *schib = &sch->curr_status; -diff --git a/hw/s390x/s390-ccw.c b/hw/s390x/s390-ccw.c -index b497571863..39cbea615b 100644 ---- a/hw/s390x/s390-ccw.c -+++ b/hw/s390x/s390-ccw.c -@@ -125,6 +125,7 @@ static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev, Error **errp) - } - sch->driver_data = cdev; - sch->do_subchannel_work = do_subchannel_work_passthrough; -+ sch->irb_cb = build_irb_passthrough; - - ccw_dev->sch = sch; - ret = css_sch_build_schib(sch, &cdev->hostid); -diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c -index b2df708e4b..5f141d44a4 100644 ---- a/hw/vfio/ccw.c -+++ b/hw/vfio/ccw.c -@@ -322,6 +322,7 @@ static void vfio_ccw_io_notifier_handler(void *opaque) - SCHIB *schib = &sch->curr_status; - SCSW s; - IRB irb; -+ ESW esw; - int size; - - if (!event_notifier_test_and_clear(&vcdev->io_notifier)) { -@@ -372,6 +373,9 @@ static void vfio_ccw_io_notifier_handler(void *opaque) - copy_scsw_to_guest(&s, &irb.scsw); - schib->scsw = s; - -+ copy_esw_to_guest(&esw, &irb.esw); -+ sch->esw = esw; -+ - /* If a uint check is pending, copy sense data. */ - if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && - (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) { -diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h -index 7c23a13f3d..10ed1df1bb 100644 ---- a/include/hw/s390x/css.h -+++ b/include/hw/s390x/css.h -@@ -141,6 +141,7 @@ struct SubchDev { - void (*irb_cb)(SubchDev *, IRB *); - SenseId id; - void *driver_data; -+ ESW esw; - }; - - static inline void sch_gen_unit_exception(SubchDev *sch) -@@ -202,6 +203,7 @@ int css_sch_build_schib(SubchDev *sch, CssDevId *dev_id); - unsigned int css_find_free_chpid(uint8_t cssid); - uint16_t css_build_subchannel_id(SubchDev *sch); - void copy_scsw_to_guest(SCSW *dest, const SCSW *src); -+void copy_esw_to_guest(ESW *dest, const ESW *src); - void css_inject_io_interrupt(SubchDev *sch); - void css_reset(void); - void css_reset_sch(SubchDev *sch); -@@ -216,6 +218,7 @@ void css_clear_sei_pending(void); - IOInstEnding s390_ccw_cmd_request(SubchDev *sch); - IOInstEnding do_subchannel_work_virtual(SubchDev *sub); - IOInstEnding do_subchannel_work_passthrough(SubchDev *sub); -+void build_irb_passthrough(SubchDev *sch, IRB *irb); - void build_irb_virtual(SubchDev *sch, IRB *irb); - - int s390_ccw_halt(SubchDev *sch); --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-css-Introduce-an-ESW-struct.patch b/SOURCES/kvm-s390x-css-Introduce-an-ESW-struct.patch deleted file mode 100644 index de99f03..0000000 --- a/SOURCES/kvm-s390x-css-Introduce-an-ESW-struct.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 9a12329325d94ab56dbab976b4423fe7db0e8d0b Mon Sep 17 00:00:00 2001 -From: Eric Farman -Date: Thu, 24 Jun 2021 14:15:13 -0400 -Subject: [PATCH 01/43] s390x/css: Introduce an ESW struct - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -The Interrupt Response Block is comprised of several other -structures concatenated together, but only the 12-byte -Subchannel-Status Word (SCSW) is defined as a proper struct. -Everything else is a simple array of 32-bit words. - -Let's define a proper struct for the 20-byte Extended-Status -Word (ESW) so that we can make good decisions about the sense -data that would go into the ECW area for virtual vs -passthrough devices. - -[CH: adapted ESW definition to build with mingw, as discussed] -Signed-off-by: Eric Farman -Message-Id: <20210617232537.1337506-2-farman@linux.ibm.com> -Signed-off-by: Cornelia Huck -(cherry picked from commit 3fdc622ad79636f3d7f8bed50a53bc28af1850e1) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/s390x/css.c | 19 +++++++++++++------ - include/hw/s390x/ioinst.h | 12 +++++++++++- - 2 files changed, 24 insertions(+), 7 deletions(-) - -diff --git a/hw/s390x/css.c b/hw/s390x/css.c -index 4149b8e5a7..bd3172a688 100644 ---- a/hw/s390x/css.c -+++ b/hw/s390x/css.c -@@ -1336,6 +1336,14 @@ static void copy_schib_to_guest(SCHIB *dest, const SCHIB *src) - } - } - -+static void copy_esw_to_guest(ESW *dest, const ESW *src) -+{ -+ dest->word0 = cpu_to_be32(src->word0); -+ dest->erw = cpu_to_be32(src->erw); -+ dest->word2 = cpu_to_be64(src->word2); -+ dest->word4 = cpu_to_be32(src->word4); -+} -+ - IOInstEnding css_do_stsch(SubchDev *sch, SCHIB *schib) - { - int ret; -@@ -1605,9 +1613,8 @@ static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw, - - copy_scsw_to_guest(&dest->scsw, &src->scsw); - -- for (i = 0; i < ARRAY_SIZE(dest->esw); i++) { -- dest->esw[i] = cpu_to_be32(src->esw[i]); -- } -+ copy_esw_to_guest(&dest->esw, &src->esw); -+ - for (i = 0; i < ARRAY_SIZE(dest->ecw); i++) { - dest->ecw[i] = cpu_to_be32(src->ecw[i]); - } -@@ -1656,9 +1663,9 @@ int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - SCSW_CSTAT_CHN_CTRL_CHK | - SCSW_CSTAT_INTF_CTRL_CHK)) { - irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF; -- irb.esw[0] = 0x04804000; -+ irb.esw.word0 = 0x04804000; - } else { -- irb.esw[0] = 0x00800000; -+ irb.esw.word0 = 0x00800000; - } - /* If a unit check is pending, copy sense data. */ - if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && -@@ -1671,7 +1678,7 @@ int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - for (i = 0; i < ARRAY_SIZE(irb.ecw); i++) { - irb.ecw[i] = be32_to_cpu(irb.ecw[i]); - } -- irb.esw[1] = 0x01000000 | (sizeof(sch->sense_data) << 8); -+ irb.esw.erw = ESW_ERW_SENSE | (sizeof(sch->sense_data) << 8); - } - } - /* Store the irb to the guest. */ -diff --git a/include/hw/s390x/ioinst.h b/include/hw/s390x/ioinst.h -index c6737a30d4..3771fff9d4 100644 ---- a/include/hw/s390x/ioinst.h -+++ b/include/hw/s390x/ioinst.h -@@ -123,10 +123,20 @@ typedef struct SCHIB { - uint8_t mda[4]; - } QEMU_PACKED SCHIB; - -+/* format-0 extended-status word */ -+typedef struct ESW { -+ uint32_t word0; /* subchannel logout for format 0 */ -+ uint32_t erw; -+ uint64_t word2; /* failing-storage address for format 0 */ -+ uint32_t word4; /* secondary-CCW address for format 0 */ -+} QEMU_PACKED ESW; -+ -+#define ESW_ERW_SENSE 0x01000000 -+ - /* interruption response block */ - typedef struct IRB { - SCSW scsw; -- uint32_t esw[5]; -+ ESW esw; - uint32_t ecw[8]; - uint32_t emw[8]; - } IRB; --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-css-Refactor-IRB-construction.patch b/SOURCES/kvm-s390x-css-Refactor-IRB-construction.patch deleted file mode 100644 index f55bf79..0000000 --- a/SOURCES/kvm-s390x-css-Refactor-IRB-construction.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 0f4d8c51b51a23a87f1e3e9e764151352f652f3b Mon Sep 17 00:00:00 2001 -From: Eric Farman -Date: Thu, 24 Jun 2021 14:15:15 -0400 -Subject: [PATCH 03/43] s390x/css: Refactor IRB construction - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Currently, all subchannel types have "sense data" copied into -the IRB.ECW space, and a couple flags enabled in the IRB.SCSW -and IRB.ESW. But for passthrough (vfio-ccw) subchannels, -this data isn't populated in the first place, so enabling -those flags leads to unexpected behavior if the guest tries to -process the sense data (zeros) in the IRB.ECW. - -Let's add a subchannel callback that builds these portions of -the IRB, and move the existing code into a routine for those -virtual subchannels. The passthrough subchannels will be able -to piggy-back onto this later. - -Signed-off-by: Eric Farman -Message-Id: <20210617232537.1337506-4-farman@linux.ibm.com> -Signed-off-by: Cornelia Huck -(cherry picked from commit 0599a046acf1b625e97cef0aa702b5d86528c642) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/s390x/3270-ccw.c | 1 + - hw/s390x/css.c | 45 +++++++++++++++++++++++++++--------------- - hw/s390x/virtio-ccw.c | 1 + - include/hw/s390x/css.h | 2 ++ - 4 files changed, 33 insertions(+), 16 deletions(-) - -diff --git a/hw/s390x/3270-ccw.c b/hw/s390x/3270-ccw.c -index f3e7342b1e..9efee591f9 100644 ---- a/hw/s390x/3270-ccw.c -+++ b/hw/s390x/3270-ccw.c -@@ -130,6 +130,7 @@ static void emulated_ccw_3270_realize(DeviceState *ds, Error **errp) - EMULATED_CCW_3270_CHPID_TYPE); - sch->do_subchannel_work = do_subchannel_work_virtual; - sch->ccw_cb = emulated_ccw_3270_cb; -+ sch->irb_cb = build_irb_virtual; - - ck->init(dev, &err); - if (err) { -diff --git a/hw/s390x/css.c b/hw/s390x/css.c -index fac7d5b39d..e77a0e523d 100644 ---- a/hw/s390x/css.c -+++ b/hw/s390x/css.c -@@ -1651,6 +1651,30 @@ static void build_irb_sense_data(SubchDev *sch, IRB *irb) - } - } - -+void build_irb_virtual(SubchDev *sch, IRB *irb) -+{ -+ SCHIB *schib = &sch->curr_status; -+ uint16_t stctl = schib->scsw.ctrl & SCSW_CTRL_MASK_STCTL; -+ -+ if (stctl & SCSW_STCTL_STATUS_PEND) { -+ if (schib->scsw.cstat & (SCSW_CSTAT_DATA_CHECK | -+ SCSW_CSTAT_CHN_CTRL_CHK | -+ SCSW_CSTAT_INTF_CTRL_CHK)) { -+ irb->scsw.flags |= SCSW_FLAGS_MASK_ESWF; -+ irb->esw.word0 = 0x04804000; -+ } else { -+ irb->esw.word0 = 0x00800000; -+ } -+ /* If a unit check is pending, copy sense data. */ -+ if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && -+ (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) { -+ irb->scsw.flags |= SCSW_FLAGS_MASK_ESWF | SCSW_FLAGS_MASK_ECTL; -+ build_irb_sense_data(sch, irb); -+ irb->esw.erw = ESW_ERW_SENSE | (sizeof(sch->sense_data) << 8); -+ } -+ } -+} -+ - int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - { - SCHIB *schib = &sch->curr_status; -@@ -1669,23 +1693,12 @@ int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - - /* Copy scsw from current status. */ - irb.scsw = schib->scsw; -- if (stctl & SCSW_STCTL_STATUS_PEND) { -- if (schib->scsw.cstat & (SCSW_CSTAT_DATA_CHECK | -- SCSW_CSTAT_CHN_CTRL_CHK | -- SCSW_CSTAT_INTF_CTRL_CHK)) { -- irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF; -- irb.esw.word0 = 0x04804000; -- } else { -- irb.esw.word0 = 0x00800000; -- } -- /* If a unit check is pending, copy sense data. */ -- if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && -- (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) { -- irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF | SCSW_FLAGS_MASK_ECTL; -- build_irb_sense_data(sch, &irb); -- irb.esw.erw = ESW_ERW_SENSE | (sizeof(sch->sense_data) << 8); -- } -+ -+ /* Build other IRB data, if necessary */ -+ if (sch->irb_cb) { -+ sch->irb_cb(sch, &irb); - } -+ - /* Store the irb to the guest. */ - p = schib->pmcw; - copy_irb_to_guest(target_irb, &irb, &p, irb_len); -diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c -index 8195f3546e..5a1eb39325 100644 ---- a/hw/s390x/virtio-ccw.c -+++ b/hw/s390x/virtio-ccw.c -@@ -754,6 +754,7 @@ static void virtio_ccw_device_realize(VirtioCcwDevice *dev, Error **errp) - sch->id.reserved = 0xff; - sch->id.cu_type = VIRTIO_CCW_CU_TYPE; - sch->do_subchannel_work = do_subchannel_work_virtual; -+ sch->irb_cb = build_irb_virtual; - ccw_dev->sch = sch; - dev->indicators = NULL; - dev->revision = -1; -diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h -index bba7593d2e..7c23a13f3d 100644 ---- a/include/hw/s390x/css.h -+++ b/include/hw/s390x/css.h -@@ -138,6 +138,7 @@ struct SubchDev { - int (*ccw_cb) (SubchDev *, CCW1); - void (*disable_cb)(SubchDev *); - IOInstEnding (*do_subchannel_work) (SubchDev *); -+ void (*irb_cb)(SubchDev *, IRB *); - SenseId id; - void *driver_data; - }; -@@ -215,6 +216,7 @@ void css_clear_sei_pending(void); - IOInstEnding s390_ccw_cmd_request(SubchDev *sch); - IOInstEnding do_subchannel_work_virtual(SubchDev *sub); - IOInstEnding do_subchannel_work_passthrough(SubchDev *sub); -+void build_irb_virtual(SubchDev *sch, IRB *irb); - - int s390_ccw_halt(SubchDev *sch); - int s390_ccw_clear(SubchDev *sch); --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-css-Split-out-the-IRB-sense-data.patch b/SOURCES/kvm-s390x-css-Split-out-the-IRB-sense-data.patch deleted file mode 100644 index 2c8a3f8..0000000 --- a/SOURCES/kvm-s390x-css-Split-out-the-IRB-sense-data.patch +++ /dev/null @@ -1,63 +0,0 @@ -From a987dfced200adf1e4c2d3c39f0b5da0fb7e6ead Mon Sep 17 00:00:00 2001 -From: Eric Farman -Date: Thu, 24 Jun 2021 14:15:14 -0400 -Subject: [PATCH 02/43] s390x/css: Split out the IRB sense data - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Let's move this logic into its own routine, -so it can be reused later. - -Signed-off-by: Eric Farman -Reviewed-by: Thomas Huth -Message-Id: <20210617232537.1337506-3-farman@linux.ibm.com> -Signed-off-by: Cornelia Huck -(cherry picked from commit 1b01dedaed41c2ca6129475c22b7b778b109fae8) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/s390x/css.c | 19 ++++++++++++------- - 1 file changed, 12 insertions(+), 7 deletions(-) - -diff --git a/hw/s390x/css.c b/hw/s390x/css.c -index bd3172a688..fac7d5b39d 100644 ---- a/hw/s390x/css.c -+++ b/hw/s390x/css.c -@@ -1640,6 +1640,17 @@ static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw, - *irb_len = sizeof(*dest); - } - -+static void build_irb_sense_data(SubchDev *sch, IRB *irb) -+{ -+ int i; -+ -+ /* Attention: sense_data is already BE! */ -+ memcpy(irb->ecw, sch->sense_data, sizeof(sch->sense_data)); -+ for (i = 0; i < ARRAY_SIZE(irb->ecw); i++) { -+ irb->ecw[i] = be32_to_cpu(irb->ecw[i]); -+ } -+} -+ - int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - { - SCHIB *schib = &sch->curr_status; -@@ -1670,14 +1681,8 @@ int css_do_tsch_get_irb(SubchDev *sch, IRB *target_irb, int *irb_len) - /* If a unit check is pending, copy sense data. */ - if ((schib->scsw.dstat & SCSW_DSTAT_UNIT_CHECK) && - (schib->pmcw.chars & PMCW_CHARS_MASK_CSENSE)) { -- int i; -- - irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF | SCSW_FLAGS_MASK_ECTL; -- /* Attention: sense_data is already BE! */ -- memcpy(irb.ecw, sch->sense_data, sizeof(sch->sense_data)); -- for (i = 0; i < ARRAY_SIZE(irb.ecw); i++) { -- irb.ecw[i] = be32_to_cpu(irb.ecw[i]); -- } -+ build_irb_sense_data(sch, &irb); - irb.esw.erw = ESW_ERW_SENSE | (sizeof(sch->sense_data) << 8); - } - } --- -2.27.0 - diff --git a/SOURCES/kvm-s390x-redhat-disable-experimental-3270-device.patch b/SOURCES/kvm-s390x-redhat-disable-experimental-3270-device.patch deleted file mode 100644 index 232da25..0000000 --- a/SOURCES/kvm-s390x-redhat-disable-experimental-3270-device.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 5101527fb425c2d17ef04b0ed87b3810cf6db7bc Mon Sep 17 00:00:00 2001 -From: Cornelia Huck -Date: Wed, 26 May 2021 11:01:00 +0200 -Subject: [PATCH] s390x/redhat: disable experimental 3270 device - -RH-Author: Cornelia Huck -RH-MergeRequest: 9: Disable the 'x-terminal3270' device in qemu-kvm on s390x -RH-Commit: [1/1] 1df70e856fba434d06587a05c44c4dc5a367f1f7 (cohuck/qemu-kvm) -RH-Bugzilla: 1962479 -RH-Acked-by: Thomas Huth -RH-Acked-by: David Hildenbrand -RH-Acked-by: Miroslav Rezanina - -The "x-terminal3270" device has been experimental for years, -has known limitations, has no known users anymore, and is not -supported by libvirt. - -Therefore, disable it in our downstream builds, as it is not -really supported. - -Signed-off-by: Cornelia Huck ---- - default-configs/devices/s390x-rh-devices.mak | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/default-configs/devices/s390x-rh-devices.mak b/default-configs/devices/s390x-rh-devices.mak -index 08a15f3e01..fe8613b8f6 100644 ---- a/default-configs/devices/s390x-rh-devices.mak -+++ b/default-configs/devices/s390x-rh-devices.mak -@@ -6,7 +6,6 @@ CONFIG_S390_FLIC=y - CONFIG_S390_FLIC_KVM=y - CONFIG_SCLPCONSOLE=y - CONFIG_SCSI=y --CONFIG_TERMINAL3270=y - CONFIG_VFIO=y - CONFIG_VFIO_AP=y - CONFIG_VFIO_CCW=y --- -2.27.0 - diff --git a/SOURCES/kvm-scsi-generic-pass-max_segments-via-max_iov-field-in-.patch b/SOURCES/kvm-scsi-generic-pass-max_segments-via-max_iov-field-in-.patch deleted file mode 100644 index 612fb9a..0000000 --- a/SOURCES/kvm-scsi-generic-pass-max_segments-via-max_iov-field-in-.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 05038edf628c6bca7cef061b7b1fac2b0b2163af Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 16 Jul 2021 16:51:30 -0400 -Subject: [PATCH 14/43] scsi-generic: pass max_segments via max_iov field in - BlockLimits - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -I/O to a disk via read/write is not limited by the number of segments allowed -by the host adapter; the kernel can split requests if needed, and the limit -imposed by the host adapter can be very low (256k or so) to avoid that SG_IO -returns EINVAL if memory is heavily fragmented. - -Since this value is only interesting for SG_IO-based I/O, do not include -it in the max_transfer and only take it into account when patching the -block limits VPD page in the scsi-generic device. - -Signed-off-by: Paolo Bonzini -Reviewed-by: Max Reitz -(cherry picked from commit 01ef8185b809af9d287e1a03a3f9d8ea8231118a) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - block/file-posix.c | 3 +-- - hw/scsi/scsi-generic.c | 6 ++++-- - 2 files changed, 5 insertions(+), 4 deletions(-) - -diff --git a/block/file-posix.c b/block/file-posix.c -index 74d4903dc1..1a6c799e19 100644 ---- a/block/file-posix.c -+++ b/block/file-posix.c -@@ -1263,8 +1263,7 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp) - - ret = sg_get_max_segments(s->fd); - if (ret > 0) { -- bs->bl.max_transfer = MIN(bs->bl.max_transfer, -- ret * qemu_real_host_page_size); -+ bs->bl.max_iov = ret; - } - } - -diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c -index 98c30c5d5c..82e1e2ee79 100644 ---- a/hw/scsi/scsi-generic.c -+++ b/hw/scsi/scsi-generic.c -@@ -179,10 +179,12 @@ static void scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s) - (r->req.cmd.buf[1] & 0x01)) { - page = r->req.cmd.buf[2]; - if (page == 0xb0) { -- uint32_t max_transfer = -- blk_get_max_transfer(s->conf.blk) / s->blocksize; -+ uint32_t max_transfer = blk_get_max_transfer(s->conf.blk); -+ uint32_t max_iov = blk_get_max_iov(s->conf.blk); - - assert(max_transfer); -+ max_transfer = MIN_NON_ZERO(max_transfer, max_iov * qemu_real_host_page_size) -+ / s->blocksize; - stl_be_p(&r->buf[8], max_transfer); - /* Also take care of the opt xfer len. */ - stl_be_p(&r->buf[12], --- -2.27.0 - diff --git a/SOURCES/kvm-sockets-update-SOCKET_ADDRESS_TYPE_FD-listen-2-backl.patch b/SOURCES/kvm-sockets-update-SOCKET_ADDRESS_TYPE_FD-listen-2-backl.patch deleted file mode 100644 index 75d505c..0000000 --- a/SOURCES/kvm-sockets-update-SOCKET_ADDRESS_TYPE_FD-listen-2-backl.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 415a6a1ced90cc8b8691eb7ab027bba4611fc236 Mon Sep 17 00:00:00 2001 -From: Stefan Hajnoczi -Date: Wed, 2 Jun 2021 15:51:02 -0400 -Subject: [PATCH 04/21] sockets: update SOCKET_ADDRESS_TYPE_FD listen(2) - backlog -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [3/8] a8fd97eb477ad51fca75c1cc344185e1de59caf1 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -socket_get_fd() fails with the error "socket_get_fd: too many -connections" if the given listen backlog value is not 1. - -Not all callers set the backlog to 1. For example, commit -582d4210eb2f2ab5baac328fe4b479cd86da1647 ("qemu-nbd: Use SOMAXCONN for -socket listen() backlog") uses SOMAXCONN. This will always fail with in -socket_get_fd(). - -This patch calls listen(2) on the fd to update the backlog value. The -socket may already be in the listen state. I have tested that this works -on Linux 5.10 and macOS Catalina. - -As a bonus this allows us to detect when the fd cannot listen. Now we'll -be able to catch unbound or connected fds in socket_listen(). - -Drop the num argument from socket_get_fd() since this function is also -called by socket_connect() where a listen backlog value does not make -sense. - -Fixes: e5b6353cf25c99c3f08bf51e29933352f7140e8f ("socket: Add backlog parameter to socket_listen") -Reported-by: Richard W.M. Jones -Cc: Juan Quintela -Cc: Eric Blake -Signed-off-by: Stefan Hajnoczi -Message-Id: <20210310173004.420190-1-stefanha@redhat.com> -Tested-by: Richard W.M. Jones -Reviewed-by: Eric Blake -Reviewed-by: Stefano Garzarella -Signed-off-by: Eric Blake -(cherry picked from commit 37179e9ea45d6428b29ae789209c119ac18c1d39) -Signed-off-by: Stefan Hajnoczi -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - util/qemu-sockets.c | 29 ++++++++++++++++++++++------- - 1 file changed, 22 insertions(+), 7 deletions(-) - -diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c -index 8af0278f15..2463c49773 100644 ---- a/util/qemu-sockets.c -+++ b/util/qemu-sockets.c -@@ -1116,14 +1116,10 @@ fail: - return NULL; - } - --static int socket_get_fd(const char *fdstr, int num, Error **errp) -+static int socket_get_fd(const char *fdstr, Error **errp) - { - Monitor *cur_mon = monitor_cur(); - int fd; -- if (num != 1) { -- error_setg_errno(errp, EINVAL, "socket_get_fd: too many connections"); -- return -1; -- } - if (cur_mon) { - fd = monitor_get_fd(cur_mon, fdstr, errp); - if (fd < 0) { -@@ -1159,7 +1155,7 @@ int socket_connect(SocketAddress *addr, Error **errp) - break; - - case SOCKET_ADDRESS_TYPE_FD: -- fd = socket_get_fd(addr->u.fd.str, 1, errp); -+ fd = socket_get_fd(addr->u.fd.str, errp); - break; - - case SOCKET_ADDRESS_TYPE_VSOCK: -@@ -1187,7 +1183,26 @@ int socket_listen(SocketAddress *addr, int num, Error **errp) - break; - - case SOCKET_ADDRESS_TYPE_FD: -- fd = socket_get_fd(addr->u.fd.str, num, errp); -+ fd = socket_get_fd(addr->u.fd.str, errp); -+ if (fd < 0) { -+ return -1; -+ } -+ -+ /* -+ * If the socket is not yet in the listen state, then transition it to -+ * the listen state now. -+ * -+ * If it's already listening then this updates the backlog value as -+ * requested. -+ * -+ * If this socket cannot listen because it's already in another state -+ * (e.g. unbound or connected) then we'll catch the error here. -+ */ -+ if (listen(fd, num) != 0) { -+ error_setg_errno(errp, errno, "Failed to listen on fd socket"); -+ closesocket(fd); -+ return -1; -+ } - break; - - case SOCKET_ADDRESS_TYPE_VSOCK: --- -2.27.0 - diff --git a/SOURCES/kvm-spapr-Don-t-hijack-current_machine-boot_order.patch b/SOURCES/kvm-spapr-Don-t-hijack-current_machine-boot_order.patch deleted file mode 100644 index 3cc304d..0000000 --- a/SOURCES/kvm-spapr-Don-t-hijack-current_machine-boot_order.patch +++ /dev/null @@ -1,115 +0,0 @@ -From b859b919acc83ea12c5c5b2991afac47e9532660 Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Thu, 3 Jun 2021 13:29:40 -0400 -Subject: [PATCH 06/21] spapr: Don't hijack current_machine->boot_order -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [5/8] 04822ea86e438f013915cd46e09a33627a640a47 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -From: Greg Kurz - -QEMU 6.0 moved all the -boot variables to the machine. Especially, the -removal of the boot_order static changed the handling of '-boot once' -from: - - if (boot_once) { - qemu_boot_set(boot_once, &error_fatal); - qemu_register_reset(restore_boot_order, g_strdup(boot_order)); - } - -to - - if (current_machine->boot_once) { - qemu_boot_set(current_machine->boot_once, &error_fatal); - qemu_register_reset(restore_boot_order, - g_strdup(current_machine->boot_order)); - } - -This means that we now register as subsequent boot order a copy -of current_machine->boot_once that was just set with the previous -call to qemu_boot_set(), i.e. we never transition away from the -once boot order. - -It is certainly fragile^Wwrong for the spapr code to hijack a -field of the base machine type object like that. The boot order -rework simply turned this software boundary violation into an -actual bug. - -Have the spapr code to handle that with its own field in -SpaprMachineState. Also kfree() the initial boot device -string when "once" was used. - -Fixes: 4b7acd2ac821 ("vl: clean up -boot variables") -Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1960119 -Cc: pbonzini@redhat.com -Signed-off-by: Greg Kurz -Message-Id: <20210521160735.1901914-1-groug@kaod.org> -Signed-off-by: David Gibson -(cherry picked from commit 3bf0844f3be77b24cc8f56fc8df9ff199f8324cb) -Signed-off-by: Greg Kurz - -Conflicts: - include/hw/ppc/spapr.h - -Trivial context conflict because downstream has experimental support -for secure guests (f23e4b5090ba). - -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/spapr.c | 8 +++++--- - include/hw/ppc/spapr.h | 3 +++ - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c -index 653574ba91..11db32c537 100644 ---- a/hw/ppc/spapr.c -+++ b/hw/ppc/spapr.c -@@ -1006,7 +1006,7 @@ static void spapr_dt_chosen(SpaprMachineState *spapr, void *fdt, bool reset) - _FDT(chosen = fdt_add_subnode(fdt, 0, "chosen")); - - if (reset) { -- const char *boot_device = machine->boot_order; -+ const char *boot_device = spapr->boot_device; - char *stdout_path = spapr_vio_stdout_path(spapr->vio_bus); - size_t cb = 0; - char *bootlist = get_boot_devices_list(&cb); -@@ -2364,8 +2364,10 @@ static SaveVMHandlers savevm_htab_handlers = { - static void spapr_boot_set(void *opaque, const char *boot_device, - Error **errp) - { -- MachineState *machine = MACHINE(opaque); -- machine->boot_order = g_strdup(boot_device); -+ SpaprMachineState *spapr = SPAPR_MACHINE(opaque); -+ -+ g_free(spapr->boot_device); -+ spapr->boot_device = g_strdup(boot_device); - } - - static void spapr_create_lmb_dr_connectors(SpaprMachineState *spapr) -diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h -index 54cdde8980..6d15066bc3 100644 ---- a/include/hw/ppc/spapr.h -+++ b/include/hw/ppc/spapr.h -@@ -227,6 +227,9 @@ struct SpaprMachineState { - /* Secure Guest support via x-svm-allowed */ - bool svm_allowed; - -+ /* Set by -boot */ -+ char *boot_device; -+ - /*< public >*/ - char *kvm_type; - char *host_model; --- -2.27.0 - diff --git a/SOURCES/kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch b/SOURCES/kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch deleted file mode 100644 index e556d49..0000000 --- a/SOURCES/kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 389b2a01f9b75575996eaab195a9697840ae5f29 Mon Sep 17 00:00:00 2001 -From: Mahesh Salgaonkar -Date: Wed, 30 Jun 2021 13:27:47 -0400 -Subject: [PATCH 2/6] spapr: Fix EEH capability issue on KVM guest for PCI - passthru - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 22: Synchronize with RHEL-AV 8.5 release 23 to RHEL 9 -RH-Commit: [1/5] 86642761bad229c080e180ea9ebd0a4f67d2a4f7 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 - -With upstream kernel, especially after commit 98ba956f6a389 -("powerpc/pseries/eeh: Rework device EEH PE determination") we see that KVM -guest isn't able to enable EEH option for PCI pass-through devices anymore. - -[root@atest-guest ~]# dmesg | grep EEH -[ 0.032337] EEH: pSeries platform initialized -[ 0.298207] EEH: No capable adapters found: recovery disabled. -[root@atest-guest ~]# - -So far the linux kernel was assuming pe_config_addr equal to device's -config_addr and using it to enable EEH on the PE through ibm,set-eeh-option -RTAS call. Which wasn't the correct way as per PAPR. The linux kernel -commit 98ba956f6a389 fixed this flow. With that fixed, linux now uses PE -config address returned by ibm,get-config-addr-info2 RTAS call to enable -EEH option per-PE basis instead of per-device basis. However this has -uncovered a bug in qemu where ibm,set-eeh-option is treating PE config -address as per-device config address. - -Hence in qemu guest with recent kernel the ibm,set-eeh-option RTAS call -fails with -3 return value indicating that there is no PCI device exist for -the specified PE config address. The rtas_ibm_set_eeh_option call uses -pci_find_device() to get the PC device that matches specific bus and devfn -extracted from PE config address passed as argument. Thus it tries to map -the PE config address to a single specific PCI device 'bus->devices[devfn]' -which always results into checking device on slot 0 'bus->devices[0]'. -This succeeds when there is a pass-through device (vfio-pci) present on -slot 0. But in cases where there is no pass-through device present in slot -0, but present in non-zero slots, ibm,set-eeh-option call fails to enable -the EEH capability. - -hw/ppc/spapr_pci_vfio.c: spapr_phb_vfio_eeh_set_option() - case RTAS_EEH_ENABLE: { - PCIHostState *phb; - PCIDevice *pdev; - - /* - * The EEH functionality is enabled on basis of PCI device, - * instead of PE. We need check the validity of the PCI - * device address. - */ - phb = PCI_HOST_BRIDGE(sphb); - pdev = pci_find_device(phb->bus, - (addr >> 16) & 0xFF, (addr >> 8) & 0xFF); - if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { - return RTAS_OUT_PARAM_ERROR; - } - -hw/pci/pci.c:pci_find_device() - -PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn) -{ - bus = pci_find_bus_nr(bus, bus_num); - - if (!bus) - return NULL; - - return bus->devices[devfn]; -} - -This patch fixes ibm,set-eeh-option to check for presence of any PCI device -(vfio-pci) under specified bus and enable the EEH if found. The current -code already makes sure that all the devices on that bus are from same -iommu group (within same PE) and fail very early if it does not. - -After this fix guest is able to find EEH capable devices and enable EEH -recovery on it. - -[root@atest-guest ~]# dmesg | grep EEH -[ 0.048139] EEH: pSeries platform initialized -[ 0.405115] EEH: Capable adapter found: recovery enabled. -[root@atest-guest ~]# - -Reviewed-by: Daniel Henrique Barboza -Signed-off-by: Mahesh Salgaonkar -Message-Id: <162158429107.145117.5843504911924013125.stgit@jupiter> -Signed-off-by: David Gibson -(cherry picked from commit ac9ef668321ebb6eb871a0c4dd380fa7d7891b4e) -Signed-off-by: Daniel Henrique Barboza -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/spapr_pci_vfio.c | 40 +++++++++++++++++++++++++++++++++------- - 1 file changed, 33 insertions(+), 7 deletions(-) - -diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c -index e0547b1740..6587c8cb5b 100644 ---- a/hw/ppc/spapr_pci_vfio.c -+++ b/hw/ppc/spapr_pci_vfio.c -@@ -47,6 +47,16 @@ void spapr_phb_vfio_reset(DeviceState *qdev) - spapr_phb_vfio_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev)); - } - -+static void spapr_eeh_pci_find_device(PCIBus *bus, PCIDevice *pdev, -+ void *opaque) -+{ -+ bool *found = opaque; -+ -+ if (object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { -+ *found = true; -+ } -+} -+ - int spapr_phb_vfio_eeh_set_option(SpaprPhbState *sphb, - unsigned int addr, int option) - { -@@ -59,17 +69,33 @@ int spapr_phb_vfio_eeh_set_option(SpaprPhbState *sphb, - break; - case RTAS_EEH_ENABLE: { - PCIHostState *phb; -- PCIDevice *pdev; -+ bool found = false; - - /* -- * The EEH functionality is enabled on basis of PCI device, -- * instead of PE. We need check the validity of the PCI -- * device address. -+ * The EEH functionality is enabled per sphb level instead of -+ * per PCI device. We have already identified this specific sphb -+ * based on buid passed as argument to ibm,set-eeh-option rtas -+ * call. Now we just need to check the validity of the PCI -+ * pass-through devices (vfio-pci) under this sphb bus. -+ * We have already validated that all the devices under this sphb -+ * are from same iommu group (within same PE) before comming here. -+ * -+ * Prior to linux commit 98ba956f6a389 ("powerpc/pseries/eeh: -+ * Rework device EEH PE determination") kernel would call -+ * eeh-set-option for each device in the PE using the device's -+ * config_address as the argument rather than the PE address. -+ * Hence if we check validity of supplied config_addr whether -+ * it matches to this PHB will cause issues with older kernel -+ * versions v5.9 and older. If we return an error from -+ * eeh-set-option when the argument isn't a valid PE address -+ * then older kernels (v5.9 and older) will interpret that as -+ * EEH not being supported. - */ - phb = PCI_HOST_BRIDGE(sphb); -- pdev = pci_find_device(phb->bus, -- (addr >> 16) & 0xFF, (addr >> 8) & 0xFF); -- if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { -+ pci_for_each_device(phb->bus, (addr >> 16) & 0xFF, -+ spapr_eeh_pci_find_device, &found); -+ -+ if (!found) { - return RTAS_OUT_PARAM_ERROR; - } - --- -2.27.0 - diff --git a/SOURCES/kvm-spapr-Remove-stale-comment-about-power-saving-LPCR-b.patch b/SOURCES/kvm-spapr-Remove-stale-comment-about-power-saving-LPCR-b.patch deleted file mode 100644 index 4c7c9a1..0000000 --- a/SOURCES/kvm-spapr-Remove-stale-comment-about-power-saving-LPCR-b.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 63933b51e447d4acb08d3900ff64d150a3f2bdf8 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Wed, 9 Jun 2021 05:58:34 -0400 -Subject: [PATCH 08/21] spapr: Remove stale comment about power-saving LPCR - bits -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [7/8] 12872a0193d22915de5d71d8055094f9f15e63b0 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -From: Nicholas Piggin - -Commit 47a9b551547 ("spapr: Clean up handling of LPCR power-saving exit -bits") moved this logic but did not remove the comment from the -previous location. - -Signed-off-by: Nicholas Piggin -Message-Id: <20210526091626.3388262-2-npiggin@gmail.com> -Reviewed-by: Cédric Le Goater -Reviewed-by: Greg Kurz -Signed-off-by: David Gibson -Signed-off-by: Laurent Vivier -(cherry picked from commit 7be3bf6c8429969f97728bb712d9a99997835607) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/spapr_rtas.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c -index 8a79f9c628..91c71d1c94 100644 ---- a/hw/ppc/spapr_rtas.c -+++ b/hw/ppc/spapr_rtas.c -@@ -164,7 +164,6 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMachineState *spapr, - - env->msr = (1ULL << MSR_SF) | (1ULL << MSR_ME); - -- /* Enable Power-saving mode Exit Cause exceptions for the new CPU */ - lpcr = env->spr[SPR_LPCR]; - if (!pcc->interrupts_big_endian(callcpu)) { - lpcr |= LPCR_ILE; --- -2.27.0 - diff --git a/SOURCES/kvm-spapr-Set-LPCR-to-current-AIL-mode-when-starting-a-n.patch b/SOURCES/kvm-spapr-Set-LPCR-to-current-AIL-mode-when-starting-a-n.patch deleted file mode 100644 index c30b63e..0000000 --- a/SOURCES/kvm-spapr-Set-LPCR-to-current-AIL-mode-when-starting-a-n.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 8bb294ea3f26a8ce01ad76c19a6de359dce0c113 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Wed, 9 Jun 2021 05:58:35 -0400 -Subject: [PATCH 09/21] spapr: Set LPCR to current AIL mode when starting a new - CPU -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [8/8] 7a1cb27881f93c245ab9e8b8540cbd06d4f8c14f (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -From: Nicholas Piggin - -TCG does not keep track of AIL mode in a central place, it's based on -the current LPCR[AIL] bits. Synchronize the new CPU's LPCR to the -current LPCR in rtas_start_cpu(), similarly to the way the ILE bit is -synchronized. - -Open-code the ILE setting as well now that the caller's LPCR is -available directly, there is no need for the indirection. - -Without this, under both TCG and KVM, adding a POWER8/9/10 class CPU -with a new core ID after a modern Linux has booted results in the new -CPU's LPCR missing the LPCR[AIL]=0b11 setting that the other CPUs have. -This can cause crashes and unexpected behaviour. - -Signed-off-by: Nicholas Piggin -Message-Id: <20210526091626.3388262-3-npiggin@gmail.com> -Reviewed-by: Cédric Le Goater -Reviewed-by: Greg Kurz -Signed-off-by: David Gibson -Signed-off-by: Laurent Vivier -(cherry picked from commit ac559ecbea2649819e7b3fdd09f4e0243e0128db) -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/ppc/spapr_rtas.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c -index 91c71d1c94..27ab339b0c 100644 ---- a/hw/ppc/spapr_rtas.c -+++ b/hw/ppc/spapr_rtas.c -@@ -133,8 +133,8 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMachineState *spapr, - target_ulong id, start, r3; - PowerPCCPU *newcpu; - CPUPPCState *env; -- PowerPCCPUClass *pcc; - target_ulong lpcr; -+ target_ulong caller_lpcr; - - if (nargs != 3 || nret != 1) { - rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); -@@ -153,7 +153,6 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMachineState *spapr, - } - - env = &newcpu->env; -- pcc = POWERPC_CPU_GET_CLASS(newcpu); - - if (!CPU(newcpu)->halted) { - rtas_st(rets, 0, RTAS_OUT_HW_ERROR); -@@ -164,10 +163,15 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMachineState *spapr, - - env->msr = (1ULL << MSR_SF) | (1ULL << MSR_ME); - -+ caller_lpcr = callcpu->env.spr[SPR_LPCR]; - lpcr = env->spr[SPR_LPCR]; -- if (!pcc->interrupts_big_endian(callcpu)) { -- lpcr |= LPCR_ILE; -- } -+ -+ /* Set ILE the same way */ -+ lpcr = (lpcr & ~LPCR_ILE) | (caller_lpcr & LPCR_ILE); -+ -+ /* Set AIL the same way */ -+ lpcr = (lpcr & ~LPCR_AIL) | (caller_lpcr & LPCR_AIL); -+ - if (env->mmu_model == POWERPC_MMU_3_00) { - /* - * New cpus are expected to start in the same radix/hash mode --- -2.27.0 - diff --git a/SOURCES/kvm-target-i386-Add-CPU-model-versions-supporting-xsaves.patch b/SOURCES/kvm-target-i386-Add-CPU-model-versions-supporting-xsaves.patch deleted file mode 100644 index bdf810c..0000000 --- a/SOURCES/kvm-target-i386-Add-CPU-model-versions-supporting-xsaves.patch +++ /dev/null @@ -1,322 +0,0 @@ -From a7752067b45bc05f1127a62e39c38a3361bb1840 Mon Sep 17 00:00:00 2001 -From: Vitaly Kuznetsov -Date: Thu, 3 Jun 2021 14:04:18 -0400 -Subject: [PATCH 07/21] target/i386: Add CPU model versions supporting 'xsaves' -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [6/8] 814973113f19a21d10a90fcbbcd881eef354933d (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -Hyper-V 2016 refuses to boot on Skylake+ CPU models because they lack -'xsaves'/'vmx-xsaves' features and this diverges from real hardware. The -same issue emerges with AMD "EPYC" CPU model prior to version 3 which got -'xsaves' added. EPYC-Rome/EPYC-Milan CPU models have 'xsaves' enabled from -the very beginning so the comment blaming KVM to explain why other CPUs -lack 'xsaves' is likely outdated. - -Signed-off-by: Vitaly Kuznetsov -Message-Id: <20210412073952.860944-1-vkuznets@redhat.com> -Signed-off-by: Eduardo Habkost -(cherry picked from commit 7bde6b18575dd79c26ce1616e0c33151e83d9d7e) - -Conflicts: - target/i386/cpu.c (context, skipping c1826ea6a0520) - -Signed-off-by: Vitaly Kuznetsov -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - target/i386/cpu.c | 150 +++++++++++++++++++++++++++++----------------- - 1 file changed, 94 insertions(+), 56 deletions(-) - -diff --git a/target/i386/cpu.c b/target/i386/cpu.c -index c30bb2a6b0..da47c3e50e 100644 ---- a/target/i386/cpu.c -+++ b/target/i386/cpu.c -@@ -2881,12 +2881,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCID | - CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | - CPUID_7_0_EBX_SMAP, -- /* Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 4 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -2962,6 +2957,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ } - } - }, -+ { -+ .version = 4, -+ .note = "IBRS, XSAVES, no TSX", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ } -+ }, - { /* end of list */ } - } - }, -@@ -3001,12 +3005,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_EBX_AVX512VL | CPUID_7_0_EBX_CLFLUSHOPT, - .features[FEAT_7_0_ECX] = - CPUID_7_0_ECX_PKU, -- /* Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 5 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3094,6 +3093,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ } - } - }, -+ { -+ .version = 5, -+ .note = "IBRS, XSAVES, EPT switching, no TSX", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ } -+ }, - { /* end of list */ } - } - }, -@@ -3136,12 +3144,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_ECX_AVX512VNNI, - .features[FEAT_7_0_EDX] = - CPUID_7_0_EDX_SPEC_CTRL | CPUID_7_0_EDX_SPEC_CTRL_SSBD, -- /* Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 5 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3225,6 +3228,14 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ } - }, - }, -+ { .version = 5, -+ .note = "ARCH_CAPABILITIES, EPT switching, XSAVES, no TSX", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ }, -+ }, - { /* end of list */ } - } - }, -@@ -3274,13 +3285,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - MSR_ARCH_CAP_PSCHANGE_MC_NO | MSR_ARCH_CAP_TAA_NO, - .features[FEAT_7_1_EAX] = - CPUID_7_1_EAX_AVX512_BF16, -- /* -- * Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 2 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3336,6 +3341,18 @@ static X86CPUDefinition builtin_x86_defs[] = { - .features[FEAT_VMX_VMFUNC] = MSR_VMX_VMFUNC_EPT_SWITCHING, - .xlevel = 0x80000008, - .model_id = "Intel Xeon Processor (Cooperlake)", -+ .versions = (X86CPUVersionDefinition[]) { -+ { .version = 1 }, -+ { .version = 2, -+ .note = "XSAVES", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ }, -+ }, -+ { /* end of list */ } -+ } - }, - { - .name = "Icelake-Client", -@@ -3378,12 +3395,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_ECX_AVX512_VPOPCNTDQ, - .features[FEAT_7_0_EDX] = - CPUID_7_0_EDX_SPEC_CTRL | CPUID_7_0_EDX_SPEC_CTRL_SSBD, -- /* Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 3 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3451,6 +3463,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ } - }, - }, -+ { -+ .version = 3, -+ .note = "no TSX, XSAVES, deprecated", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ }, -+ }, - { /* end of list */ } - }, - .deprecation_note = "use Icelake-Server instead" -@@ -3499,12 +3520,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_ECX_AVX512_VPOPCNTDQ | CPUID_7_0_ECX_LA57, - .features[FEAT_7_0_EDX] = - CPUID_7_0_EDX_SPEC_CTRL | CPUID_7_0_EDX_SPEC_CTRL_SSBD, -- /* Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 5 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3597,6 +3613,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ } - }, - }, -+ { -+ .version = 5, -+ .note = "XSAVES", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ } -+ }, -+ }, - { /* end of list */ } - } - }, -@@ -3631,13 +3656,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - .features[FEAT_7_0_EDX] = - CPUID_7_0_EDX_SPEC_CTRL | CPUID_7_0_EDX_ARCH_CAPABILITIES | - CPUID_7_0_EDX_SPEC_CTRL_SSBD, -- /* -- * Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is added in version 3 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | CPUID_XSAVE_XGETBV1, - .features[FEAT_6_EAX] = -@@ -3704,6 +3723,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ }, - }, - }, -+ { -+ .version = 3, -+ .note = "XSAVES, no MPX, no MONITOR", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ }, -+ }, -+ }, - { /* end of list */ }, - }, - }, -@@ -3762,13 +3790,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_EDX_CORE_CAPABILITY, - .features[FEAT_CORE_CAPABILITY] = - MSR_CORE_CAP_SPLIT_LOCK_DETECT, -- /* -- * Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component, -- * and the only one defined in Skylake (processor tracing) -- * probably will block migration anyway. -- */ -+ /* XSAVES is is added in version 3 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -3833,6 +3855,15 @@ static X86CPUDefinition builtin_x86_defs[] = { - { /* end of list */ }, - }, - }, -+ { -+ .version = 3, -+ .note = "XSAVES, no MPX", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { "vmx-xsaves", "on" }, -+ { /* end of list */ }, -+ }, -+ }, - { /* end of list */ }, - }, - }, -@@ -4114,11 +4145,7 @@ static X86CPUDefinition builtin_x86_defs[] = { - CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 | - CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED | - CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP | CPUID_7_0_EBX_CLFLUSHOPT, -- /* -- * Missing: XSAVES (not supported by some Linux versions, -- * including v4.1 to v4.12). -- * KVM doesn't yet expose any XSAVES state save component. -- */ -+ /* XSAVES is added in version 2 */ - .features[FEAT_XSAVE] = - CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | - CPUID_XSAVE_XGETBV1, -@@ -4129,6 +4156,17 @@ static X86CPUDefinition builtin_x86_defs[] = { - .xlevel = 0x8000001E, - .model_id = "Hygon Dhyana Processor", - .cache_info = &epyc_cache_info, -+ .versions = (X86CPUVersionDefinition[]) { -+ { .version = 1 }, -+ { .version = 2, -+ .note = "XSAVES", -+ .props = (PropValue[]) { -+ { "xsaves", "on" }, -+ { /* end of list */ } -+ }, -+ }, -+ { /* end of list */ } -+ } - }, - { - .name = "EPYC-Rome", --- -2.27.0 - diff --git a/SOURCES/kvm-target-i386-sev-add-support-to-query-the-attestation.patch b/SOURCES/kvm-target-i386-sev-add-support-to-query-the-attestation.patch deleted file mode 100644 index fd08786..0000000 --- a/SOURCES/kvm-target-i386-sev-add-support-to-query-the-attestation.patch +++ /dev/null @@ -1,262 +0,0 @@ -From ba750c8ed71bc73c79fecefa895192793ef6b7db Mon Sep 17 00:00:00 2001 -From: Connor Kuehl -Date: Wed, 2 Jun 2021 19:39:20 -0400 -Subject: [PATCH 05/21] target/i386/sev: add support to query the attestation - report -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 8: Synchronize with RHEL-AV 8.5 release 19 to RHEL 9 -RH-Commit: [4/8] de6088cb0cd1db779b85a50be87846e967f8c92c (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier -RH-Acked-by: Vitaly Kuznetsov - -From: Brijesh Singh - -The SEV FW >= 0.23 added a new command that can be used to query the -attestation report containing the SHA-256 digest of the guest memory -and VMSA encrypted with the LAUNCH_UPDATE and sign it with the PEK. - -Note, we already have a command (LAUNCH_MEASURE) that can be used to -query the SHA-256 digest of the guest memory encrypted through the -LAUNCH_UPDATE. The main difference between previous and this command -is that the report is signed with the PEK and unlike the LAUNCH_MEASURE -command the ATTESATION_REPORT command can be called while the guest -is running. - -Add a QMP interface "query-sev-attestation-report" that can be used -to get the report encoded in base64. - -Cc: James Bottomley -Cc: Tom Lendacky -Cc: Eric Blake -Cc: Paolo Bonzini -Cc: kvm@vger.kernel.org -Reviewed-by: James Bottomley -Tested-by: James Bottomley -Signed-off-by: Brijesh Singh -Reviewed-by: Connor Kuehl -Message-Id: <20210429170728.24322-1-brijesh.singh@amd.com> -Signed-off-by: Eduardo Habkost -(cherry picked from commit 3ea1a80243d5b5ba23d8c2b7d3a86034ea0ade22) -Signed-off-by: Connor Kuehl -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - linux-headers/linux/kvm.h | 8 +++++ - qapi/misc-target.json | 38 ++++++++++++++++++++++ - target/i386/monitor.c | 6 ++++ - target/i386/sev-stub.c | 7 ++++ - target/i386/sev.c | 67 +++++++++++++++++++++++++++++++++++++++ - target/i386/sev_i386.h | 2 ++ - target/i386/trace-events | 1 + - 7 files changed, 129 insertions(+) - -diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h -index 020b62a619..897f831374 100644 ---- a/linux-headers/linux/kvm.h -+++ b/linux-headers/linux/kvm.h -@@ -1591,6 +1591,8 @@ enum sev_cmd_id { - KVM_SEV_DBG_ENCRYPT, - /* Guest certificates commands */ - KVM_SEV_CERT_EXPORT, -+ /* Attestation report */ -+ KVM_SEV_GET_ATTESTATION_REPORT, - - KVM_SEV_NR_MAX, - }; -@@ -1643,6 +1645,12 @@ struct kvm_sev_dbg { - __u32 len; - }; - -+struct kvm_sev_attestation_report { -+ __u8 mnonce[16]; -+ __u64 uaddr; -+ __u32 len; -+}; -+ - #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) - #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) - #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) -diff --git a/qapi/misc-target.json b/qapi/misc-target.json -index 0c7491cd82..4b62f0ac05 100644 ---- a/qapi/misc-target.json -+++ b/qapi/misc-target.json -@@ -285,3 +285,41 @@ - ## - { 'command': 'query-gic-capabilities', 'returns': ['GICCapability'], - 'if': 'defined(TARGET_ARM)' } -+ -+ -+## -+# @SevAttestationReport: -+# -+# The struct describes attestation report for a Secure Encrypted Virtualization -+# feature. -+# -+# @data: guest attestation report (base64 encoded) -+# -+# -+# Since: 6.1 -+## -+{ 'struct': 'SevAttestationReport', -+ 'data': { 'data': 'str'}, -+ 'if': 'defined(TARGET_I386)' } -+ -+## -+# @query-sev-attestation-report: -+# -+# This command is used to get the SEV attestation report, and is supported on AMD -+# X86 platforms only. -+# -+# @mnonce: a random 16 bytes value encoded in base64 (it will be included in report) -+# -+# Returns: SevAttestationReport objects. -+# -+# Since: 6.1 -+# -+# Example: -+# -+# -> { "execute" : "query-sev-attestation-report", "arguments": { "mnonce": "aaaaaaa" } } -+# <- { "return" : { "data": "aaaaaaaabbbddddd"} } -+# -+## -+{ 'command': 'query-sev-attestation-report', 'data': { 'mnonce': 'str' }, -+ 'returns': 'SevAttestationReport', -+ 'if': 'defined(TARGET_I386)' } -diff --git a/target/i386/monitor.c b/target/i386/monitor.c -index 5994408bee..119211f0b0 100644 ---- a/target/i386/monitor.c -+++ b/target/i386/monitor.c -@@ -757,3 +757,9 @@ void qmp_sev_inject_launch_secret(const char *packet_hdr, - - sev_inject_launch_secret(packet_hdr, secret, gpa, errp); - } -+ -+SevAttestationReport * -+qmp_query_sev_attestation_report(const char *mnonce, Error **errp) -+{ -+ return sev_get_attestation_report(mnonce, errp); -+} -diff --git a/target/i386/sev-stub.c b/target/i386/sev-stub.c -index 0207f1c5aa..0227cb5177 100644 ---- a/target/i386/sev-stub.c -+++ b/target/i386/sev-stub.c -@@ -74,3 +74,10 @@ int sev_es_save_reset_vector(void *flash_ptr, uint64_t flash_size) - { - abort(); - } -+ -+SevAttestationReport * -+sev_get_attestation_report(const char *mnonce, Error **errp) -+{ -+ error_setg(errp, "SEV is not available in this QEMU"); -+ return NULL; -+} -diff --git a/target/i386/sev.c b/target/i386/sev.c -index 72b9e2ab40..740548f213 100644 ---- a/target/i386/sev.c -+++ b/target/i386/sev.c -@@ -491,6 +491,73 @@ out: - return cap; - } - -+SevAttestationReport * -+sev_get_attestation_report(const char *mnonce, Error **errp) -+{ -+ struct kvm_sev_attestation_report input = {}; -+ SevAttestationReport *report = NULL; -+ SevGuestState *sev = sev_guest; -+ guchar *data; -+ guchar *buf; -+ gsize len; -+ int err = 0, ret; -+ -+ if (!sev_enabled()) { -+ error_setg(errp, "SEV is not enabled"); -+ return NULL; -+ } -+ -+ /* lets decode the mnonce string */ -+ buf = g_base64_decode(mnonce, &len); -+ if (!buf) { -+ error_setg(errp, "SEV: failed to decode mnonce input"); -+ return NULL; -+ } -+ -+ /* verify the input mnonce length */ -+ if (len != sizeof(input.mnonce)) { -+ error_setg(errp, "SEV: mnonce must be %zu bytes (got %" G_GSIZE_FORMAT ")", -+ sizeof(input.mnonce), len); -+ g_free(buf); -+ return NULL; -+ } -+ -+ /* Query the report length */ -+ ret = sev_ioctl(sev->sev_fd, KVM_SEV_GET_ATTESTATION_REPORT, -+ &input, &err); -+ if (ret < 0) { -+ if (err != SEV_RET_INVALID_LEN) { -+ error_setg(errp, "failed to query the attestation report length " -+ "ret=%d fw_err=%d (%s)", ret, err, fw_error_to_str(err)); -+ g_free(buf); -+ return NULL; -+ } -+ } -+ -+ data = g_malloc(input.len); -+ input.uaddr = (unsigned long)data; -+ memcpy(input.mnonce, buf, sizeof(input.mnonce)); -+ -+ /* Query the report */ -+ ret = sev_ioctl(sev->sev_fd, KVM_SEV_GET_ATTESTATION_REPORT, -+ &input, &err); -+ if (ret) { -+ error_setg_errno(errp, errno, "Failed to get attestation report" -+ " ret=%d fw_err=%d (%s)", ret, err, fw_error_to_str(err)); -+ goto e_free_data; -+ } -+ -+ report = g_new0(SevAttestationReport, 1); -+ report->data = g_base64_encode(data, input.len); -+ -+ trace_kvm_sev_attestation_report(mnonce, report->data); -+ -+e_free_data: -+ g_free(data); -+ g_free(buf); -+ return report; -+} -+ - static int - sev_read_file_base64(const char *filename, guchar **data, gsize *len) - { -diff --git a/target/i386/sev_i386.h b/target/i386/sev_i386.h -index ae221d4c72..ae6d840478 100644 ---- a/target/i386/sev_i386.h -+++ b/target/i386/sev_i386.h -@@ -35,5 +35,7 @@ extern uint32_t sev_get_cbit_position(void); - extern uint32_t sev_get_reduced_phys_bits(void); - extern char *sev_get_launch_measurement(void); - extern SevCapability *sev_get_capabilities(Error **errp); -+extern SevAttestationReport * -+sev_get_attestation_report(const char *mnonce, Error **errp); - - #endif -diff --git a/target/i386/trace-events b/target/i386/trace-events -index a22ab24e21..8d6437404d 100644 ---- a/target/i386/trace-events -+++ b/target/i386/trace-events -@@ -10,3 +10,4 @@ kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIx64 - kvm_sev_launch_measurement(const char *value) "data %s" - kvm_sev_launch_finish(void) "" - kvm_sev_launch_secret(uint64_t hpa, uint64_t hva, uint64_t secret, int len) "hpa 0x%" PRIx64 " hva 0x%" PRIx64 " data 0x%" PRIx64 " len %d" -+kvm_sev_attestation_report(const char *mnonce, const char *data) "mnonce %s data %s" --- -2.27.0 - diff --git a/SOURCES/kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch b/SOURCES/kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch index 5295ff8..1666b15 100644 --- a/SOURCES/kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch +++ b/SOURCES/kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch @@ -1,20 +1,18 @@ -From 2f84739e8f2928b98190f76035e00db82ef6dc7e Mon Sep 17 00:00:00 2001 +From b615b79feaa73bbaa32bb8c30401a4f6f0c0205e Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 14 Sep 2021 13:29:59 +0200 -Subject: [PATCH] tools/virtiofsd: Add fstatfs64 syscall to the seccomp +Subject: [PATCH 2/2] tools/virtiofsd: Add fstatfs64 syscall to the seccomp allowlist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -RH-Author: Thomas Huth -RH-MergeRequest: 37: tools/virtiofsd: Add fstatfs64 syscall to the seccomp allowlist -RH-Commit: [1/1] 464231b7cfa7159d9adfc4fc01b26bc3b3a66ecd -RH-Bugzilla: 2001728 +RH-Author: Miroslav Rezanina +RH-MergeRequest: 44: Apply RHEL 9.0.0 Beta fixes to RHEL 9.0.0 +RH-Commit: [2/2] 0085289cefb57d49d2423b4f3376e8cf4a970012 (mrezanin/centos-src-qemu-kvm) +RH-Bugzilla: 2005026 RH-Acked-by: Daniel P. Berrangé -RH-Acked-by: Cornelia Huck -RH-Acked-by: Stefan Hajnoczi -RH-Acked-by: Philippe Mathieu-Daudé +RH-Acked-by: Gerd Hoffmann The virtiofsd currently crashes on s390x when doing something like this in the guest: @@ -28,15 +26,16 @@ The problem is that the fstatfs64 syscall is called in this case from the virtiofsd. We have to put it on the seccomp allowlist to avoid that the daemon gets killed in this case. -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2001728 +(cherry picked from commit 8cfd339b3d402f913fe520a4f35f30152fb4fb80) Suggested-by: Vivek Goyal Signed-off-by: Thomas Huth +Signed-off-by: Miroslav Rezanina --- tools/virtiofsd/passthrough_seccomp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/virtiofsd/passthrough_seccomp.c b/tools/virtiofsd/passthrough_seccomp.c -index 62441cfcdb..2edbd3af95 100644 +index f49ed94b5e..a3ce9f898d 100644 --- a/tools/virtiofsd/passthrough_seccomp.c +++ b/tools/virtiofsd/passthrough_seccomp.c @@ -51,6 +51,7 @@ static const int syscall_allowlist[] = { diff --git a/SOURCES/kvm-vhost-user-Fix-backends-without-multiqueue-support.patch b/SOURCES/kvm-vhost-user-Fix-backends-without-multiqueue-support.patch deleted file mode 100644 index eb08089..0000000 --- a/SOURCES/kvm-vhost-user-Fix-backends-without-multiqueue-support.patch +++ /dev/null @@ -1,46 +0,0 @@ -From de25a5f05b76ca99299e09dabe04e7d59b9bed79 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:32 -0400 -Subject: [PATCH 12/43] vhost-user: Fix backends without multiqueue support - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -dev->max_queues was never initialised for backends that don't support -VHOST_USER_PROTOCOL_F_MQ, so it would use 0 as the maximum number of -queues to check against and consequently fail for any such backend. - -Set it to 1 if the backend doesn't have multiqueue support. - -Fixes: c90bd505a3e8210c23d69fecab9ee6f56ec4a161 -Signed-off-by: Kevin Wolf -Message-Id: <20210705171429.29286-1-kwolf@redhat.com> -Reviewed-by: Cornelia Huck -Reviewed-by: Raphael Norwitz -Signed-off-by: Kevin Wolf -(cherry picked from commit 84affad1fd4c5251d7cccf4df43b29e9157983a9) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/virtio/vhost-user.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c -index ee57abe045..53f50adcba 100644 ---- a/hw/virtio/vhost-user.c -+++ b/hw/virtio/vhost-user.c -@@ -1908,7 +1908,10 @@ static int vhost_user_backend_init(struct vhost_dev *dev, void *opaque) - if (err < 0) { - return err; - } -+ } else { -+ dev->max_queues = 1; - } -+ - if (dev->num_queues && dev->max_queues < dev->num_queues) { - error_report("The maximum number of queues supported by the " - "backend is %" PRIu64, dev->max_queues); --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Check-that-num-queues-is-supported-by.patch b/SOURCES/kvm-vhost-user-blk-Check-that-num-queues-is-supported-by.patch deleted file mode 100644 index 8b466dd..0000000 --- a/SOURCES/kvm-vhost-user-blk-Check-that-num-queues-is-supported-by.patch +++ /dev/null @@ -1,83 +0,0 @@ -From f3cec652012b0b5ab1d881f6377719b0984bce63 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:31 -0400 -Subject: [PATCH 11/43] vhost-user-blk: Check that num-queues is supported by - backend - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Creating a device with a number of queues that isn't supported by the -backend is pointless, the device won't work properly and the error -messages are rather confusing. - -Just fail to create the device if num-queues is higher than what the -backend supports. - -Since the relationship between num-queues and the number of virtqueues -depends on the specific device, this is an additional value that needs -to be initialised by the device. For convenience, allow leaving it 0 if -the check should be skipped. This makes sense for vhost-user-net where -separate vhost devices are used for the queues and custom initialisation -code is needed to perform the check. - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935031 -Signed-off-by: Kevin Wolf -Reviewed-by: Raphael Norwitz -Message-Id: <20210429171316.162022-7-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Kevin Wolf -(cherry picked from commit c90bd505a3e8210c23d69fecab9ee6f56ec4a161) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 1 + - hw/virtio/vhost-user.c | 5 +++++ - include/hw/virtio/vhost.h | 2 ++ - 3 files changed, 8 insertions(+) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index c7e502f4c7..c6210fad0c 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -324,6 +324,7 @@ static int vhost_user_blk_connect(DeviceState *dev, Error **errp) - } - s->connected = true; - -+ s->dev.num_queues = s->num_queues; - s->dev.nvqs = s->num_queues; - s->dev.vqs = s->vhost_vqs; - s->dev.vq_index = 0; -diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c -index ded0c10453..ee57abe045 100644 ---- a/hw/virtio/vhost-user.c -+++ b/hw/virtio/vhost-user.c -@@ -1909,6 +1909,11 @@ static int vhost_user_backend_init(struct vhost_dev *dev, void *opaque) - return err; - } - } -+ if (dev->num_queues && dev->max_queues < dev->num_queues) { -+ error_report("The maximum number of queues supported by the " -+ "backend is %" PRIu64, dev->max_queues); -+ return -EINVAL; -+ } - - if (virtio_has_feature(features, VIRTIO_F_IOMMU_PLATFORM) && - !(virtio_has_feature(dev->protocol_features, -diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h -index 4a8bc75415..21a9a52088 100644 ---- a/include/hw/virtio/vhost.h -+++ b/include/hw/virtio/vhost.h -@@ -74,6 +74,8 @@ struct vhost_dev { - int nvqs; - /* the first virtqueue which would be used by this vhost dev */ - int vq_index; -+ /* if non-zero, minimum required value for max_queues */ -+ int num_queues; - uint64_t features; - uint64_t acked_features; - uint64_t backend_features; --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Don-t-reconnect-during-initialisation.patch b/SOURCES/kvm-vhost-user-blk-Don-t-reconnect-during-initialisation.patch deleted file mode 100644 index c1b98d8..0000000 --- a/SOURCES/kvm-vhost-user-blk-Don-t-reconnect-during-initialisation.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 5d39cb265db6ea2159662a2d071d340712940d33 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:27 -0400 -Subject: [PATCH 07/43] vhost-user-blk: Don't reconnect during initialisation - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -This is a partial revert of commits 77542d43149 and bc79c87bcde. - -Usually, an error during initialisation means that the configuration was -wrong. Reconnecting won't make the error go away, but just turn the -error condition into an endless loop. Avoid this and return errors -again. - -Additionally, calling vhost_user_blk_disconnect() from the chardev event -handler could result in use-after-free because none of the -initialisation code expects that the device could just go away in the -middle. So removing the call fixes crashes in several places. - -For example, using a num-queues setting that is incompatible with the -backend would result in a crash like this (dereferencing dev->opaque, -which is already NULL): - - #0 0x0000555555d0a4bd in vhost_user_read_cb (source=0x5555568f4690, condition=(G_IO_IN | G_IO_HUP), opaque=0x7fffffffcbf0) at ../hw/virtio/vhost-user.c:313 - #1 0x0000555555d950d3 in qio_channel_fd_source_dispatch (source=0x555557c3f750, callback=0x555555d0a478 , user_data=0x7fffffffcbf0) at ../io/channel-watch.c:84 - #2 0x00007ffff7b32a9f in g_main_context_dispatch () at /lib64/libglib-2.0.so.0 - #3 0x00007ffff7b84a98 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0 - #4 0x00007ffff7b32163 in g_main_loop_run () at /lib64/libglib-2.0.so.0 - #5 0x0000555555d0a724 in vhost_user_read (dev=0x555557bc62f8, msg=0x7fffffffcc50) at ../hw/virtio/vhost-user.c:402 - #6 0x0000555555d0ee6b in vhost_user_get_config (dev=0x555557bc62f8, config=0x555557bc62ac "", config_len=60) at ../hw/virtio/vhost-user.c:2133 - #7 0x0000555555d56d46 in vhost_dev_get_config (hdev=0x555557bc62f8, config=0x555557bc62ac "", config_len=60) at ../hw/virtio/vhost.c:1566 - #8 0x0000555555cdd150 in vhost_user_blk_device_realize (dev=0x555557bc60b0, errp=0x7fffffffcf90) at ../hw/block/vhost-user-blk.c:510 - #9 0x0000555555d08f6d in virtio_device_realize (dev=0x555557bc60b0, errp=0x7fffffffcff0) at ../hw/virtio/virtio.c:3660 - -Note that this removes the ability to reconnect during initialisation -(but not during operation) when there is no permanent error, but the -backend restarts, as the implementation was buggy. This feature can be -added back in a follow-up series after changing error paths to -distinguish cases where retrying could help from cases with permanent -errors. - -Signed-off-by: Kevin Wolf -Message-Id: <20210429171316.162022-3-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Kevin Wolf -(cherry picked from commit dabefdd6abcbc7d858e9413e4734aab2e0b5c8d9) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 59 +++++++++++---------------------------- - 1 file changed, 17 insertions(+), 42 deletions(-) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index 7c85248a7b..c0b9958da1 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -50,6 +50,8 @@ static const int user_feature_bits[] = { - VHOST_INVALID_FEATURE_BIT - }; - -+static void vhost_user_blk_event(void *opaque, QEMUChrEvent event); -+ - static void vhost_user_blk_update_config(VirtIODevice *vdev, uint8_t *config) - { - VHostUserBlk *s = VHOST_USER_BLK(vdev); -@@ -362,19 +364,6 @@ static void vhost_user_blk_disconnect(DeviceState *dev) - vhost_dev_cleanup(&s->dev); - } - --static void vhost_user_blk_event(void *opaque, QEMUChrEvent event, -- bool realized); -- --static void vhost_user_blk_event_realize(void *opaque, QEMUChrEvent event) --{ -- vhost_user_blk_event(opaque, event, false); --} -- --static void vhost_user_blk_event_oper(void *opaque, QEMUChrEvent event) --{ -- vhost_user_blk_event(opaque, event, true); --} -- - static void vhost_user_blk_chr_closed_bh(void *opaque) - { - DeviceState *dev = opaque; -@@ -382,12 +371,11 @@ static void vhost_user_blk_chr_closed_bh(void *opaque) - VHostUserBlk *s = VHOST_USER_BLK(vdev); - - vhost_user_blk_disconnect(dev); -- qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, -- vhost_user_blk_event_oper, NULL, opaque, NULL, true); -+ qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, vhost_user_blk_event, -+ NULL, opaque, NULL, true); - } - --static void vhost_user_blk_event(void *opaque, QEMUChrEvent event, -- bool realized) -+static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) - { - DeviceState *dev = opaque; - VirtIODevice *vdev = VIRTIO_DEVICE(dev); -@@ -401,17 +389,7 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event, - } - break; - case CHR_EVENT_CLOSED: -- /* -- * Closing the connection should happen differently on device -- * initialization and operation stages. -- * On initalization, we want to re-start vhost_dev initialization -- * from the very beginning right away when the connection is closed, -- * so we clean up vhost_dev on each connection closing. -- * On operation, we want to postpone vhost_dev cleanup to let the -- * other code perform its own cleanup sequence using vhost_dev data -- * (e.g. vhost_dev_set_log). -- */ -- if (realized && !runstate_check(RUN_STATE_SHUTDOWN)) { -+ if (!runstate_check(RUN_STATE_SHUTDOWN)) { - /* - * A close event may happen during a read/write, but vhost - * code assumes the vhost_dev remains setup, so delay the -@@ -431,8 +409,6 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event, - * knowing its type (in this case vhost-user). - */ - s->dev.started = false; -- } else { -- vhost_user_blk_disconnect(dev); - } - break; - case CHR_EVENT_BREAK: -@@ -489,33 +465,32 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - s->vhost_vqs = g_new0(struct vhost_virtqueue, s->num_queues); - s->connected = false; - -- qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, -- vhost_user_blk_event_realize, NULL, (void *)dev, -- NULL, true); -- --reconnect: - if (qemu_chr_fe_wait_connected(&s->chardev, errp) < 0) { - goto virtio_err; - } - -- /* check whether vhost_user_blk_connect() failed or not */ -- if (!s->connected) { -- goto reconnect; -+ if (vhost_user_blk_connect(dev) < 0) { -+ error_setg(errp, "vhost-user-blk: could not connect"); -+ qemu_chr_fe_disconnect(&s->chardev); -+ goto virtio_err; - } -+ assert(s->connected); - - ret = vhost_dev_get_config(&s->dev, (uint8_t *)&s->blkcfg, - sizeof(struct virtio_blk_config)); - if (ret < 0) { -- error_report("vhost-user-blk: get block config failed"); -- goto reconnect; -+ error_setg(errp, "vhost-user-blk: get block config failed"); -+ goto vhost_err; - } - -- /* we're fully initialized, now we can operate, so change the handler */ -+ /* we're fully initialized, now we can operate, so add the handler */ - qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, -- vhost_user_blk_event_oper, NULL, (void *)dev, -+ vhost_user_blk_event, NULL, (void *)dev, - NULL, true); - return; - -+vhost_err: -+ vhost_dev_cleanup(&s->dev); - virtio_err: - g_free(s->vhost_vqs); - s->vhost_vqs = NULL; --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Fail-gracefully-on-too-large-queue-si.patch b/SOURCES/kvm-vhost-user-blk-Fail-gracefully-on-too-large-queue-si.patch deleted file mode 100644 index 29d6bd7..0000000 --- a/SOURCES/kvm-vhost-user-blk-Fail-gracefully-on-too-large-queue-si.patch +++ /dev/null @@ -1,55 +0,0 @@ -From bb551b71851c8d5a37b29aae373a99e97885a4df Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:25 -0400 -Subject: [PATCH 05/43] vhost-user-blk: Fail gracefully on too large queue size -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -virtio_add_queue() aborts when queue_size > VIRTQUEUE_MAX_SIZE, so -vhost_user_blk_device_realize() should check this before calling it. - -Simple reproducer: - -qemu-system-x86_64 \ - -chardev null,id=foo \ - -device vhost-user-blk-pci,queue-size=4096,chardev=foo - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935014 -Signed-off-by: Kevin Wolf -Message-Id: <20210413165654.50810-1-kwolf@redhat.com> -Reviewed-by: Stefan Hajnoczi -Reviewed-by: Raphael Norwitz -Reviewed-by: Philippe Mathieu-Daudé -Tested-by: Philippe Mathieu-Daudé -Signed-off-by: Kevin Wolf -(cherry picked from commit 68bf7336533faa6aa90fdd4558edddbf5d8ef814) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index 0b5b9d44cd..f5e9682703 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -467,6 +467,11 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - error_setg(errp, "vhost-user-blk: queue size must be non-zero"); - return; - } -+ if (s->queue_size > VIRTQUEUE_MAX_SIZE) { -+ error_setg(errp, "vhost-user-blk: queue size must not exceed %d", -+ VIRTQUEUE_MAX_SIZE); -+ return; -+ } - - if (!vhost_user_init(&s->vhost_user, &s->chardev, errp)) { - return; --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Get-more-feature-flags-from-vhost-dev.patch b/SOURCES/kvm-vhost-user-blk-Get-more-feature-flags-from-vhost-dev.patch deleted file mode 100644 index 310985d..0000000 --- a/SOURCES/kvm-vhost-user-blk-Get-more-feature-flags-from-vhost-dev.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 28ab6c187224be79fe02fb1b5037d1c0b300a778 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:29 -0400 -Subject: [PATCH 09/43] vhost-user-blk: Get more feature flags from vhost - device - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -VIRTIO_F_RING_PACKED and VIRTIO_F_IOMMU_PLATFORM need to be supported by -the vhost device, otherwise advertising it to the guest doesn't result -in a working configuration. They are currently not supported by the -vhost-user-blk export in QEMU. - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935020 -Signed-off-by: Kevin Wolf -Acked-by: Raphael Norwitz -Message-Id: <20210429171316.162022-5-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Kevin Wolf -(cherry picked from commit 7556a320c98812ca6648b707393f4513387faf73) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index f3a45af97c..c7e502f4c7 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -47,6 +47,8 @@ static const int user_feature_bits[] = { - VIRTIO_RING_F_INDIRECT_DESC, - VIRTIO_RING_F_EVENT_IDX, - VIRTIO_F_NOTIFY_ON_EMPTY, -+ VIRTIO_F_RING_PACKED, -+ VIRTIO_F_IOMMU_PLATFORM, - VHOST_INVALID_FEATURE_BIT - }; - --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Improve-error-reporting-in-realize.patch b/SOURCES/kvm-vhost-user-blk-Improve-error-reporting-in-realize.patch deleted file mode 100644 index e690e2c..0000000 --- a/SOURCES/kvm-vhost-user-blk-Improve-error-reporting-in-realize.patch +++ /dev/null @@ -1,120 +0,0 @@ -From a0fcc5faf35fb266dbe45259b79a57ba057e3144 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:28 -0400 -Subject: [PATCH 08/43] vhost-user-blk: Improve error reporting in realize - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Now that vhost_user_blk_connect() is not called from an event handler -any more, but directly from vhost_user_blk_device_realize(), we can -actually make use of Error again instead of calling error_report() in -the inner function and setting a more generic and therefore less useful -error message in realize() itself. - -With Error, the callers are responsible for adding context if necessary -(such as the "-device" option the error refers to). Additional prefixes -are redundant and better omitted. - -Signed-off-by: Kevin Wolf -Acked-by: Raphael Norwitz -Message-Id: <20210429171316.162022-4-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Kevin Wolf -(cherry picked from commit 5b9243d2654adc58ce472d0536a7a177b4fe0f90) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 23 +++++++++++------------ - 1 file changed, 11 insertions(+), 12 deletions(-) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index c0b9958da1..f3a45af97c 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -311,7 +311,7 @@ static void vhost_user_blk_reset(VirtIODevice *vdev) - vhost_dev_free_inflight(s->inflight); - } - --static int vhost_user_blk_connect(DeviceState *dev) -+static int vhost_user_blk_connect(DeviceState *dev, Error **errp) - { - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VHostUserBlk *s = VHOST_USER_BLK(vdev); -@@ -331,8 +331,7 @@ static int vhost_user_blk_connect(DeviceState *dev) - - ret = vhost_dev_init(&s->dev, &s->vhost_user, VHOST_BACKEND_TYPE_USER, 0); - if (ret < 0) { -- error_report("vhost-user-blk: vhost initialization failed: %s", -- strerror(-ret)); -+ error_setg_errno(errp, -ret, "vhost initialization failed"); - return ret; - } - -@@ -340,8 +339,7 @@ static int vhost_user_blk_connect(DeviceState *dev) - if (virtio_device_started(vdev, vdev->status)) { - ret = vhost_user_blk_start(vdev); - if (ret < 0) { -- error_report("vhost-user-blk: vhost start failed: %s", -- strerror(-ret)); -+ error_setg_errno(errp, -ret, "vhost start failed"); - return ret; - } - } -@@ -380,10 +378,12 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) - DeviceState *dev = opaque; - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VHostUserBlk *s = VHOST_USER_BLK(vdev); -+ Error *local_err = NULL; - - switch (event) { - case CHR_EVENT_OPENED: -- if (vhost_user_blk_connect(dev) < 0) { -+ if (vhost_user_blk_connect(dev, &local_err) < 0) { -+ error_report_err(local_err); - qemu_chr_fe_disconnect(&s->chardev); - return; - } -@@ -426,7 +426,7 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - int i, ret; - - if (!s->chardev.chr) { -- error_setg(errp, "vhost-user-blk: chardev is mandatory"); -+ error_setg(errp, "chardev is mandatory"); - return; - } - -@@ -434,16 +434,16 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - s->num_queues = 1; - } - if (!s->num_queues || s->num_queues > VIRTIO_QUEUE_MAX) { -- error_setg(errp, "vhost-user-blk: invalid number of IO queues"); -+ error_setg(errp, "invalid number of IO queues"); - return; - } - - if (!s->queue_size) { -- error_setg(errp, "vhost-user-blk: queue size must be non-zero"); -+ error_setg(errp, "queue size must be non-zero"); - return; - } - if (s->queue_size > VIRTQUEUE_MAX_SIZE) { -- error_setg(errp, "vhost-user-blk: queue size must not exceed %d", -+ error_setg(errp, "queue size must not exceed %d", - VIRTQUEUE_MAX_SIZE); - return; - } -@@ -469,8 +469,7 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - goto virtio_err; - } - -- if (vhost_user_blk_connect(dev) < 0) { -- error_setg(errp, "vhost-user-blk: could not connect"); -+ if (vhost_user_blk_connect(dev, errp) < 0) { - qemu_chr_fe_disconnect(&s->chardev); - goto virtio_err; - } --- -2.27.0 - diff --git a/SOURCES/kvm-vhost-user-blk-Make-sure-to-set-Error-on-realize-fai.patch b/SOURCES/kvm-vhost-user-blk-Make-sure-to-set-Error-on-realize-fai.patch deleted file mode 100644 index 0bef5dc..0000000 --- a/SOURCES/kvm-vhost-user-blk-Make-sure-to-set-Error-on-realize-fai.patch +++ /dev/null @@ -1,53 +0,0 @@ -From f90c21b271d88733e604b3645986f8362048b0f0 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:26 -0400 -Subject: [PATCH 06/43] vhost-user-blk: Make sure to set Error on realize - failure - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -We have to set errp before jumping to virtio_err, otherwise the caller -(virtio_device_realize()) will take this as success and crash when it -later tries to access things that we've already freed in the error path. - -Fixes: 77542d431491788d1e8e79d93ce10172ef207775 -Signed-off-by: Kevin Wolf -Message-Id: <20210429171316.162022-2-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Reviewed-by: Eric Blake -Acked-by: Raphael Norwitz -Signed-off-by: Kevin Wolf -(cherry picked from commit f26729715ef21325f972f693607580a829ad1cbb) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/vhost-user-blk.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c -index f5e9682703..7c85248a7b 100644 ---- a/hw/block/vhost-user-blk.c -+++ b/hw/block/vhost-user-blk.c -@@ -447,7 +447,6 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - { - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VHostUserBlk *s = VHOST_USER_BLK(vdev); -- Error *err = NULL; - int i, ret; - - if (!s->chardev.chr) { -@@ -495,8 +494,7 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) - NULL, true); - - reconnect: -- if (qemu_chr_fe_wait_connected(&s->chardev, &err) < 0) { -- error_report_err(err); -+ if (qemu_chr_fe_wait_connected(&s->chardev, errp) < 0) { - goto virtio_err; - } - --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-Fail-if-iommu_platform-is-requested-but-unsup.patch b/SOURCES/kvm-virtio-Fail-if-iommu_platform-is-requested-but-unsup.patch deleted file mode 100644 index 475feb0..0000000 --- a/SOURCES/kvm-virtio-Fail-if-iommu_platform-is-requested-but-unsup.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0834f460b52a1a6b2bc5575ff2e05458d7036257 Mon Sep 17 00:00:00 2001 -From: Kevin Wolf -Date: Mon, 12 Jul 2021 10:22:30 -0400 -Subject: [PATCH 10/43] virtio: Fail if iommu_platform is requested, but - unsupported - -RH-Author: Miroslav Rezanina -RH-Bugzilla: 1957194 - -Commit 2943b53f6 (' virtio: force VIRTIO_F_IOMMU_PLATFORM') made sure -that vhost can't just reject VIRTIO_F_IOMMU_PLATFORM when it was -requested. However, just adding it back to the negotiated flags isn't -right either because it promises support to the guest that the device -actually doesn't support. One example of a vhost-user device that -doesn't have support for the flag is the vhost-user-blk export of QEMU. - -Instead of successfully creating a device that doesn't work, just fail -to plug the device when it doesn't support the feature, but it was -requested. This results in much clearer error messages. - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935019 -Signed-off-by: Kevin Wolf -Reviewed-by: Raphael Norwitz -Message-Id: <20210429171316.162022-6-kwolf@redhat.com> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Kevin Wolf -(cherry picked from commit 04ceb61a4075fadbf374ef89662c41999da83489) -Signed-off-by: Kevin Wolf -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/virtio/virtio-bus.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c -index d6332d45c3..859978d248 100644 ---- a/hw/virtio/virtio-bus.c -+++ b/hw/virtio/virtio-bus.c -@@ -69,6 +69,11 @@ void virtio_bus_device_plugged(VirtIODevice *vdev, Error **errp) - return; - } - -+ if (has_iommu && !virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM)) { -+ error_setg(errp, "iommu_platform=true is not supported by the device"); -+ return; -+ } -+ - if (klass->device_plugged != NULL) { - klass->device_plugged(qbus->parent, &local_err); - } --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-balloon-Fix-page-poison-subsection-name.patch b/SOURCES/kvm-virtio-balloon-Fix-page-poison-subsection-name.patch new file mode 100644 index 0000000..68e542a --- /dev/null +++ b/SOURCES/kvm-virtio-balloon-Fix-page-poison-subsection-name.patch @@ -0,0 +1,61 @@ +From 91465d5e7cb407604fd8697587a52aafe0040ad7 Mon Sep 17 00:00:00 2001 +From: "Dr. David Alan Gilbert" +Date: Tue, 14 Sep 2021 14:17:16 +0100 +Subject: [PATCH 1/2] virtio-balloon: Fix page-poison subsection name +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Dr. David Alan Gilbert +RH-MergeRequest: 46: virtio-balloon: Fix page-poison subsection name +RH-Commit: [1/1] b5907c252dae636b4b145a6f13fbed4bf5fad9d2 (dagrh/c-9-s-qemu-kvm) +RH-Bugzilla: 1984401 +RH-Acked-by: Philippe Mathieu-Daudé +RH-Acked-by: David Hildenbrand +RH-Acked-by: Cornelia Huck + +The subsection name for page-poison was typo'd as: + + vitio-balloon-device/page-poison + +Note the missing 'r' in virtio. + +When we have a machine type that enables page poison, and the guest +enables it (which needs a new kernel), things fail rather unpredictably. + +The fallout from this is that most of the other subsections fail to +load, including things like the feature bits in the device, one +possible fallout is that the physical addresses of the queues +then get aligned differently and we fail with an error about +last_avail_idx being wrong. +It's not obvious to me why this doesn't produce a more obvious failure, +but virtio's vmstate loading is a bit open-coded. + +Fixes: 7483cbbaf82 ("virtio-balloon: Implement support for page poison reporting feature") +bz: https://bugzilla.redhat.com/show_bug.cgi?id=1984401 +Signed-off-by: Dr. David Alan Gilbert +Message-Id: <20210914131716.102851-1-dgilbert@redhat.com> +Reviewed-by: Michael S. Tsirkin +Signed-off-by: Michael S. Tsirkin +Reviewed-by: David Hildenbrand +(cherry picked from commit 243a9284a989a38e32ceb3990eb795f5cf6f3be0) +--- + hw/virtio/virtio-balloon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c +index 4b5d9e5e50..ced070d64f 100644 +--- a/hw/virtio/virtio-balloon.c ++++ b/hw/virtio/virtio-balloon.c +@@ -850,7 +850,7 @@ static const VMStateDescription vmstate_virtio_balloon_free_page_hint = { + }; + + static const VMStateDescription vmstate_virtio_balloon_page_poison = { +- .name = "vitio-balloon-device/page-poison", ++ .name = "virtio-balloon-device/page-poison", + .version_id = 1, + .minimum_version_id = 1, + .needed = virtio_balloon_page_poison_support, +-- +2.27.0 + diff --git a/SOURCES/kvm-virtio-blk-Configure-all-host-notifiers-in-a-single-.patch b/SOURCES/kvm-virtio-blk-Configure-all-host-notifiers-in-a-single-.patch deleted file mode 100644 index e670a6c..0000000 --- a/SOURCES/kvm-virtio-blk-Configure-all-host-notifiers-in-a-single-.patch +++ /dev/null @@ -1,107 +0,0 @@ -From f02134f067150d02d1a74ff5aea151096679492e Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Wed, 26 May 2021 09:03:52 -0400 -Subject: [PATCH 12/15] virtio-blk: Configure all host notifiers in a single MR - transaction - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [9/12] 609631835874ea62dad1ffbd469e83744299ee07 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -This allows the virtio-blk-pci device to batch the setup of all its -host notifiers. This significantly improves boot time of VMs with a -high number of vCPUs, e.g. from 3m26.186s down to 0m58.023s for a -pseries machine with 384 vCPUs. - -Note that memory_region_transaction_commit() must be called before -virtio_bus_cleanup_host_notifier() because the latter might close -ioeventfds that the transaction still assumes to be around when it -commits. - -Signed-off-by: Greg Kurz -Message-Id: <20210407143501.244343-3-groug@kaod.org> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit d0267da614890b8f817364ae25850cdbb580a569) -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/dataplane/virtio-blk.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - -diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c -index d7b5c95d26..cd81893d1d 100644 ---- a/hw/block/dataplane/virtio-blk.c -+++ b/hw/block/dataplane/virtio-blk.c -@@ -198,19 +198,30 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) - goto fail_guest_notifiers; - } - -+ memory_region_transaction_begin(); -+ - /* Set up virtqueue notify */ - for (i = 0; i < nvqs; i++) { - r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, true); - if (r != 0) { -+ int j = i; -+ - fprintf(stderr, "virtio-blk failed to set host notifier (%d)\n", r); - while (i--) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ } -+ -+ memory_region_transaction_commit(); -+ -+ while (j--) { - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } - goto fail_host_notifiers; - } - } - -+ memory_region_transaction_commit(); -+ - s->starting = false; - vblk->dataplane_started = true; - trace_virtio_blk_data_plane_start(s); -@@ -246,8 +257,15 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) - return 0; - - fail_aio_context: -+ memory_region_transaction_begin(); -+ - for (i = 0; i < nvqs; i++) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ } -+ -+ memory_region_transaction_commit(); -+ -+ for (i = 0; i < nvqs; i++) { - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } - fail_host_notifiers: -@@ -312,8 +330,15 @@ void virtio_blk_data_plane_stop(VirtIODevice *vdev) - - aio_context_release(s->ctx); - -+ memory_region_transaction_begin(); -+ - for (i = 0; i < nvqs; i++) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ } -+ -+ memory_region_transaction_commit(); -+ -+ for (i = 0; i < nvqs; i++) { - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } - --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-blk-Fix-rollback-path-in-virtio_blk_data_plan.patch b/SOURCES/kvm-virtio-blk-Fix-rollback-path-in-virtio_blk_data_plan.patch deleted file mode 100644 index d08e1aa..0000000 --- a/SOURCES/kvm-virtio-blk-Fix-rollback-path-in-virtio_blk_data_plan.patch +++ /dev/null @@ -1,83 +0,0 @@ -From b8febd2f080de1f12e68cc233c68c7a39835a3c4 Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Wed, 26 May 2021 09:03:51 -0400 -Subject: [PATCH 11/15] virtio-blk: Fix rollback path in - virtio_blk_data_plane_start() - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [8/12] 73d05400a537ce1847605dca58aff99e0a905919 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -When dataplane multiqueue support was added in QEMU 2.7, the path -that would rollback guest notifiers assignment in case of error -simply got dropped. - -Later on, when Error was added to blk_set_aio_context() in QEMU 4.1, -another error path was introduced, but it ommits to rollback both -host and guest notifiers. - -It seems cleaner to fix the rollback path in one go. The patch is -simple enough that it can be adjusted if backported to a pre-4.1 -QEMU. - -Fixes: 51b04ac5c6a6 ("virtio-blk: dataplane multiqueue support") -Cc: stefanha@redhat.com -Fixes: 97896a4887a0 ("block: Add Error to blk_set_aio_context()") -Cc: kwolf@redhat.com -Signed-off-by: Greg Kurz -Reviewed-by: Stefan Hajnoczi -Message-Id: <20210407143501.244343-2-groug@kaod.org> -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 570fe439e5d1b8626cf344c6bc97d90cfcaf0c79) -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/block/dataplane/virtio-blk.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c -index e9050c8987..d7b5c95d26 100644 ---- a/hw/block/dataplane/virtio-blk.c -+++ b/hw/block/dataplane/virtio-blk.c -@@ -207,7 +207,7 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } -- goto fail_guest_notifiers; -+ goto fail_host_notifiers; - } - } - -@@ -221,7 +221,7 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) - aio_context_release(old_context); - if (r < 0) { - error_report_err(local_err); -- goto fail_guest_notifiers; -+ goto fail_aio_context; - } - - /* Process queued requests before the ones in vring */ -@@ -245,6 +245,13 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev) - aio_context_release(s->ctx); - return 0; - -+ fail_aio_context: -+ for (i = 0; i < nvqs; i++) { -+ virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); -+ } -+ fail_host_notifiers: -+ k->set_guest_notifiers(qbus->parent, nvqs, false); - fail_guest_notifiers: - /* - * If we failed to set up the guest notifiers queued requests will be --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-gpu-handle-partial-maps-properly.patch b/SOURCES/kvm-virtio-gpu-handle-partial-maps-properly.patch deleted file mode 100644 index 4028f08..0000000 --- a/SOURCES/kvm-virtio-gpu-handle-partial-maps-properly.patch +++ /dev/null @@ -1,201 +0,0 @@ -From cdc537ada9528e09f8c70219f5a9a1ce8a4efa7e Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann -Date: Thu, 6 May 2021 11:10:01 +0200 -Subject: [PATCH 02/12] virtio-gpu: handle partial maps properly - -RH-Author: Eric Auger -RH-MergeRequest: 15: virtio-gpu: handle partial maps properly -RH-Commit: [1/1] f2b0fd9758251d1f3a5ff9563911c8bdb4b191f0 (eauger1/centos-qemu-kvm) -RH-Bugzilla: 1974795 -RH-Acked-by: Gavin Shan -RH-Acked-by: Andrew Jones -RH-Acked-by: Peter Xu - -dma_memory_map() may map only a part of the request. Happens if the -request can't be mapped in one go, for example due to a iommu creating -a linear dma mapping for scattered physical pages. Should that be the -case virtio-gpu must call dma_memory_map() again with the remaining -range instead of simply throwing an error. - -Note that this change implies the number of iov entries may differ from -the number of mapping entries sent by the guest. Therefore the iov_len -bookkeeping needs some updates too, we have to explicitly pass around -the iov length now. - -Reported-by: Auger Eric -Signed-off-by: Gerd Hoffmann -Message-id: 20210506091001.1301250-1-kraxel@redhat.com -Reviewed-by: Eric Auger -Tested-by: Eric Auger -Message-Id: <20210506091001.1301250-1-kraxel@redhat.com> -(cherry picked from commit 9049f8bc445d50c0b5fe5500c0ec51fcc821c2ef) -Signed-off-by: Eric Auger -Signed-off-by: Miroslav Rezanina ---- - hw/display/virtio-gpu-3d.c | 7 ++-- - hw/display/virtio-gpu.c | 76 ++++++++++++++++++++-------------- - include/hw/virtio/virtio-gpu.h | 3 +- - 3 files changed, 52 insertions(+), 34 deletions(-) - -diff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c -index d98964858e..72c14d9132 100644 ---- a/hw/display/virtio-gpu-3d.c -+++ b/hw/display/virtio-gpu-3d.c -@@ -283,22 +283,23 @@ static void virgl_resource_attach_backing(VirtIOGPU *g, - { - struct virtio_gpu_resource_attach_backing att_rb; - struct iovec *res_iovs; -+ uint32_t res_niov; - int ret; - - VIRTIO_GPU_FILL_CMD(att_rb); - trace_virtio_gpu_cmd_res_back_attach(att_rb.resource_id); - -- ret = virtio_gpu_create_mapping_iov(g, &att_rb, cmd, NULL, &res_iovs); -+ ret = virtio_gpu_create_mapping_iov(g, &att_rb, cmd, NULL, &res_iovs, &res_niov); - if (ret != 0) { - cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; - return; - } - - ret = virgl_renderer_resource_attach_iov(att_rb.resource_id, -- res_iovs, att_rb.nr_entries); -+ res_iovs, res_niov); - - if (ret != 0) -- virtio_gpu_cleanup_mapping_iov(g, res_iovs, att_rb.nr_entries); -+ virtio_gpu_cleanup_mapping_iov(g, res_iovs, res_niov); - } - - static void virgl_resource_detach_backing(VirtIOGPU *g, -diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c -index c9f5e36fd0..6f3791deb3 100644 ---- a/hw/display/virtio-gpu.c -+++ b/hw/display/virtio-gpu.c -@@ -608,11 +608,12 @@ static void virtio_gpu_set_scanout(VirtIOGPU *g, - int virtio_gpu_create_mapping_iov(VirtIOGPU *g, - struct virtio_gpu_resource_attach_backing *ab, - struct virtio_gpu_ctrl_command *cmd, -- uint64_t **addr, struct iovec **iov) -+ uint64_t **addr, struct iovec **iov, -+ uint32_t *niov) - { - struct virtio_gpu_mem_entry *ents; - size_t esize, s; -- int i; -+ int e, v; - - if (ab->nr_entries > 16384) { - qemu_log_mask(LOG_GUEST_ERROR, -@@ -633,37 +634,53 @@ int virtio_gpu_create_mapping_iov(VirtIOGPU *g, - return -1; - } - -- *iov = g_malloc0(sizeof(struct iovec) * ab->nr_entries); -+ *iov = NULL; - if (addr) { -- *addr = g_malloc0(sizeof(uint64_t) * ab->nr_entries); -+ *addr = NULL; - } -- for (i = 0; i < ab->nr_entries; i++) { -- uint64_t a = le64_to_cpu(ents[i].addr); -- uint32_t l = le32_to_cpu(ents[i].length); -- hwaddr len = l; -- (*iov)[i].iov_base = dma_memory_map(VIRTIO_DEVICE(g)->dma_as, -- a, &len, DMA_DIRECTION_TO_DEVICE); -- (*iov)[i].iov_len = len; -- if (addr) { -- (*addr)[i] = a; -- } -- if (!(*iov)[i].iov_base || len != l) { -- qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to map MMIO memory for" -- " resource %d element %d\n", -- __func__, ab->resource_id, i); -- if ((*iov)[i].iov_base) { -- i++; /* cleanup the 'i'th map */ -+ for (e = 0, v = 0; e < ab->nr_entries; e++) { -+ uint64_t a = le64_to_cpu(ents[e].addr); -+ uint32_t l = le32_to_cpu(ents[e].length); -+ hwaddr len; -+ void *map; -+ -+ do { -+ len = l; -+ map = dma_memory_map(VIRTIO_DEVICE(g)->dma_as, -+ a, &len, DMA_DIRECTION_TO_DEVICE); -+ if (!map) { -+ qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to map MMIO memory for" -+ " resource %d element %d\n", -+ __func__, ab->resource_id, e); -+ virtio_gpu_cleanup_mapping_iov(g, *iov, v); -+ g_free(ents); -+ *iov = NULL; -+ if (addr) { -+ g_free(*addr); -+ *addr = NULL; -+ } -+ return -1; -+ } -+ -+ if (!(v % 16)) { -+ *iov = g_realloc(*iov, sizeof(struct iovec) * (v + 16)); -+ if (addr) { -+ *addr = g_realloc(*addr, sizeof(uint64_t) * (v + 16)); -+ } - } -- virtio_gpu_cleanup_mapping_iov(g, *iov, i); -- g_free(ents); -- *iov = NULL; -+ (*iov)[v].iov_base = map; -+ (*iov)[v].iov_len = len; - if (addr) { -- g_free(*addr); -- *addr = NULL; -+ (*addr)[v] = a; - } -- return -1; -- } -+ -+ a += len; -+ l -= len; -+ v += 1; -+ } while (l > 0); - } -+ *niov = v; -+ - g_free(ents); - return 0; - } -@@ -717,13 +734,12 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g, - return; - } - -- ret = virtio_gpu_create_mapping_iov(g, &ab, cmd, &res->addrs, &res->iov); -+ ret = virtio_gpu_create_mapping_iov(g, &ab, cmd, &res->addrs, -+ &res->iov, &res->iov_cnt); - if (ret != 0) { - cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; - return; - } -- -- res->iov_cnt = ab.nr_entries; - } - - static void -diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h -index fae149235c..0d15af41d9 100644 ---- a/include/hw/virtio/virtio-gpu.h -+++ b/include/hw/virtio/virtio-gpu.h -@@ -209,7 +209,8 @@ void virtio_gpu_get_edid(VirtIOGPU *g, - int virtio_gpu_create_mapping_iov(VirtIOGPU *g, - struct virtio_gpu_resource_attach_backing *ab, - struct virtio_gpu_ctrl_command *cmd, -- uint64_t **addr, struct iovec **iov); -+ uint64_t **addr, struct iovec **iov, -+ uint32_t *niov); - void virtio_gpu_cleanup_mapping_iov(VirtIOGPU *g, - struct iovec *iov, uint32_t count); - void virtio_gpu_process_cmdq(VirtIOGPU *g); --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-net-failover-add-missing-remove_migration_sta.patch b/SOURCES/kvm-virtio-net-failover-add-missing-remove_migration_sta.patch deleted file mode 100644 index acd5a66..0000000 --- a/SOURCES/kvm-virtio-net-failover-add-missing-remove_migration_sta.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 21027e308bf410293a745d4358a848e9aa037df1 Mon Sep 17 00:00:00 2001 -From: Laurent Vivier -Date: Mon, 10 May 2021 13:08:20 -0400 -Subject: [PATCH 09/15] virtio-net: failover: add missing - remove_migration_state_change_notifier() - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [4/12] 884f0f99fbbba4312663ec6232b1d8c9576df84e (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -In the failover case configuration, virtio_net_device_realize() uses an -add_migration_state_change_notifier() to add a state notifier, but this -notifier is not removed by the unrealize function when the virtio-net -card is unplugged. - -If the card is unplugged and a migration is started, the notifier is -called and as it is not valid anymore QEMU crashes. - -This patch fixes the problem by adding the -remove_migration_state_change_notifier() in virtio_net_device_unrealize(). - -The problem can be reproduced with: - - $ qemu-system-x86_64 -enable-kvm -m 1g -M q35 \ - -device pcie-root-port,slot=4,id=root1 \ - -device pcie-root-port,slot=5,id=root2 \ - -device virtio-net-pci,id=net1,mac=52:54:00:6f:55:cc,failover=on,bus=root1 \ - -monitor stdio disk.qcow2 - (qemu) device_del net1 - (qemu) migrate "exec:gzip -c > STATEFILE.gz" - - Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault. - 0x0000000000000000 in ?? () - (gdb) bt - #0 0x0000000000000000 in () - #1 0x0000555555d726d7 in notifier_list_notify (...) - at .../util/notify.c:39 - #2 0x0000555555842c1a in migrate_fd_connect (...) - at .../migration/migration.c:3975 - #3 0x0000555555950f7d in migration_channel_connect (...) - error@entry=0x0) at .../migration/channel.c:107 - #4 0x0000555555910922 in exec_start_outgoing_migration (...) - at .../migration/exec.c:42 - -Reported-by: Igor Mammedov -Reviewed-by: Dr. David Alan Gilbert -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Laurent Vivier -Signed-off-by: Jason Wang -(cherry picked from commit a7eca58380f9589bb1bb6333ccfb58869734edb6) -Signed-off-by: Laurent Vivier -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/net/virtio-net.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c -index 66b9ff4511..914051feb7 100644 ---- a/hw/net/virtio-net.c -+++ b/hw/net/virtio-net.c -@@ -3373,6 +3373,7 @@ static void virtio_net_device_unrealize(DeviceState *dev) - - if (n->failover) { - device_listener_unregister(&n->primary_listener); -+ remove_migration_state_change_notifier(&n->migration_state); - } - - max_queues = n->multiqueue ? n->max_queues : 1; --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-scsi-Configure-all-host-notifiers-in-a-single.patch b/SOURCES/kvm-virtio-scsi-Configure-all-host-notifiers-in-a-single.patch deleted file mode 100644 index a58b251..0000000 --- a/SOURCES/kvm-virtio-scsi-Configure-all-host-notifiers-in-a-single.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 5e7855d3c9d5a59d2c0ac05444428b058ca9abb8 Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Wed, 26 May 2021 09:03:54 -0400 -Subject: [PATCH 14/15] virtio-scsi: Configure all host notifiers in a single - MR transaction - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [11/12] f3c785c4b63aeb3a7b153f2fc17e86c983f98c23 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -This allows the virtio-scsi-pci device to batch the setup of all its -host notifiers. This significantly improves boot time of VMs with a -high number of vCPUs, e.g. from 6m5.563s down to 1m2.884s for a -pseries machine with 384 vCPUs. - -Note that memory_region_transaction_commit() must be called before -virtio_bus_cleanup_host_notifier() because the latter might close -ioeventfds that the transaction still assumes to be around when it -commits. - -Signed-off-by: Greg Kurz -Message-Id: <20210407143501.244343-5-groug@kaod.org> -Reviewed-by: Stefan Hajnoczi -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit c4f5dcc4360a02085a633fd7a90b7ac395ca1ba4) -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/scsi/virtio-scsi-dataplane.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c -index b2cb3d9dcc..28e003250a 100644 ---- a/hw/scsi/virtio-scsi-dataplane.c -+++ b/hw/scsi/virtio-scsi-dataplane.c -@@ -152,6 +152,8 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev) - goto fail_guest_notifiers; - } - -+ memory_region_transaction_begin(); -+ - rc = virtio_scsi_set_host_notifier(s, vs->ctrl_vq, 0); - if (rc != 0) { - goto fail_host_notifiers; -@@ -173,6 +175,8 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev) - vq_init_count++; - } - -+ memory_region_transaction_commit(); -+ - aio_context_acquire(s->ctx); - virtio_queue_aio_set_host_notifier_handler(vs->ctrl_vq, s->ctx, - virtio_scsi_data_plane_handle_ctrl); -@@ -192,6 +196,11 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev) - fail_host_notifiers: - for (i = 0; i < vq_init_count; i++) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ } -+ -+ memory_region_transaction_commit(); -+ -+ for (i = 0; i < vq_init_count; i++) { - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } - k->set_guest_notifiers(qbus->parent, vs->conf.num_queues + 2, false); -@@ -229,8 +238,15 @@ void virtio_scsi_dataplane_stop(VirtIODevice *vdev) - - blk_drain_all(); /* ensure there are no in-flight requests */ - -+ memory_region_transaction_begin(); -+ - for (i = 0; i < vs->conf.num_queues + 2; i++) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); -+ } -+ -+ memory_region_transaction_commit(); -+ -+ for (i = 0; i < vs->conf.num_queues + 2; i++) { - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); - } - --- -2.27.0 - diff --git a/SOURCES/kvm-virtio-scsi-Set-host-notifiers-and-callbacks-separat.patch b/SOURCES/kvm-virtio-scsi-Set-host-notifiers-and-callbacks-separat.patch deleted file mode 100644 index ab10168..0000000 --- a/SOURCES/kvm-virtio-scsi-Set-host-notifiers-and-callbacks-separat.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 0ca53acb7ee0a3b3b72685f47df1fb2466989d6c Mon Sep 17 00:00:00 2001 -From: Greg Kurz -Date: Wed, 26 May 2021 09:03:53 -0400 -Subject: [PATCH 13/15] virtio-scsi: Set host notifiers and callbacks - separately - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 5: Synchronize RHEL-AV 8.5 release 18 to RHEL 9 Beta -RH-Commit: [10/12] 61f873b494c52dc34eb60a705046bfead08532da (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Danilo Cesar Lemes de Paula -RH-Acked-by: Cornelia Huck -RH-Acked-by: Greg Kurz -RH-Acked-by: Laurent Vivier - -Host notifiers are guaranteed to be idle until the callbacks are -hooked up with virtio_queue_aio_set_host_notifier_handler(). They -thus don't need to be set or unset with the AioContext lock held. - -Do this outside the critical section, like virtio-blk already -does : basically downgrading virtio_scsi_vring_init() to only -setup the host notifier and set the callback in the caller. - -This will allow to batch addition/deletion of ioeventds in -a single memory transaction, which is expected to greatly -improve initialization time. - -Signed-off-by: Greg Kurz -Message-Id: <20210407143501.244343-4-groug@kaod.org> -Reviewed-by: Stefan Hajnoczi -Reviewed-by: Michael S. Tsirkin -Signed-off-by: Michael S. Tsirkin -(cherry picked from commit 61fc57bfc464c3584bd7ab810c86833661f0188c) -Signed-off-by: Greg Kurz -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/scsi/virtio-scsi-dataplane.c | 40 ++++++++++++++++++--------------- - 1 file changed, 22 insertions(+), 18 deletions(-) - -diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c -index 4ad8793406..b2cb3d9dcc 100644 ---- a/hw/scsi/virtio-scsi-dataplane.c -+++ b/hw/scsi/virtio-scsi-dataplane.c -@@ -94,8 +94,7 @@ static bool virtio_scsi_data_plane_handle_event(VirtIODevice *vdev, - return progress; - } - --static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n, -- VirtIOHandleAIOOutput fn) -+static int virtio_scsi_set_host_notifier(VirtIOSCSI *s, VirtQueue *vq, int n) - { - BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(s))); - int rc; -@@ -109,7 +108,6 @@ static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n, - return rc; - } - -- virtio_queue_aio_set_host_notifier_handler(vq, s->ctx, fn); - return 0; - } - -@@ -154,38 +152,44 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev) - goto fail_guest_notifiers; - } - -- aio_context_acquire(s->ctx); -- rc = virtio_scsi_vring_init(s, vs->ctrl_vq, 0, -- virtio_scsi_data_plane_handle_ctrl); -- if (rc) { -- goto fail_vrings; -+ rc = virtio_scsi_set_host_notifier(s, vs->ctrl_vq, 0); -+ if (rc != 0) { -+ goto fail_host_notifiers; - } - - vq_init_count++; -- rc = virtio_scsi_vring_init(s, vs->event_vq, 1, -- virtio_scsi_data_plane_handle_event); -- if (rc) { -- goto fail_vrings; -+ rc = virtio_scsi_set_host_notifier(s, vs->event_vq, 1); -+ if (rc != 0) { -+ goto fail_host_notifiers; - } - - vq_init_count++; -+ - for (i = 0; i < vs->conf.num_queues; i++) { -- rc = virtio_scsi_vring_init(s, vs->cmd_vqs[i], i + 2, -- virtio_scsi_data_plane_handle_cmd); -+ rc = virtio_scsi_set_host_notifier(s, vs->cmd_vqs[i], i + 2); - if (rc) { -- goto fail_vrings; -+ goto fail_host_notifiers; - } - vq_init_count++; - } - -+ aio_context_acquire(s->ctx); -+ virtio_queue_aio_set_host_notifier_handler(vs->ctrl_vq, s->ctx, -+ virtio_scsi_data_plane_handle_ctrl); -+ virtio_queue_aio_set_host_notifier_handler(vs->event_vq, s->ctx, -+ virtio_scsi_data_plane_handle_event); -+ -+ for (i = 0; i < vs->conf.num_queues; i++) { -+ virtio_queue_aio_set_host_notifier_handler(vs->cmd_vqs[i], s->ctx, -+ virtio_scsi_data_plane_handle_cmd); -+ } -+ - s->dataplane_starting = false; - s->dataplane_started = true; - aio_context_release(s->ctx); - return 0; - --fail_vrings: -- aio_wait_bh_oneshot(s->ctx, virtio_scsi_dataplane_stop_bh, s); -- aio_context_release(s->ctx); -+fail_host_notifiers: - for (i = 0; i < vq_init_count; i++) { - virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false); - virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i); --- -2.27.0 - diff --git a/SOURCES/kvm-x86-Add-x86-rhel8.5-machine-types.patch b/SOURCES/kvm-x86-Add-x86-rhel8.5-machine-types.patch deleted file mode 100644 index 9100f47..0000000 --- a/SOURCES/kvm-x86-Add-x86-rhel8.5-machine-types.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 1497b5d371a63dd20d3b14ca2f8cce99845a1c2c Mon Sep 17 00:00:00 2001 -From: "Dr. David Alan Gilbert" -Date: Wed, 19 May 2021 15:46:27 -0400 -Subject: [PATCH 03/12] x86: Add x86 rhel8.5 machine types -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Miroslav Rezanina -RH-MergeRequest: 16: Synchronize with RHEL-AV 8.5 release 21 to RHEL 9 -RH-Commit: [1/8] db81806d99b545abe4dcba576fb33c02ec283dd7 (mrezanin/centos-src-qemu-kvm) -RH-Bugzilla: 1957194 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Daniel P. Berrangé - -From: "Dr. David Alan Gilbert" - -Add the 8.5 machine type and the compat entries. - -Signed-off-by: Dr. David Alan Gilbert -Signed-off-by: Danilo C. L. de Paula -Signed-off-by: Miroslav Rezanina ---- - hw/i386/pc.c | 6 ++++++ - hw/i386/pc_piix.c | 2 ++ - hw/i386/pc_q35.c | 24 ++++++++++++++++++++++-- - include/hw/i386/pc.h | 3 +++ - 4 files changed, 33 insertions(+), 2 deletions(-) - -diff --git a/hw/i386/pc.c b/hw/i386/pc.c -index edc02a68ca..0a374dec39 100644 ---- a/hw/i386/pc.c -+++ b/hw/i386/pc.c -@@ -369,6 +369,12 @@ GlobalProperty pc_rhel_compat[] = { - }; - const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); - -+GlobalProperty pc_rhel_8_4_compat[] = { -+ /* pc_rhel_8_4_compat from pc_compat_5_2 */ -+ { "ICH9-LPC", "x-smi-cpu-hotunplug", "off" }, -+}; -+const size_t pc_rhel_8_4_compat_len = G_N_ELEMENTS(pc_rhel_8_4_compat); -+ - GlobalProperty pc_rhel_8_3_compat[] = { - /* pc_rhel_8_3_compat from pc_compat_5_1 */ - { "ICH9-LPC", "x-smi-cpu-hotplug", "off" }, -diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c -index d9c5df16d8..5d61c9b833 100644 ---- a/hw/i386/pc_piix.c -+++ b/hw/i386/pc_piix.c -@@ -971,6 +971,8 @@ static void pc_machine_rhel760_options(MachineClass *m) - pcmc->pci_root_uid = 1; - 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, -+ pc_rhel_8_4_compat_len); - compat_props_add(m->compat_props, hw_compat_rhel_8_3, - hw_compat_rhel_8_3_len); - compat_props_add(m->compat_props, pc_rhel_8_3_compat, -diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c -index 44109e4876..01ff3e0544 100644 ---- a/hw/i386/pc_q35.c -+++ b/hw/i386/pc_q35.c -@@ -607,6 +607,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_rhel850(MachineState *machine) -+{ -+ pc_q35_init(machine); -+} -+ -+static void pc_q35_machine_rhel850_options(MachineClass *m) -+{ -+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -+ pc_q35_machine_rhel_options(m); -+ m->desc = "RHEL-8.5.0 PC (Q35 + ICH9, 2009)"; -+ pcmc->smbios_stream_product = "RHEL-AV"; -+ pcmc->smbios_stream_version = "8.5.0"; -+} -+ -+DEFINE_PC_MACHINE(q35_rhel850, "pc-q35-rhel8.5.0", pc_q35_init_rhel850, -+ pc_q35_machine_rhel850_options); -+ -+ - static void pc_q35_init_rhel840(MachineState *machine) - { - pc_q35_init(machine); -@@ -615,12 +633,15 @@ static void pc_q35_init_rhel840(MachineState *machine) - static void pc_q35_machine_rhel840_options(MachineClass *m) - { - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); -- pc_q35_machine_rhel_options(m); -+ pc_q35_machine_rhel850_options(m); - m->desc = "RHEL-8.4.0 PC (Q35 + ICH9, 2009)"; -+ m->alias = NULL; - pcmc->smbios_stream_product = "RHEL-AV"; - pcmc->smbios_stream_version = "8.4.0"; - 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, -+ pc_rhel_8_4_compat_len); - } - - DEFINE_PC_MACHINE(q35_rhel840, "pc-q35-rhel8.4.0", pc_q35_init_rhel840, -@@ -637,7 +658,6 @@ static void pc_q35_machine_rhel830_options(MachineClass *m) - 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, -diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h -index 79a7803a2f..1980c93f41 100644 ---- a/include/hw/i386/pc.h -+++ b/include/hw/i386/pc.h -@@ -281,6 +281,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_4_compat[]; -+extern const size_t pc_rhel_8_4_compat_len; -+ - extern GlobalProperty pc_rhel_8_3_compat[]; - extern const size_t pc_rhel_8_3_compat_len; - --- -2.27.0 - diff --git a/SOURCES/kvm-yank-Unregister-function-when-using-TLS-migration.patch b/SOURCES/kvm-yank-Unregister-function-when-using-TLS-migration.patch deleted file mode 100644 index 1691c50..0000000 --- a/SOURCES/kvm-yank-Unregister-function-when-using-TLS-migration.patch +++ /dev/null @@ -1,146 +0,0 @@ -From a722ec5614bbaa36992653250add7dabd39b12ad Mon Sep 17 00:00:00 2001 -From: Leonardo Bras -Date: Tue, 1 Jun 2021 02:40:31 -0300 -Subject: [PATCH 01/21] yank: Unregister function when using TLS migration -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -RH-Author: Leonardo Brás -RH-MergeRequest: 10: yank: Unregister function when using TLS migration -RH-Commit: [1/1] b39e19a3a92dc7f881527198824ce7f402aa9289 (LeoBras/centos-qemu-kvm) -RH-Bugzilla: 1972462 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Peter Xu > -RH-Acked-by: Dr. David Alan Gilbert - -After yank feature was introduced in migration, whenever migration -is started using TLS, the following error happens in both source and -destination hosts: - -(qemu) qemu-kvm: ../util/yank.c:107: yank_unregister_instance: -Assertion `QLIST_EMPTY(&entry->yankfns)' failed. - -This happens because of a missing yank_unregister_function() when using -qio-channel-tls. - -Fix this by also allowing TYPE_QIO_CHANNEL_TLS object type to perform -yank_unregister_function() in channel_close() and multifd_load_cleanup(). - -Also, inside migration_channel_connect() and -migration_channel_process_incoming() move yank_register_function() so -it only runs once on a TLS migration. - -Fixes: b5eea99ec2f ("migration: Add yank feature", 2021-01-13) -Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1964326 -Signed-off-by: Leonardo Bras -Reviewed-by: Lukas Straub -Reviewed-by: Peter Xu -Message-Id: <20210601054030.1153249-1-leobras.c@gmail.com> - -Signed-off-by: Dr. David Alan Gilbert -(cherry picked from commit 7de2e8565335c13fb3516cddbe2e40e366cce273) -Signed-off-by: Leonardo Bras -Signed-off-by: Miroslav Rezanina ---- - migration/channel.c | 26 ++++++++++++++------------ - migration/multifd.c | 3 ++- - migration/qemu-file-channel.c | 4 +++- - 3 files changed, 19 insertions(+), 14 deletions(-) - -diff --git a/migration/channel.c b/migration/channel.c -index c9ee902021..01275a9162 100644 ---- a/migration/channel.c -+++ b/migration/channel.c -@@ -38,18 +38,19 @@ void migration_channel_process_incoming(QIOChannel *ioc) - trace_migration_set_incoming_channel( - ioc, object_get_typename(OBJECT(ioc))); - -- if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { -- yank_register_function(MIGRATION_YANK_INSTANCE, -- migration_yank_iochannel, -- QIO_CHANNEL(ioc)); -- } -- - if (s->parameters.tls_creds && - *s->parameters.tls_creds && - !object_dynamic_cast(OBJECT(ioc), - TYPE_QIO_CHANNEL_TLS)) { - migration_tls_channel_process_incoming(s, ioc, &local_err); - } else { -+ if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) || -+ object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_TLS)) { -+ yank_register_function(MIGRATION_YANK_INSTANCE, -+ migration_yank_iochannel, -+ QIO_CHANNEL(ioc)); -+ } -+ - migration_ioc_process_incoming(ioc, &local_err); - } - -@@ -76,12 +77,6 @@ void migration_channel_connect(MigrationState *s, - ioc, object_get_typename(OBJECT(ioc)), hostname, error); - - if (!error) { -- if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { -- yank_register_function(MIGRATION_YANK_INSTANCE, -- migration_yank_iochannel, -- QIO_CHANNEL(ioc)); -- } -- - if (s->parameters.tls_creds && - *s->parameters.tls_creds && - !object_dynamic_cast(OBJECT(ioc), -@@ -99,6 +94,13 @@ void migration_channel_connect(MigrationState *s, - } else { - QEMUFile *f = qemu_fopen_channel_output(ioc); - -+ if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) || -+ object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_TLS)) { -+ yank_register_function(MIGRATION_YANK_INSTANCE, -+ migration_yank_iochannel, -+ QIO_CHANNEL(ioc)); -+ } -+ - qemu_mutex_lock(&s->qemu_file_lock); - s->to_dst_file = f; - qemu_mutex_unlock(&s->qemu_file_lock); -diff --git a/migration/multifd.c b/migration/multifd.c -index a6677c45c8..a8dedcf822 100644 ---- a/migration/multifd.c -+++ b/migration/multifd.c -@@ -987,7 +987,8 @@ int multifd_load_cleanup(Error **errp) - for (i = 0; i < migrate_multifd_channels(); i++) { - MultiFDRecvParams *p = &multifd_recv_state->params[i]; - -- if (object_dynamic_cast(OBJECT(p->c), TYPE_QIO_CHANNEL_SOCKET) -+ if ((object_dynamic_cast(OBJECT(p->c), TYPE_QIO_CHANNEL_SOCKET) || -+ object_dynamic_cast(OBJECT(p->c), TYPE_QIO_CHANNEL_TLS)) - && OBJECT(p->c)->ref == 1) { - yank_unregister_function(MIGRATION_YANK_INSTANCE, - migration_yank_iochannel, -diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c -index 876d05a540..fad340ea7a 100644 ---- a/migration/qemu-file-channel.c -+++ b/migration/qemu-file-channel.c -@@ -26,6 +26,7 @@ - #include "qemu-file-channel.h" - #include "qemu-file.h" - #include "io/channel-socket.h" -+#include "io/channel-tls.h" - #include "qemu/iov.h" - #include "qemu/yank.h" - #include "yank_functions.h" -@@ -106,7 +107,8 @@ static int channel_close(void *opaque, Error **errp) - int ret; - QIOChannel *ioc = QIO_CHANNEL(opaque); - ret = qio_channel_close(ioc, errp); -- if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) -+ if ((object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) || -+ object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_TLS)) - && OBJECT(ioc)->ref == 1) { - yank_unregister_function(MIGRATION_YANK_INSTANCE, - migration_yank_iochannel, --- -2.27.0 - diff --git a/SPECS/qemu-kvm.spec b/SPECS/qemu-kvm.spec index b9047e9..5f3f3d0 100644 --- a/SPECS/qemu-kvm.spec +++ b/SPECS/qemu-kvm.spec @@ -23,6 +23,7 @@ %global have_clang 1 %global have_safe_stack 0 + %if %{have_clang} %global toolchain clang %ifarch x86_64 @@ -33,6 +34,15 @@ %global cc_suffix .gcc %endif + + +# Release candidate version tracking +# global rcver rc4 +%if 0%{?rcver:1} +%global rcrel .%{rcver} +%global rcstr -%{rcver} +%endif + %global have_pmem 1 %ifnarch x86_64 %global have_pmem 0 @@ -93,10 +103,10 @@ %endif %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 -%global block_drivers_ro_list vmdk,vhdx,vpc,https,ssh +%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 %define qemudocdir %{_docdir}/%{name} -%global firmwaredirs "%{_datadir}/qemu-firmware:%{_datadir}/ipxe/qemu:%{_datadir}/seavgabios:%{_datadir}/seabios:%{_datadir}/sgabios" +%global firmwaredirs "%{_datadir}/qemu-firmware:%{_datadir}/ipxe/qemu:%{_datadir}/seavgabios:%{_datadir}/seabios" #Versions of various parts: @@ -107,7 +117,8 @@ Requires: %{name}-ui-opengl = %{epoch}:%{version}-%{release} \ %if %{have_usbredir} \ Requires: %{name}-hw-usbredir = %{epoch}:%{version}-%{release} \ %endif \ -Requires: %{name}-block-rbd = %{epoch}:%{version}-%{release} +Requires: %{name}-block-rbd = %{epoch}:%{version}-%{release} \ +Requires: %{name}-audio-pa = %{epoch}:%{version}-%{release} # Since SPICE is removed from RHEL-9, the following Obsoletes: # removes {name}-ui-spice for upgrades from RHEL-8 @@ -118,18 +129,11 @@ Obsoletes: %{name}-ui-spice <= %{version} \ Obsoletes: %{name}-block-gluster <= %{version} \ Obsoletes: %{name}-block-iscsi <= %{version} \ -# Release candidate version tracking -# global rcver rc4 -%if 0%{?rcver:1} -%global rcrel .%{rcver} -%global rcstr -%{rcver} -%endif - Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm -Version: 6.0.0 -Release: 13%{?rcrel}%{?dist}%{?cc_suffix}.5 +Version: 6.1.0 +Release: 7%{?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) @@ -175,224 +179,28 @@ 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-block-Versioned-x-blockdev-reopen-API-with-feature-f.patch -# For bz#1906168 - [RHEL-9] qemu-kvm spec-file: Do not BuildRequire spice -Patch19: kvm-Remove-SPICE-and-QXL-from-x86_64-rh-devices.mak.patch -# For bz#1944730 - Remove RHEL7 machine type (s390-ccw-virtio-rhel7.5.0) -Patch20: kvm-hw-s390x-Remove-the-RHEL7-only-machine-type.patch -# For bz#1962479 - Disable the 'x-terminal3270' device in qemu-kvm on s390x -Patch21: kvm-s390x-redhat-disable-experimental-3270-device.patch -# For bz#1952449 - [aarch64] define RHEL9 machine types -Patch22: kvm-arm-virt-Register-highmem-and-gic-version-as-class-p.patch -# For bz#1952449 - [aarch64] define RHEL9 machine types -Patch23: kvm-hw-arm-virt-Add-8.5-and-9.0-machine-types-and-remove.patch -# For bz#1747467 - [aarch64] [qemu] PVPANIC support -Patch24: kvm-aarch64-rh-devices-add-CONFIG_PVPANIC_PCI.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch25: kvm-redhat-s390x-add-rhel-8.5.0-compat-machine.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch26: kvm-redhat-add-missing-entries-in-hw_compat_rhel_8_4.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch27: kvm-redhat-Define-pseries-rhel8.5.0-machine-type.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch28: kvm-virtio-net-failover-add-missing-remove_migration_sta.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch29: kvm-hw-arm-virt-Disable-PL011-clock-migration-through-hw.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch30: kvm-virtio-blk-Fix-rollback-path-in-virtio_blk_data_plan.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch31: kvm-virtio-blk-Configure-all-host-notifiers-in-a-single-.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch32: kvm-virtio-scsi-Set-host-notifiers-and-callbacks-separat.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch33: kvm-virtio-scsi-Configure-all-host-notifiers-in-a-single.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch34: kvm-hw-arm-smmuv3-Another-range-invalidation-fix.patch -# For bz#1972462 - QEMU core dump when doing TLS migration via TCP -Patch35: kvm-yank-Unregister-function-when-using-TLS-migration.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch36: kvm-pc-bios-s390-ccw-don-t-try-to-read-the-next-block-if.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch37: kvm-sockets-update-SOCKET_ADDRESS_TYPE_FD-listen-2-backl.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch38: kvm-target-i386-sev-add-support-to-query-the-attestation.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch39: kvm-spapr-Don-t-hijack-current_machine-boot_order.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch40: kvm-target-i386-Add-CPU-model-versions-supporting-xsaves.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch41: kvm-spapr-Remove-stale-comment-about-power-saving-LPCR-b.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch42: kvm-spapr-Set-LPCR-to-current-AIL-mode-when-starting-a-n.patch -# For bz#1967502 - [aarch64] [qemu] Compile the PCIe expander bridge -Patch43: kvm-aarch64-rh-devices-add-CONFIG_PXB.patch -# For bz#1974795 - [RHEL9-beta] [aarch64] Launch guest with virtio-gpu-pci and virtual smmu causes "virtio_gpu_dequeue_ctrl_func" ERROR -Patch44: kvm-virtio-gpu-handle-partial-maps-properly.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch45: kvm-x86-Add-x86-rhel8.5-machine-types.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch46: kvm-redhat-x86-Enable-kvm-asyncpf-int-by-default.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch47: kvm-block-backend-add-drained_poll.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch48: kvm-nbd-server-Use-drained-block-ops-to-quiesce-the-serv.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch49: kvm-disable-CONFIG_USB_STORAGE_BOT.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch50: kvm-doc-Fix-some-mistakes-in-the-SEV-documentation.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch51: kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch52: kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch -# For bz#1978911 - Remove TPM Passthrough option from RHEL 9 -Patch53: kvm-Disable-TPM-passthrough.patch -# For bz#1932191 - [IBM 9.0 FEAT] CPU Model for new IBM Z Hardware - qemu part (kvm) -Patch54: kvm-s390x-cpumodel-add-3931-and-3932.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch55: kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch56: kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch57: kvm-s390x-css-Introduce-an-ESW-struct.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch58: kvm-s390x-css-Split-out-the-IRB-sense-data.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch59: kvm-s390x-css-Refactor-IRB-construction.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch60: kvm-s390x-css-Add-passthrough-IRB.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch61: kvm-vhost-user-blk-Fail-gracefully-on-too-large-queue-si.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch62: kvm-vhost-user-blk-Make-sure-to-set-Error-on-realize-fai.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch63: kvm-vhost-user-blk-Don-t-reconnect-during-initialisation.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch64: kvm-vhost-user-blk-Improve-error-reporting-in-realize.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch65: kvm-vhost-user-blk-Get-more-feature-flags-from-vhost-dev.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch66: kvm-virtio-Fail-if-iommu_platform-is-requested-but-unsup.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch67: kvm-vhost-user-blk-Check-that-num-queues-is-supported-by.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch68: kvm-vhost-user-Fix-backends-without-multiqueue-support.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch69: kvm-file-posix-fix-max_iov-for-dev-sg-devices.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch70: kvm-scsi-generic-pass-max_segments-via-max_iov-field-in-.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch71: kvm-osdep-provide-ROUND_DOWN-macro.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch72: kvm-block-backend-align-max_transfer-to-request-alignmen.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch73: kvm-block-add-max_hw_transfer-to-BlockLimits.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch74: kvm-file-posix-try-BLKSECTGET-on-block-devices-too-do-no.patch -# For bz#1957782 - VMDK support should be read-only -Patch75: kvm-block-Add-option-to-use-driver-whitelist-even-in-too.patch -# For bz#1838608 - aarch64: Enable ARMv8 RAS virtualization support -Patch76: kvm-arm-virt-Register-iommu-as-a-class-property.patch -# For bz#1838608 - aarch64: Enable ARMv8 RAS virtualization support -Patch77: kvm-arm-virt-Register-its-as-a-class-property.patch -# For bz#1838608 - aarch64: Enable ARMv8 RAS virtualization support -Patch78: kvm-arm-virt-Enable-ARM-RAS-support.patch -# For bz#1972079 - Windows Installation blocked on 4k disk when using blk+raw+iothread -Patch79: kvm-block-Fix-in_flight-leak-in-request-padding-error-pa.patch -# For bz#1974683 - Fail to set migrate incoming for 2nd time after the first time failed -Patch80: kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch -# For bz#1974683 - Fail to set migrate incoming for 2nd time after the first time failed -Patch81: kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch82: kvm-Remove-RHEL-7.0.0-machine-type.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch83: kvm-Remove-RHEL-7.1.0-machine-type.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch84: kvm-Remove-RHEL-7.2.0-machine-type.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch85: kvm-Remove-RHEL-7.3.0-machine-types.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch86: kvm-Remove-RHEL-7.4.0-machine-types.patch -# For bz#1968519 - Remove all the old 7.0-7.5 machine types -Patch87: kvm-Remove-RHEL-7.5.0-machine-types.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch88: kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch89: kvm-migration-failover-reset-partially_hotplugged.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch90: kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch91: kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch92: kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch93: kvm-ratelimit-protect-with-a-mutex.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch94: kvm-Update-Linux-headers-to-5.13-rc4.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch95: kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch96: kvm-iothread-generalize-iothread_set_param-iothread_get_.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch97: kvm-iothread-add-aio-max-batch-parameter.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch98: kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch99: kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch100: kvm-migration-move-wait-unplug-loop-to-its-own-function.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch101: kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch102: kvm-aarch64-Add-USB-storage-devices.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch103: kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch104: kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch105: kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch -# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta -Patch106: kvm-audio-Never-send-migration-section.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch107: kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch108: kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch109: kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch110: kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch111: kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch112: kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch113: kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch114: kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch -# For bz#1939509 - QEMU: enable SafeStack -# For bz#1940132 - QEMU: switch build toolchain to Clang/LLVM -Patch115: kvm-configure-Fix-endianess-test-with-LTO.patch -# For bz#1951814 - RFE: Warning when using qcow2-v2 (compat=0.10) -Patch116: kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch -# For bz#1995819 - RFE: Remove ac97 audio support from QEMU -Patch117: kvm-disable-ac97-audio.patch -# For bz#1950192 - RHEL9: when ioeventfd=off and 8.4guest, (qemu) qemu-kvm: ../util/qemu-coroutine-lock.c:57: qemu_co_queue_wait_impl: Assertion `qemu_in_coroutine()' failed. -Patch118: kvm-redhat-Enable-the-test-block-iothread-test-again.patch -# For bz#1995807 - RFE: Remove SGA, deprecate cirrus, and set defaults for QEMU machine-types in RHEL9 -Patch119: kvm-disable-sga-device.patch -# For bz#1981462 - [qemu][aarch64] Remove 9.0 machine types in arm virt for 9-Beta -Patch120: kvm-hw-arm-virt-Remove-9.0-machine-type.patch -# For bz#2001728 - [s390][virtio-fs] Umount virtiofs shared folder failure from guest side -Patch121: kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch -# For bz#2002993 - [RHEL 9 Beta] Reenable SGA device -Patch122: kvm-Revert-disable-sga-device.patch +Patch0018: 0018-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch +# For bz#2002937 - [qemu][aarch64] Remove 9.0 machine types in arm virt for 9-Beta +Patch19: kvm-hw-arm-virt-Remove-9.0-machine-type.patch +# For bz#2000845 - RFE: Remove SGA, deprecate cirrus, and set defaults for QEMU machine-types in RHEL9 +Patch20: kvm-disable-sga-device.patch +# For bz#2005026 - [s390][virtio-fs] Umount virtiofs shared folder failure from guest side [rhel-9.0.0] +Patch21: kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch +# For bz#1998943 - Add machine type compatibility update for 6.1 rebase [s390x] +Patch22: kvm-redhat-Define-hw_compat_rhel_8_5.patch +# For bz#1998943 - Add machine type compatibility update for 6.1 rebase [s390x] +Patch23: kvm-redhat-Add-s390x-machine-type-compatibility-update-f.patch +# For bz#1984401 - fails to revert snapshot of a VM [balloon/page-poison] +Patch24: kvm-virtio-balloon-Fix-page-poison-subsection-name.patch +# For bz#1998942 - Add machine type compatibility update for 6.1 rebase [aarch64] +Patch25: kvm-hw-arm-virt-Add-hw_compat_rhel_8_5-to-8.5-machine-ty.patch +# For bz#1996609 - Qemu hit core dump when dump guest memory during live migration +Patch26: kvm-migration-Make-migration-blocker-work-for-snapshots-.patch +# For bz#1996609 - Qemu hit core dump when dump guest memory during live migration +Patch27: kvm-migration-Add-migrate_add_blocker_internal.patch +# For bz#1996609 - Qemu hit core dump when dump guest memory during live migration +Patch28: kvm-dump-guest-memory-Block-live-migration.patch +Patch29: kvm-Fix-for-ppc64le-build.patch # Source-git patches @@ -418,6 +226,7 @@ BuildRequires: usbredir-devel >= %{usbredir_version} %endif BuildRequires: texinfo BuildRequires: python3-sphinx +BuildRequires: python3-sphinx_rtd_theme BuildRequires: libseccomp-devel >= %{libseccomp_version} # For network block driver BuildRequires: libcurl-devel @@ -447,7 +256,6 @@ BuildRequires: lzo-devel snappy-devel %if %{have_numactl} BuildRequires: numactl-devel %endif -BuildRequires: libgcrypt-devel # qemu-pr-helper multipath support (requires libudev too) BuildRequires: device-mapper-multipath-devel BuildRequires: systemd-devel @@ -463,6 +271,7 @@ BuildRequires: pkgconfig(gbm) %endif BuildRequires: perl-Test-Harness BuildRequires: libslirp-devel +BuildRequires: pulseaudio-libs-devel # Requires for qemu-kvm package @@ -515,7 +324,6 @@ Requires(preun): systemd-units Requires(postun): systemd-units %ifarch %{ix86} x86_64 Requires: seabios-bin >= 1.10.2-1 -Requires: sgabios-bin %endif %ifnarch aarch64 s390x Requires: seavgabios-bin >= 1.12.0-3 @@ -624,6 +432,13 @@ 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} +%description audio-pa +This package provides the additional PulseAudio audio driver for QEMU. + + %if %{have_opengl} %package ui-opengl Summary: QEMU opengl support @@ -662,6 +477,7 @@ mkdir -p %{qemu_kvm_build} --disable-avx512f \\\ --disable-block-drv-whitelist-in-tools \\\ --disable-bochs \\\ + --disable-bpf \\\ --disable-brlapi \\\ --disable-bsd-user \\\ --disable-bzip2 \\\ @@ -719,6 +535,7 @@ mkdir -p %{qemu_kvm_build} --disable-netmap \\\ --disable-nettle \\\ --disable-numa \\\ + --disable-nvmm \\\ --disable-opengl \\\ --disable-parallels \\\ --disable-pie \\\ @@ -735,8 +552,8 @@ mkdir -p %{qemu_kvm_build} --disable-sdl \\\ --disable-sdl-image \\\ --disable-seccomp \\\ - --disable-sheepdog \\\ --disable-slirp \\\ + --disable-slirp-smbd \\\ --disable-smartcard \\\ --disable-snappy \\\ --disable-sparse \\\ @@ -803,6 +620,7 @@ run_configure() { --with-git=git \ --tls-priority=@QEMU,SYSTEM \ %{disable_everything} \ + --with-devices-%{kvm_target}=%{kvm_target}-rh-devices \ "$@" echo "config-host.mak contents:" @@ -823,6 +641,7 @@ run_configure \ %if %{defined block_drivers_ro_list} --block-drv-ro-whitelist=%{block_drivers_ro_list} \ %endif + --audio-drv-list=pa \ --enable-attr \ %ifarch %{ix86} x86_64 --enable-avx2 \ @@ -836,7 +655,6 @@ run_configure \ %if %{have_fdt} --enable-fdt \ %endif - --enable-gcrypt \ --enable-gnutls \ --enable-guest-agent \ --enable-iconv \ @@ -875,6 +693,7 @@ run_configure \ %if %{have_usbredir} --enable-usb-redir \ %endif + --enable-vdi \ --enable-virtiofsd \ --enable-vhost-kernel \ --enable-vhost-net \ @@ -1136,8 +955,6 @@ rm -rf %{buildroot}%{_datadir}/%{name}/pxe*rom rm -rf %{buildroot}%{_datadir}/%{name}/vgabios*bin # Provided by package seabios rm -rf %{buildroot}%{_datadir}/%{name}/bios*.bin - -# Remove seabios rom rm -rf %{buildroot}%{_datadir}/%{name}/sgabios.bin @@ -1168,7 +985,6 @@ rm -rf %{buildroot}%{qemudocdir}/specs %endif - %check %if !%{tools_only} @@ -1180,8 +996,6 @@ popd # endif !tools_only %endif - - %post -n qemu-guest-agent %systemd_post qemu-guest-agent.service %preun -n qemu-guest-agent @@ -1334,11 +1148,21 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %{_datadir}/%{name}/systemtap/conf.d/qemu_kvm.conf %{_libdir}/%{name}/hw-display-virtio-gpu.so +%{_libdir}/%{name}/hw-display-virtio-gpu-gl.so +%ifarch x86_64 %{power64} + %{_libdir}/%{name}/hw-display-virtio-vga-gl.so +%endif %ifarch s390x %{_libdir}/%{name}/hw-s390x-virtio-gpu-ccw.so %else %{_libdir}/%{name}/hw-display-virtio-gpu-pci.so + %{_libdir}/%{name}/hw-display-virtio-gpu-pci-gl.so +%endif + %{_libdir}/%{name}/accel-qtest-%{kvm_target}.so +%ifarch x86_64 + %{_libdir}/%{name}/accel-tcg-%{kvm_target}.so %endif +%{_libdir}/%{name}/hw-usb-host.so %files tests %{testsdir} @@ -1351,6 +1175,8 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %files block-ssh %{_libdir}/%{name}/block-ssh.so +%files audio-pa +%{_libdir}/%{name}/audio-pa.so %if %{have_opengl} %files ui-opengl @@ -1367,32 +1193,64 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog -* Wed Oct 06 2021 Miroslav Rezanina - 6.0.0-13.el9_b.5 -- kvm-spec-Remove-block-curl-and-block-ssh-dependency.patch [bz#2001100] -- Resolves: bz#2001100 - (Remove qemu-kvm's dependency on qemu-kvm-block-curl and qemu-kvm-block-ssh) - -* Fri Sep 24 2021 Miroslav Rezanina - 6.0.0-13.el9_b.4 -- kvm-Revert-disable-sga-device.patch [bz#2002993] -- kvm-Revert-remove-sgabios-dependency.patch [bz#2002993] -- Resolves: bz#2002993 - ([RHEL 9 Beta] Reenable SGA device) - -* Fri Sep 17 2021 Miroslav Rezanina - 6.0.0-13.el9_b.3 -- kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch [bz#2001728] -- Resolves: bz#2001728 - ([s390][virtio-fs] Umount virtiofs shared folder failure from guest side) - -* Fri Sep 10 2021 Miroslav Rezanina - 6.0.0-13.el9_b.2 -- kvm-hw-arm-virt-Remove-9.0-machine-type.patch [bz#1981462] -- Resolves: bz#1981462 +* Fri Nov 19 2021 Miroslav Rezanina - 6.1.0-7 +- kvm-migration-Make-migration-blocker-work-for-snapshots-.patch [bz#1996609] +- kvm-migration-Add-migrate_add_blocker_internal.patch [bz#1996609] +- kvm-dump-guest-memory-Block-live-migration.patch [bz#1996609] +- kvm-spec-Build-the-VDI-block-driver.patch [bz#2013331] +- kvm-spec-Explicitly-include-compress-filter.patch [bz#1980035] +- Resolves: bz#1996609 + (Qemu hit core dump when dump guest memory during live migration) +- Resolves: bz#2013331 + (RFE: qemu-img cannot convert from vdi format) +- Resolves: bz#1980035 + (RFE: Enable compress filter so we can create new, compressed qcow2 files via qemu-nbd) + +* Mon Oct 18 2021 Miroslav Rezanina - 6.1.0-6 +- kvm-hw-arm-virt-Add-hw_compat_rhel_8_5-to-8.5-machine-ty.patch [bz#1998942] +- Resolves: bz#1998942 + (Add machine type compatibility update for 6.1 rebase [aarch64]) + +* Mon Oct 11 2021 Miroslav Rezanina - 6.1.0-5 +- kvm-virtio-balloon-Fix-page-poison-subsection-name.patch [bz#1984401] +- kvm-spec-Remove-block-curl-and-block-ssh-dependency.patch [bz#2010985] +- Resolves: bz#1984401 + (fails to revert snapshot of a VM [balloon/page-poison]) +- Resolves: bz#2010985 + (Remove dependency on qemu-kvm-block-curl and qemu-kvm-block-ssh [rhel-9.0.0]) + +* Tue Oct 05 2021 Miroslav Rezanina - 6.1.0-4 +- kvm-redhat-Define-hw_compat_rhel_8_5.patch [bz#1998943] +- kvm-redhat-Add-s390x-machine-type-compatibility-update-f.patch [bz#1998943] +- Resolves: bz#1998943 + (Add machine type compatibility update for 6.1 rebase [s390x]) + +* Fri Sep 24 2021 Miroslav Rezanina - 6.1.0-3 +- kvm-disable-sga-device.patch [bz#2000845] +- kvm-tools-virtiofsd-Add-fstatfs64-syscall-to-the-seccomp.patch [bz#2005026] +- Resolves: bz#2000845 + (RFE: Remove SGA, deprecate cirrus, and set defaults for QEMU machine-types in RHEL9) +- Resolves: bz#2005026 + ([s390][virtio-fs] Umount virtiofs shared folder failure from guest side [rhel-9.0.0]) + +* Fri Sep 10 2021 Miroslav Rezanina - 6.1.0-2 +- kvm-hw-arm-virt-Remove-9.0-machine-type.patch [bz#2002937] +- kvm-remove-sgabios-dependency.patch [bz#2000845] +- kvm-enable-pulseaudio.patch [bz#1997725] +- kvm-spec-disable-use-of-gcrypt-for-crypto-backends-in-fa.patch [bz#1990068] +- Resolves: bz#2002937 ([qemu][aarch64] Remove 9.0 machine types in arm virt for 9-Beta) - -* Fri Sep 03 2021 Miroslav Rezanina - 6.0.0-13.el9_b.1 -- kvm-disable-sga-device.patch [bz#1995807] -- kvm-remove-sgabios-dependency.patch [bz#1995807] -- Resolves: bz#1995807 +- Resolves: bz#2000845 (RFE: Remove SGA, deprecate cirrus, and set defaults for QEMU machine-types in RHEL9) +- Resolves: bz#1997725 + (RFE: enable pulseaudio backend on QEMU) +- Resolves: bz#1990068 + (Disable use of gcrypt for crypto backends in favour of gnutls) + +* Thu Sep 02 2021 Miroslav Rezanina - 6.1.0-1 +- Rebase to QEMU 6.1.0 [bz#1997408] +- Resolves: #bz#1997408 + (Rebase to QEMU 6.1.0) * Fri Aug 27 2021 Miroslav Rezanina - 6.0.0-13 - kvm-qcow2-Deprecation-warning-when-opening-v2-images-rw.patch [bz#1951814] @@ -3133,7 +2991,7 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ - Resolves: bz#1640044 (Disable CONFIG_I2C and CONFIG_IPMI in default-configs/ppc64-softmmu.mak) -* Tue Dec 11 2018 Danilo Cesar Lemes de Paula - qemu-kvm-2.12.0-46 +* Tue Dec 11 2018 Danilo Cesar Lemes de Paula - qemu-kvm-2.12.0-46 - kvm-qcow2-Give-the-refcount-cache-the-minimum-possible-s.patch [bz#1656507] - kvm-docs-Document-the-new-default-sizes-of-the-qcow2-cac.patch [bz#1656507] - kvm-qcow2-Fix-Coverity-warning-when-calculating-the-refc.patch [bz#1656507] @@ -3260,7 +3118,6 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ (rbd json format of 7.6 is incompatible with 7.5) * Tue Oct 16 2018 Danilo Cesar Lemes de Paula - 2.12.0-40.el8 - - kvm-vnc-call-sasl_server_init-only-when-required.patch [bz#1609327] - kvm-nbd-server-fix-NBD_CMD_CACHE.patch [bz#1636142] - kvm-nbd-fix-NBD_FLAG_SEND_CACHE-value.patch [bz#1636142] @@ -3319,7 +3176,7 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ - Resolves: bz#1639374 (qemu-img map 'Aborted (core dumped)' when specifying a plain file) -* Tue Oct 16 2018 Danilo Cesar Lemes de Paula - +* Tue Oct 16 2018 Danilo Cesar Lemes de Paula - - kvm-linux-headers-update.patch [bz#1508142] - kvm-s390x-cpumodel-Set-up-CPU-model-for-AP-device-suppor.patch [bz#1508142] - kvm-s390x-kvm-enable-AP-instruction-interpretation-for-g.patch [bz#1508142]