From b7fbd568b2fe898170b2a4345d428230c52c68ce Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Fri, 20 Aug 2021 06:50:35 -0400 Subject: [PATCH] * Fri Aug 20 2021 Miroslav Rezanina - 6.0.0-12.el9 - kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch [bz#1974683] - kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch [bz#1974683] - kvm-Remove-RHEL-7.0.0-machine-type.patch [bz#1968519] - kvm-Remove-RHEL-7.1.0-machine-type.patch [bz#1968519] - kvm-Remove-RHEL-7.2.0-machine-type.patch [bz#1968519] - kvm-Remove-RHEL-7.3.0-machine-types.patch [bz#1968519] - kvm-Remove-RHEL-7.4.0-machine-types.patch [bz#1968519] - kvm-Remove-RHEL-7.5.0-machine-types.patch [bz#1968519] - kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch [bz#1957194] - kvm-migration-failover-reset-partially_hotplugged.patch [bz#1957194] - kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch [bz#1957194] - kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch [bz#1957194] - kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch [bz#1957194] - kvm-ratelimit-protect-with-a-mutex.patch [bz#1957194] - kvm-Update-Linux-headers-to-5.13-rc4.patch [bz#1957194] - kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch [bz#1957194] - kvm-iothread-generalize-iothread_set_param-iothread_get_.patch [bz#1957194] - kvm-iothread-add-aio-max-batch-parameter.patch [bz#1957194] - kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch [bz#1957194] - kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch [bz#1957194] - kvm-migration-move-wait-unplug-loop-to-its-own-function.patch [bz#1957194] - kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch [bz#1957194] - kvm-aarch64-Add-USB-storage-devices.patch [bz#1957194] - kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch [bz#1957194] - kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch [bz#1957194] - kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch [bz#1957194] - kvm-audio-Never-send-migration-section.patch [bz#1957194] - kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch [bz#1939509 bz#1940132] - kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch [bz#1939509 bz#1940132] - kvm-configure-Fix-endianess-test-with-LTO.patch [bz#1939509 bz#1940132] - kvm-spec-Switch-toolchain-to-Clang-LLVM.patch [bz#1939509 bz#1940132] - kvm-spec-Use-safe-stack-for-x86_64.patch [bz#1939509 bz#1940132] - kvm-spec-Reenable-write-support-for-VMDK-etc.-in-tools.patch [bz#1989841] - Resolves: bz#1974683 (Fail to set migrate incoming for 2nd time after the first time failed) - Resolves: bz#1968519 (Remove all the old 7.0-7.5 machine types) - Resolves: bz#1957194 (Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta) - Resolves: bz#1939509 (QEMU: enable SafeStack) - Resolves: bz#1940132 (QEMU: switch build toolchain to Clang/LLVM) - Resolves: bz#1989841 (RFE: qemu-img cannot convert images into vmdk and vpc formats) --- kvm-Remove-RHEL-7.0.0-machine-type.patch | 197 + kvm-Remove-RHEL-7.1.0-machine-type.patch | 292 + kvm-Remove-RHEL-7.2.0-machine-type.patch | 192 + kvm-Remove-RHEL-7.3.0-machine-types.patch | 315 + kvm-Remove-RHEL-7.4.0-machine-types.patch | 301 + kvm-Remove-RHEL-7.5.0-machine-types.patch | 210 + kvm-Update-Linux-headers-to-5.13-rc4.patch | 5465 +++++++++++++++++ kvm-aarch64-Add-USB-storage-devices.patch | 41 + ...rt-back-to-v5.2-PCI-slot-enumeration.patch | 111 + kvm-audio-Never-send-migration-section.patch | 63 + ...FIO_MAP_DMA-failed-No-space-left-on-.patch | 106 + ...onfigure-Fix-endianess-test-with-LTO.patch | 82 + ...o-resume-the-VM-on-success-instead-o.patch | 51 + ...imit-for-bus-locks-acquired-in-guest.patch | 219 + ...Expose-AVX_VNNI-instruction-to-guest.patch | 82 + ...and-rename-test-291-to-qemu-img-bitm.patch | 178 + ...iothread-add-aio-max-batch-parameter.patch | 324 + ...ize-iothread_set_param-iothread_get_.patch | 96 + ...the-batch-size-using-aio-max-batch-p.patch | 84 + ...reset-of-postcopy_recover_triggered-.patch | 66 + ...itmap_mutex-out-of-migration_bitmap_.patch | 111 + ...ank-outside-qemu_start_incoming_migr.patch | 94 + ...er-continue-to-wait-card-unplug-on-e.patch | 59 + ...-failover-reset-partially_hotplugged.patch | 44 + ...wait-unplug-loop-to-its-own-function.patch | 118 + ...90-ccw-Allow-building-with-Clang-too.patch | 77 + ...-Fix-inline-assembly-for-older-versi.patch | 106 + ...-Fix-the-cc-option-macro-in-the-Make.patch | 48 + ...-Silence-GCC-11-stringop-overflow-wa.patch | 75 + ...-Silence-warning-from-Clang-by-marki.patch | 59 + ...-Use-reset_psw-pointer-instead-of-ha.patch | 60 + ...-bootmap-Silence-compiler-warning-fr.patch | 56 + ...-netboot-Use-Wl-prefix-to-pass-param.patch | 44 + ...p-broken-bitmaps-for-convert-bitmaps.patch | 265 + ...st-on-convert-bitmaps-with-inconsist.patch | 145 + kvm-ratelimit-protect-with-a-mutex.patch | 133 + qemu-kvm.spec | 165 +- 37 files changed, 10130 insertions(+), 4 deletions(-) create mode 100644 kvm-Remove-RHEL-7.0.0-machine-type.patch create mode 100644 kvm-Remove-RHEL-7.1.0-machine-type.patch create mode 100644 kvm-Remove-RHEL-7.2.0-machine-type.patch create mode 100644 kvm-Remove-RHEL-7.3.0-machine-types.patch create mode 100644 kvm-Remove-RHEL-7.4.0-machine-types.patch create mode 100644 kvm-Remove-RHEL-7.5.0-machine-types.patch create mode 100644 kvm-Update-Linux-headers-to-5.13-rc4.patch create mode 100644 kvm-aarch64-Add-USB-storage-devices.patch create mode 100644 kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch create mode 100644 kvm-audio-Never-send-migration-section.patch create mode 100644 kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch create mode 100644 kvm-configure-Fix-endianess-test-with-LTO.patch create mode 100644 kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch create mode 100644 kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch create mode 100644 kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch create mode 100644 kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch create mode 100644 kvm-iothread-add-aio-max-batch-parameter.patch create mode 100644 kvm-iothread-generalize-iothread_set_param-iothread_get_.patch create mode 100644 kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch create mode 100644 kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch create mode 100644 kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch create mode 100644 kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch create mode 100644 kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch create mode 100644 kvm-migration-failover-reset-partially_hotplugged.patch create mode 100644 kvm-migration-move-wait-unplug-loop-to-its-own-function.patch create mode 100644 kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch create mode 100644 kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch create mode 100644 kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch create mode 100644 kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch create mode 100644 kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch create mode 100644 kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch create mode 100644 kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch create mode 100644 kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch create mode 100644 kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch create mode 100644 kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch create mode 100644 kvm-ratelimit-protect-with-a-mutex.patch diff --git a/kvm-Remove-RHEL-7.0.0-machine-type.patch b/kvm-Remove-RHEL-7.0.0-machine-type.patch new file mode 100644 index 0000000..0e0ca56 --- /dev/null +++ b/kvm-Remove-RHEL-7.0.0-machine-type.patch @@ -0,0 +1,197 @@ +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/kvm-Remove-RHEL-7.1.0-machine-type.patch b/kvm-Remove-RHEL-7.1.0-machine-type.patch new file mode 100644 index 0000000..d3552f5 --- /dev/null +++ b/kvm-Remove-RHEL-7.1.0-machine-type.patch @@ -0,0 +1,292 @@ +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/kvm-Remove-RHEL-7.2.0-machine-type.patch b/kvm-Remove-RHEL-7.2.0-machine-type.patch new file mode 100644 index 0000000..d014be6 --- /dev/null +++ b/kvm-Remove-RHEL-7.2.0-machine-type.patch @@ -0,0 +1,192 @@ +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/kvm-Remove-RHEL-7.3.0-machine-types.patch b/kvm-Remove-RHEL-7.3.0-machine-types.patch new file mode 100644 index 0000000..dbf9b49 --- /dev/null +++ b/kvm-Remove-RHEL-7.3.0-machine-types.patch @@ -0,0 +1,315 @@ +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/kvm-Remove-RHEL-7.4.0-machine-types.patch b/kvm-Remove-RHEL-7.4.0-machine-types.patch new file mode 100644 index 0000000..9484fc1 --- /dev/null +++ b/kvm-Remove-RHEL-7.4.0-machine-types.patch @@ -0,0 +1,301 @@ +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/kvm-Remove-RHEL-7.5.0-machine-types.patch b/kvm-Remove-RHEL-7.5.0-machine-types.patch new file mode 100644 index 0000000..ed51c11 --- /dev/null +++ b/kvm-Remove-RHEL-7.5.0-machine-types.patch @@ -0,0 +1,210 @@ +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/kvm-Update-Linux-headers-to-5.13-rc4.patch b/kvm-Update-Linux-headers-to-5.13-rc4.patch new file mode 100644 index 0000000..a06d102 --- /dev/null +++ b/kvm-Update-Linux-headers-to-5.13-rc4.patch @@ -0,0 +1,5465 @@ +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/kvm-aarch64-Add-USB-storage-devices.patch b/kvm-aarch64-Add-USB-storage-devices.patch new file mode 100644 index 0000000..4059db2 --- /dev/null +++ b/kvm-aarch64-Add-USB-storage-devices.patch @@ -0,0 +1,41 @@ +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/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch b/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch new file mode 100644 index 0000000..bff1686 --- /dev/null +++ b/kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch @@ -0,0 +1,111 @@ +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/kvm-audio-Never-send-migration-section.patch b/kvm-audio-Never-send-migration-section.patch new file mode 100644 index 0000000..474612d --- /dev/null +++ b/kvm-audio-Never-send-migration-section.patch @@ -0,0 +1,63 @@ +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/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch b/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch new file mode 100644 index 0000000..df36313 --- /dev/null +++ b/kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch @@ -0,0 +1,106 @@ +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/kvm-configure-Fix-endianess-test-with-LTO.patch b/kvm-configure-Fix-endianess-test-with-LTO.patch new file mode 100644 index 0000000..9dd8745 --- /dev/null +++ b/kvm-configure-Fix-endianess-test-with-LTO.patch @@ -0,0 +1,82 @@ +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/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch b/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch new file mode 100644 index 0000000..6ed6a6b --- /dev/null +++ b/kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch @@ -0,0 +1,51 @@ +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/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch b/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch new file mode 100644 index 0000000..71f143a --- /dev/null +++ b/kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch @@ -0,0 +1,219 @@ +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/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch b/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch new file mode 100644 index 0000000..9f007d8 --- /dev/null +++ b/kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch @@ -0,0 +1,82 @@ +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/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch b/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch new file mode 100644 index 0000000..1d1ebf0 --- /dev/null +++ b/kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch @@ -0,0 +1,178 @@ +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/kvm-iothread-add-aio-max-batch-parameter.patch b/kvm-iothread-add-aio-max-batch-parameter.patch new file mode 100644 index 0000000..78a6c23 --- /dev/null +++ b/kvm-iothread-add-aio-max-batch-parameter.patch @@ -0,0 +1,324 @@ +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/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch b/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch new file mode 100644 index 0000000..8910da2 --- /dev/null +++ b/kvm-iothread-generalize-iothread_set_param-iothread_get_.patch @@ -0,0 +1,96 @@ +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/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch b/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch new file mode 100644 index 0000000..93fcc9b --- /dev/null +++ b/kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch @@ -0,0 +1,84 @@ +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/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch b/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch new file mode 100644 index 0000000..980466c --- /dev/null +++ b/kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch @@ -0,0 +1,66 @@ +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/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch b/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch new file mode 100644 index 0000000..d163571 --- /dev/null +++ b/kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch @@ -0,0 +1,111 @@ +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/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch b/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch new file mode 100644 index 0000000..9822ab6 --- /dev/null +++ b/kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch @@ -0,0 +1,94 @@ +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/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch b/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch new file mode 100644 index 0000000..c0cf7e6 --- /dev/null +++ b/kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch @@ -0,0 +1,59 @@ +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/kvm-migration-failover-reset-partially_hotplugged.patch b/kvm-migration-failover-reset-partially_hotplugged.patch new file mode 100644 index 0000000..97fb427 --- /dev/null +++ b/kvm-migration-failover-reset-partially_hotplugged.patch @@ -0,0 +1,44 @@ +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/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch b/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch new file mode 100644 index 0000000..524cda3 --- /dev/null +++ b/kvm-migration-move-wait-unplug-loop-to-its-own-function.patch @@ -0,0 +1,118 @@ +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/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch b/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch new file mode 100644 index 0000000..e443376 --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch @@ -0,0 +1,77 @@ +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/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch b/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch new file mode 100644 index 0000000..aeca11f --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch @@ -0,0 +1,106 @@ +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/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch b/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch new file mode 100644 index 0000000..06d0d4d --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch @@ -0,0 +1,48 @@ +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/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch b/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch new file mode 100644 index 0000000..ee9f702 --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch @@ -0,0 +1,75 @@ +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/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch b/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch new file mode 100644 index 0000000..e361980 --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch @@ -0,0 +1,59 @@ +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/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch b/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch new file mode 100644 index 0000000..c98c1c2 --- /dev/null +++ b/kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch @@ -0,0 +1,60 @@ +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/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch b/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch new file mode 100644 index 0000000..bace1cc --- /dev/null +++ b/kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch @@ -0,0 +1,56 @@ +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/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch b/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch new file mode 100644 index 0000000..95c276d --- /dev/null +++ b/kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch @@ -0,0 +1,44 @@ +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/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch b/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch new file mode 100644 index 0000000..aa106c9 --- /dev/null +++ b/kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch @@ -0,0 +1,265 @@ +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/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch b/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch new file mode 100644 index 0000000..bdd40b9 --- /dev/null +++ b/kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch @@ -0,0 +1,145 @@ +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/kvm-ratelimit-protect-with-a-mutex.patch b/kvm-ratelimit-protect-with-a-mutex.patch new file mode 100644 index 0000000..6d18a15 --- /dev/null +++ b/kvm-ratelimit-protect-with-a-mutex.patch @@ -0,0 +1,133 @@ +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/qemu-kvm.spec b/qemu-kvm.spec index e271b0b..b92bd72 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -14,6 +14,18 @@ # makes it easier to sync the dependency list with Fedora %global have_block_rbd 1 %global enable_werror 1 +%global have_clang 1 +%global have_safe_stack 0 + +%if %{have_clang} +%global toolchain clang +%ifarch x86_64 +%global have_safe_stack 1 +%endif +%else +%global toolchain gcc +%global cc_suffix .gcc +%endif %global have_pmem 1 %ifnarch x86_64 @@ -113,7 +125,7 @@ Obsoletes: %{name}-block-iscsi <= %{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 6.0.0 -Release: 11%{?rcrel}%{?dist}.1 +Release: 12%{?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) @@ -282,9 +294,98 @@ Patch77: kvm-arm-virt-Register-its-as-a-class-property.patch 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 # Source-git patches +%if %{have_clang} +BuildRequires: clang +%if %{have_safe_stack} +BuildRequires: compiler-rt +%endif +%else +BuildRequires: gcc +%endif BuildRequires: meson >= %{meson_version} BuildRequires: zlib-devel BuildRequires: glib2-devel @@ -541,6 +642,7 @@ mkdir -p %{qemu_kvm_build} --disable-auth-pam \\\ --disable-avx2 \\\ --disable-avx512f \\\ + --disable-block-drv-whitelist-in-tools \\\ --disable-bochs \\\ --disable-brlapi \\\ --disable-bsd-user \\\ @@ -663,7 +765,7 @@ mkdir -p %{qemu_kvm_build} run_configure() { ../configure \ --cc=%{__cc} \ - --cxx=%{__cxx} \ + --cxx=/bin/false \ --prefix="%{_prefix}" \ --libdir="%{_libdir}" \ --datadir="%{_datadir}" \ @@ -703,7 +805,6 @@ run_configure \ %if %{defined block_drivers_ro_list} --block-drv-ro-whitelist=%{block_drivers_ro_list} \ %endif - --enable-block-drv-whitelist-in-tools \ --enable-attr \ %ifarch %{ix86} x86_64 --enable-avx2 \ @@ -770,6 +871,9 @@ run_configure \ --enable-werror \ %endif --enable-xkbcommon \ +%if %{have_safe_stack} + --enable-safe-stack \ +%endif %if %{tools_only} @@ -812,7 +916,7 @@ cp -a %{kvm_target}-softmmu/qemu-system-%{kvm_target} qemu-kvm cp pc-bios/s390-ccw/s390-ccw.img pc-bios/s390-ccw/s390-netboot.img pc-bios/ %endif -gcc %{_sourcedir}/ksmctl.c $RPM_OPT_FLAGS $RPM_LD_FLAGS -o ksmctl +%{__cc} %{_sourcedir}/ksmctl.c %{optflags} %{?build_ldflags} -o ksmctl popd # endif !tools_only %endif @@ -1244,6 +1348,59 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Fri Aug 20 2021 Miroslav Rezanina - 6.0.0-12.el9 +- kvm-migration-Move-yank-outside-qemu_start_incoming_migr.patch [bz#1974683] +- kvm-migration-Allow-reset-of-postcopy_recover_triggered-.patch [bz#1974683] +- kvm-Remove-RHEL-7.0.0-machine-type.patch [bz#1968519] +- kvm-Remove-RHEL-7.1.0-machine-type.patch [bz#1968519] +- kvm-Remove-RHEL-7.2.0-machine-type.patch [bz#1968519] +- kvm-Remove-RHEL-7.3.0-machine-types.patch [bz#1968519] +- kvm-Remove-RHEL-7.4.0-machine-types.patch [bz#1968519] +- kvm-Remove-RHEL-7.5.0-machine-types.patch [bz#1968519] +- kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch [bz#1957194] +- kvm-migration-failover-reset-partially_hotplugged.patch [bz#1957194] +- kvm-hmp-Fix-loadvm-to-resume-the-VM-on-success-instead-o.patch [bz#1957194] +- kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch [bz#1957194] +- kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch [bz#1957194] +- kvm-ratelimit-protect-with-a-mutex.patch [bz#1957194] +- kvm-Update-Linux-headers-to-5.13-rc4.patch [bz#1957194] +- kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch [bz#1957194] +- kvm-iothread-generalize-iothread_set_param-iothread_get_.patch [bz#1957194] +- kvm-iothread-add-aio-max-batch-parameter.patch [bz#1957194] +- kvm-linux-aio-limit-the-batch-size-using-aio-max-batch-p.patch [bz#1957194] +- kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch [bz#1957194] +- kvm-migration-move-wait-unplug-loop-to-its-own-function.patch [bz#1957194] +- kvm-migration-failover-continue-to-wait-card-unplug-on-e.patch [bz#1957194] +- kvm-aarch64-Add-USB-storage-devices.patch [bz#1957194] +- kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch [bz#1957194] +- kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch [bz#1957194] +- kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch [bz#1957194] +- kvm-audio-Never-send-migration-section.patch [bz#1957194] +- kvm-pc-bios-s390-ccw-bootmap-Silence-compiler-warning-fr.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Use-reset_psw-pointer-instead-of-ha.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-netboot-Use-Wl-prefix-to-pass-param.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Silence-warning-from-Clang-by-marki.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Fix-the-cc-option-macro-in-the-Make.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Silence-GCC-11-stringop-overflow-wa.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch [bz#1939509 bz#1940132] +- kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch [bz#1939509 bz#1940132] +- kvm-configure-Fix-endianess-test-with-LTO.patch [bz#1939509 bz#1940132] +- kvm-spec-Switch-toolchain-to-Clang-LLVM.patch [bz#1939509 bz#1940132] +- kvm-spec-Use-safe-stack-for-x86_64.patch [bz#1939509 bz#1940132] +- kvm-spec-Reenable-write-support-for-VMDK-etc.-in-tools.patch [bz#1989841] +- Resolves: bz#1974683 + (Fail to set migrate incoming for 2nd time after the first time failed) +- Resolves: bz#1968519 + (Remove all the old 7.0-7.5 machine types) +- Resolves: bz#1957194 + (Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta) +- Resolves: bz#1939509 + (QEMU: enable SafeStack) +- Resolves: bz#1940132 + (QEMU: switch build toolchain to Clang/LLVM) +- Resolves: bz#1989841 + (RFE: qemu-img cannot convert images into vmdk and vpc formats) + * Tue Aug 10 2021 Mohan Boddu - 17:6.0.0-11.1 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688