* Fri Aug 20 2021 Miroslav Rezanina <mrezanin@redhat.com> - 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)
This commit is contained in:
parent
f691be9771
commit
b7fbd568b2
197
kvm-Remove-RHEL-7.0.0-machine-type.patch
Normal file
197
kvm-Remove-RHEL-7.0.0-machine-type.patch
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
From 4fa7a78aa900988816d07034943be384d57117f0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 10:24:56 +0200
|
||||||
|
Subject: [PATCH 03/39] Remove RHEL 7.0.0 machine type
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
Everything is used elsewhere except for cve_2014_5263 fields. Remove those.
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
292
kvm-Remove-RHEL-7.1.0-machine-type.patch
Normal file
292
kvm-Remove-RHEL-7.1.0-machine-type.patch
Normal file
@ -0,0 +1,292 @@
|
|||||||
|
From 224b28d337f36a937b34685519d7b657974a95d0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 10:46:56 +0200
|
||||||
|
Subject: [PATCH 04/39] Remove RHEL 7.1.0 machine type
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
migrate_pre_2_2 was a redhat artifact, removed.
|
||||||
|
broken_reserved_end is already fixed, nothing to do.
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
192
kvm-Remove-RHEL-7.2.0-machine-type.patch
Normal file
192
kvm-Remove-RHEL-7.2.0-machine-type.patch
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
From 999b28683394c2939ca8bd6b692ed2169860ced9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 11:02:24 +0200
|
||||||
|
Subject: [PATCH 05/39] Remove RHEL 7.2.0 machine type
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
315
kvm-Remove-RHEL-7.3.0-machine-types.patch
Normal file
315
kvm-Remove-RHEL-7.3.0-machine-types.patch
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
From 1610bd2ce98e3d93296fd3bc4d2c24e905428a4a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 11:24:26 +0200
|
||||||
|
Subject: [PATCH 06/39] Remove RHEL 7.3.0 machine types
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
Only thing to remove with care was __redhat_e1000e_7_3_intr_state.
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
301
kvm-Remove-RHEL-7.4.0-machine-types.patch
Normal file
301
kvm-Remove-RHEL-7.4.0-machine-types.patch
Normal file
@ -0,0 +1,301 @@
|
|||||||
|
From b64f8848efe610c52791587ec41301b73ec9165a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 11:53:07 +0200
|
||||||
|
Subject: [PATCH 07/39] Remove RHEL 7.4.0 machine types
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
Revert pc_rom_ro hack.
|
||||||
|
Remove force_rev1_fadt hack, it is not needed anymore.
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
210
kvm-Remove-RHEL-7.5.0-machine-types.patch
Normal file
210
kvm-Remove-RHEL-7.5.0-machine-types.patch
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
From 6de2502ef6f2ee68842bed7d09b0a2c7ac57b11b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juan Quintela <quintela@redhat.com>
|
||||||
|
Date: Tue, 3 Aug 2021 12:24:36 +0200
|
||||||
|
Subject: [PATCH 08/39] Remove RHEL 7.5.0 machine types
|
||||||
|
|
||||||
|
RH-Author: quintela1 <quintela@redhat.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
|
||||||
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
5465
kvm-Update-Linux-headers-to-5.13-rc4.patch
Normal file
5465
kvm-Update-Linux-headers-to-5.13-rc4.patch
Normal file
File diff suppressed because it is too large
Load Diff
41
kvm-aarch64-Add-USB-storage-devices.patch
Normal file
41
kvm-aarch64-Add-USB-storage-devices.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From 7fd7892a21cf930f3d44dc3205bed9fb9128c11c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Jones <drjones@redhat.com>
|
||||||
|
Date: Wed, 4 Aug 2021 07:10:15 -0400
|
||||||
|
Subject: [PATCH 23/39] aarch64: Add USB storage devices
|
||||||
|
|
||||||
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <drjones@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
111
kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch
Normal file
111
kvm-acpi-pc-revert-back-to-v5.2-PCI-slot-enumeration.patch
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
From 456bb6cb658b9d332fa0b5b91946916b48ed449e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <imammedo@redhat.com>
|
||||||
|
Message-Id: <20210624204229.998824-3-imammedo@redhat.com>
|
||||||
|
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
Tested-by: John Sucaet <john.sucaet@ekinops.com>
|
||||||
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
||||||
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||||
|
(cherry picked from commit 7193d7cdd93e50f0e5f09803b98d27d3f9b147ac)
|
||||||
|
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
63
kvm-audio-Never-send-migration-section.patch
Normal file
63
kvm-audio-Never-send-migration-section.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
From 1e69dbe01e1cad1680723e1bc086cc52a1772c17 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
|
||||||
|
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 <dgilbert@redhat.com>
|
||||||
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
Tested-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
Message-Id: <20210809170956.78536-1-dgilbert@redhat.com>
|
||||||
|
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||||
|
(cherry picked from commit da77adbaf619c4d170cb42d769145ad1803fbad9)
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
106
kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch
Normal file
106
kvm-block-nvme-Fix-VFIO_MAP_DMA-failed-No-space-left-on-.patch
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
From 1d85424fe5208986fc07fe9baa1e9b33d77b185a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <fam@euphon.net>
|
||||||
|
Cc: Maxim Levitsky <mlevitsk@redhat.com>
|
||||||
|
Cc: Alex Williamson <alex.williamson@redhat.com>
|
||||||
|
Reported-by: Michal PrÃvoznÃk <mprivozn@redhat.com>
|
||||||
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
(cherry picked from commit 15a730e7a3aaac180df72cd5730e0617bcf44a5a)
|
||||||
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
82
kvm-configure-Fix-endianess-test-with-LTO.patch
Normal file
82
kvm-configure-Fix-endianess-test-with-LTO.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
From 40e5138fb1e615c927a21d0b3f2e24eca885ede4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
Date: Thu, 15 Jul 2021 10:39:28 +0200
|
||||||
|
Subject: [PATCH 36/39] configure: Fix endianess test with LTO
|
||||||
|
|
||||||
|
RH-Author: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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 <richard.henderson@linaro.org>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit 659eb157a55666bf379f5362238a86d855e262e2)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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 <stdio.h>
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From 3347d61ff783d05f41f03097551460dc5825b301 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <yama@redhat.com>
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
Message-Id: <20210511163151.45167-1-kwolf@redhat.com>
|
||||||
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit c53cd04e70641fdf9410aac40c617d074047b3e1)
|
||||||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
219
kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch
Normal file
219
kvm-i386-Add-ratelimit-for-bus-locks-acquired-in-guest.patch
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
From e92a6c64cb4b1437c5b75f25a638dbb6eb041383 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "plai@redhat.com" <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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <chenyi.qiang@intel.com>
|
||||||
|
Message-Id: <20210521043820.29678-1-chenyi.qiang@intel.com>
|
||||||
|
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
|
||||||
|
(cherry picked from commit 035d1ef26565f8f8eae058c37f5731a9ae304b96)
|
||||||
|
Signed-off-by: Paul Lai <plai@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
82
kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch
Normal file
82
kvm-i386-cpu-Expose-AVX_VNNI-instruction-to-guest.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
From c24fcdf0712ef81ec25ca3a4a1144cca18303fbe Mon Sep 17 00:00:00 2001
|
||||||
|
From: "plai@redhat.com" <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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <yang.zhong@intel.com>
|
||||||
|
Message-Id: <20210407015609.22936-1-yang.zhong@intel.com>
|
||||||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
(cherry picked from commit c1826ea6a052084f2e6a0bae9dd5932a727df039)
|
||||||
|
Signed-off-by: Paul Lai <plai@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
178
kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch
Normal file
178
kvm-iotests-Improve-and-rename-test-291-to-qemu-img-bitm.patch
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
From a6ab9f3d290c2ff3c2fc0187c69cf8cf69feff40 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Blake <eblake@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
|
||||||
|
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 <eblake@redhat.com>
|
||||||
|
Message-Id: <20210709153951.2801666-2-eblake@redhat.com>
|
||||||
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
||||||
|
Reviewed-by: Nir Soffer <nsoffer@redhat.com>
|
||||||
|
|
||||||
|
(cherry picked from commit 94075c28eea0755173939dfaf1eae688b224a74e)
|
||||||
|
Conflicts:
|
||||||
|
tests/qemu-iotests/tests/qemu-img-bitmaps.out - commit 8417e1378c not backported
|
||||||
|
Signed-off-by: Eric Blake <eblake@redhat.com>
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
324
kvm-iothread-add-aio-max-batch-parameter.patch
Normal file
324
kvm-iothread-add-aio-max-batch-parameter.patch
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
From d8682ef60e3a658d776473fee2299015dd5105d7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
Date: Thu, 29 Jul 2021 07:42:31 -0400
|
||||||
|
Subject: [PATCH 18/39] iothread: add aio-max-batch parameter
|
||||||
|
|
||||||
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
Message-id: 20210721094211.69853-3-sgarzare@redhat.com
|
||||||
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
(cherry picked from commit 1793ad0247cad35db1ebbc04fbea0446c30a27ca)
|
||||||
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,96 @@
|
|||||||
|
From 6f827f890e68c3b8bda80822edc09369e93da01f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
Message-id: 20210721094211.69853-2-sgarzare@redhat.com
|
||||||
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
(cherry picked from commit 0445409d7497bededa1047f0d8298b0d4bb3b1a3)
|
||||||
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,84 @@
|
|||||||
|
From 6f4cb3e1e5d718356f16645e806d47cb2159ae98 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
Message-id: 20210721094211.69853-4-sgarzare@redhat.com
|
||||||
|
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
(cherry picked from commit d7ddd0a1618a75b31dc308bb37365ce1da972154)
|
||||||
|
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,66 @@
|
|||||||
|
From 5e1535771bba299aae4de2d810100fa7fedfeca8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Xu <peterx@redhat.com>
|
||||||
|
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 <leobras@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: Peter Xu <Peter Xu <peterx@redhat.com>>
|
||||||
|
|
||||||
|
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 <peterx@redhat.com>
|
||||||
|
Message-Id: <20210629181356.217312-3-peterx@redhat.com>
|
||||||
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit b7f9afd48e7bc5c341e55348f2c2eed08314be7d)
|
||||||
|
Fixes: b5eea99e ("migration: Add yank feature", 2021-01-13)
|
||||||
|
Signed-off-by: Leonardo Bras <leobras@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
111
kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch
Normal file
111
kvm-migration-Move-bitmap_mutex-out-of-migration_bitmap_.patch
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
From 7726f6461eebf2c4a4b129f1c98add25c0b1bee2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Xu <peterx@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <wei.w.wang@intel.com>
|
||||||
|
Cc: David Hildenbrand <david@redhat.com>
|
||||||
|
Cc: Hailiang Zhang <zhang.zhanghailiang@huawei.com>
|
||||||
|
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Cc: Juan Quintela <quintela@redhat.com>
|
||||||
|
Cc: Leonardo Bras Soares Passos <lsoaresp@redhat.com>
|
||||||
|
Signed-off-by: Peter Xu <peterx@redhat.com>
|
||||||
|
Message-Id: <20210630200805.280905-1-peterx@redhat.com>
|
||||||
|
Reviewed-by: Wei Wang <wei.w.wang@intel.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit 63268c4970a5f126cc9af75f3ccb8057abef5ec0)
|
||||||
|
Signed-off-by: Peter Xu <peterx@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
From 4c11e06222ca5a88f48f2d47adc3a7da306bb345 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Xu <peterx@redhat.com>
|
||||||
|
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 <leobras@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: Peter Xu <Peter Xu <peterx@redhat.com>>
|
||||||
|
|
||||||
|
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 <peterx@redhat.com>
|
||||||
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Message-Id: <20210629181356.217312-2-peterx@redhat.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit cc48c587d25ff5dd7dddb4e5072de9ca8464c832)
|
||||||
|
Fixes: b5eea99e ("migration: Add yank feature", 2021-01-13)
|
||||||
|
Signed-off-by: Leonardo Bras <leobras@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
From 0f41423f2bb57e77400cfec0683b7514c9798c55 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <lvivier@redhat.com>
|
||||||
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Message-Id: <20210629155007.629086-3-lvivier@redhat.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit 944bc528421aa848ca218ee535ea923a4147a525)
|
||||||
|
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
44
kvm-migration-failover-reset-partially_hotplugged.patch
Normal file
44
kvm-migration-failover-reset-partially_hotplugged.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
From 2e07c4c66a1199ef33fb2e89164e03ca2acdcf10 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
Date: Thu, 29 Jul 2021 07:42:12 -0400
|
||||||
|
Subject: [PATCH 10/39] migration: failover: reset partially_hotplugged
|
||||||
|
|
||||||
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <lvivier@redhat.com>
|
||||||
|
Message-Id: <20210629152937.619193-1-lvivier@redhat.com>
|
||||||
|
Reviewed-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
||||||
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||||
|
(cherry picked from commit 109c20ea28cc0d82fa353e692345b172cb5721cc)
|
||||||
|
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
118
kvm-migration-move-wait-unplug-loop-to-its-own-function.patch
Normal file
118
kvm-migration-move-wait-unplug-loop-to-its-own-function.patch
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
From e9848f4a4f45960bff1a2a7bc4a4670670de37a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <lvivier@redhat.com>
|
||||||
|
Message-Id: <20210629155007.629086-2-lvivier@redhat.com>
|
||||||
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
Reviewed-by: Juan Quintela <quintela@redhat.com>
|
||||||
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||||
|
(cherry picked from commit fde93d99d9c208c07e2dcc24cd04e824d2b65b35)
|
||||||
|
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
77
kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch
Normal file
77
kvm-pc-bios-s390-ccw-Allow-building-with-Clang-too.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
From 9da71839fdc4e8b9d034998b0ed8a7ee9dfe7645 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit a5b2afd522dde375c38cf94b7c696ffa3faba2fb)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
106
kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch
Normal file
106
kvm-pc-bios-s390-ccw-Fix-inline-assembly-for-older-versi.patch
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
From c783eab8a3770703a39bbbd7edd23af7b9cb8f14 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit 052b66e7211af64964e005126eaa3c944b296b0e)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From f2d40216872a40bc5f5089de760c7ba0e3a710bc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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 <thuth@redhat.com>
|
||||||
|
(cherry picked from commit 3462ff35512e925df5ee8c079ed46d4c93b633a7)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,75 @@
|
|||||||
|
From c5b348e6d0334333295332c55fc4be51ce2668b8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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 <thuth@redhat.com>
|
||||||
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
||||||
|
Message-Id: <20210422145911.2513980-1-philmd@redhat.com>
|
||||||
|
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
|
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 <cohuck@redhat.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit da231910d33084ccf63f07de210b145e0fa31d98)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,59 @@
|
|||||||
|
From 12acb42f2e6317a530fa01b5cf55a199231bfdce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit 679196a646c91b8ce9a97b0aa81ffb3776cf8046)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From 609d8661171760c7ead04f64359d47a77c31d474 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Message-Id: <20210423142440.582188-1-thuth@redhat.com>
|
||||||
|
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit ff77712a8a2e15e5901fad35b9a6bb65974b2e4a)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,56 @@
|
|||||||
|
From c00df86dd570d78767c5435f97bbe1d06407e470 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit d08a64940452060ab7ad5eb49cd5801131c2b9ec)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,44 @@
|
|||||||
|
From 354026a79551358a5be4ed561e080ff550738e92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Huth <thuth@redhat.com>
|
||||||
|
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 <jmaloy@redhat.com>
|
||||||
|
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 <ddepaula@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
|
||||||
|
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 <thuth@redhat.com>
|
||||||
|
(cherry picked from commit b460a220872c28a8da95cbc7e9369d26aa268848)
|
||||||
|
Signed-off-by: Jon Maloy <jmaloy@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
265
kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch
Normal file
265
kvm-qemu-img-Add-skip-broken-bitmaps-for-convert-bitmaps.patch
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
From c5a2313ba173568087d78f76cc0258e7a353830b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Blake <eblake@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
|
||||||
|
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 <eblake@redhat.com>
|
||||||
|
Message-Id: <20210709153951.2801666-4-eblake@redhat.com>
|
||||||
|
[eblake: warning message tweak, test enhancements]
|
||||||
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
||||||
|
(cherry picked from commit 955171e4417bf39edb5503e694501e082a757731)
|
||||||
|
Signed-off-by: Eric Blake <eblake@redhat.com>
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
145
kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch
Normal file
145
kvm-qemu-img-Fail-fast-on-convert-bitmaps-with-inconsist.patch
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
From 5e8f99ea87409e1423c2e1c5e445003cf4a032a9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eric Blake <eblake@redhat.com>
|
||||||
|
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 <mrezanin@redhat.com>
|
||||||
|
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é <philmd@redhat.com>
|
||||||
|
|
||||||
|
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 <eblake@redhat.com>
|
||||||
|
Message-Id: <20210709153951.2801666-3-eblake@redhat.com>
|
||||||
|
[eblake: add a hint to the warning message, simplify name computation]
|
||||||
|
Reviewed-by: Nir Soffer <nsoffer@redhat.com>
|
||||||
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
||||||
|
(cherry picked from commit 74a4320f30632fa539507861b3835698282e462e)
|
||||||
|
Signed-off-by: Eric Blake <eblake@redhat.com>
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
133
kvm-ratelimit-protect-with-a-mutex.patch
Normal file
133
kvm-ratelimit-protect-with-a-mutex.patch
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
From 05efd4675b1241f2cc68fd54c92a8a834699f212 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "plai@redhat.com" <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 <mrezanin@redhat.com>
|
||||||
|
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 <sgarzare@redhat.com>
|
||||||
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
||||||
|
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||||
|
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
||||||
|
|
||||||
|
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 <pbonzini@redhat.com>
|
||||||
|
(cherry picked from commit 4951967d84a0acbf47895add9158e2d4c6056ea0)
|
||||||
|
Signed-off-by: Paul Lai <plai@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
165
qemu-kvm.spec
165
qemu-kvm.spec
@ -14,6 +14,18 @@
|
|||||||
# makes it easier to sync the dependency list with Fedora
|
# makes it easier to sync the dependency list with Fedora
|
||||||
%global have_block_rbd 1
|
%global have_block_rbd 1
|
||||||
%global enable_werror 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
|
%global have_pmem 1
|
||||||
%ifnarch x86_64
|
%ifnarch x86_64
|
||||||
@ -113,7 +125,7 @@ Obsoletes: %{name}-block-iscsi <= %{version} \
|
|||||||
Summary: QEMU is a machine emulator and virtualizer
|
Summary: QEMU is a machine emulator and virtualizer
|
||||||
Name: qemu-kvm
|
Name: qemu-kvm
|
||||||
Version: 6.0.0
|
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 because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||||
# Epoch 15 used for RHEL 8
|
# Epoch 15 used for RHEL 8
|
||||||
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
# 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
|
Patch78: kvm-arm-virt-Enable-ARM-RAS-support.patch
|
||||||
# For bz#1972079 - Windows Installation blocked on 4k disk when using blk+raw+iothread
|
# 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
|
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
|
# 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: meson >= %{meson_version}
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
BuildRequires: glib2-devel
|
BuildRequires: glib2-devel
|
||||||
@ -541,6 +642,7 @@ mkdir -p %{qemu_kvm_build}
|
|||||||
--disable-auth-pam \\\
|
--disable-auth-pam \\\
|
||||||
--disable-avx2 \\\
|
--disable-avx2 \\\
|
||||||
--disable-avx512f \\\
|
--disable-avx512f \\\
|
||||||
|
--disable-block-drv-whitelist-in-tools \\\
|
||||||
--disable-bochs \\\
|
--disable-bochs \\\
|
||||||
--disable-brlapi \\\
|
--disable-brlapi \\\
|
||||||
--disable-bsd-user \\\
|
--disable-bsd-user \\\
|
||||||
@ -663,7 +765,7 @@ mkdir -p %{qemu_kvm_build}
|
|||||||
run_configure() {
|
run_configure() {
|
||||||
../configure \
|
../configure \
|
||||||
--cc=%{__cc} \
|
--cc=%{__cc} \
|
||||||
--cxx=%{__cxx} \
|
--cxx=/bin/false \
|
||||||
--prefix="%{_prefix}" \
|
--prefix="%{_prefix}" \
|
||||||
--libdir="%{_libdir}" \
|
--libdir="%{_libdir}" \
|
||||||
--datadir="%{_datadir}" \
|
--datadir="%{_datadir}" \
|
||||||
@ -703,7 +805,6 @@ run_configure \
|
|||||||
%if %{defined block_drivers_ro_list}
|
%if %{defined block_drivers_ro_list}
|
||||||
--block-drv-ro-whitelist=%{block_drivers_ro_list} \
|
--block-drv-ro-whitelist=%{block_drivers_ro_list} \
|
||||||
%endif
|
%endif
|
||||||
--enable-block-drv-whitelist-in-tools \
|
|
||||||
--enable-attr \
|
--enable-attr \
|
||||||
%ifarch %{ix86} x86_64
|
%ifarch %{ix86} x86_64
|
||||||
--enable-avx2 \
|
--enable-avx2 \
|
||||||
@ -770,6 +871,9 @@ run_configure \
|
|||||||
--enable-werror \
|
--enable-werror \
|
||||||
%endif
|
%endif
|
||||||
--enable-xkbcommon \
|
--enable-xkbcommon \
|
||||||
|
%if %{have_safe_stack}
|
||||||
|
--enable-safe-stack \
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%if %{tools_only}
|
%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/
|
cp pc-bios/s390-ccw/s390-ccw.img pc-bios/s390-ccw/s390-netboot.img pc-bios/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
gcc %{_sourcedir}/ksmctl.c $RPM_OPT_FLAGS $RPM_LD_FLAGS -o ksmctl
|
%{__cc} %{_sourcedir}/ksmctl.c %{optflags} %{?build_ldflags} -o ksmctl
|
||||||
popd
|
popd
|
||||||
# endif !tools_only
|
# endif !tools_only
|
||||||
%endif
|
%endif
|
||||||
@ -1244,6 +1348,59 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 20 2021 Miroslav Rezanina <mrezanin@redhat.com> - 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 <mboddu@redhat.com> - 17:6.0.0-11.1
|
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 17:6.0.0-11.1
|
||||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
Related: rhbz#1991688
|
Related: rhbz#1991688
|
||||||
|
Loading…
Reference in New Issue
Block a user