From 1491e2cb1b4d294c55b692dd640d55b25ba6885d Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Tue, 13 Jan 2026 09:00:06 +0100 Subject: [PATCH] * Tue Jan 13 2026 Miroslav Rezanina - 10.1.0-11 - kvm-fix-pc_rhel_10_2_compat_len.patch [RHEL-126707] - kvm-q35-increase-default-tseg-size.patch [RHEL-126707] - kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch [RHEL-139028] - kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch [RHEL-111853] - Resolves: RHEL-126707 ([qemu, rhel-10] increase default TSEG size) - Resolves: RHEL-139028 (Intel IOMMU VM freezes: "call_irq_handler: 3.37 No irq handler for vector"[rhel-10.2]) - Resolves: RHEL-111853 ([Intel 10.0 FEAT] [SPR] TDX: Virt-QEMU: QEMU Support [rhel-10]) --- kvm-fix-pc_rhel_10_2_compat_len.patch | 36 ++++++++++ ...ix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch | 68 +++++++++++++++++++ kvm-q35-increase-default-tseg-size.patch | 63 +++++++++++++++++ ...hat-allow-5-level-paging-for-TDX-VMs.patch | 43 ++++++++++++ qemu-kvm.spec | 22 +++++- 5 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 kvm-fix-pc_rhel_10_2_compat_len.patch create mode 100644 kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch create mode 100644 kvm-q35-increase-default-tseg-size.patch create mode 100644 kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch diff --git a/kvm-fix-pc_rhel_10_2_compat_len.patch b/kvm-fix-pc_rhel_10_2_compat_len.patch new file mode 100644 index 0000000..b93defd --- /dev/null +++ b/kvm-fix-pc_rhel_10_2_compat_len.patch @@ -0,0 +1,36 @@ +From c4415936b6033aff4b2e38b1c470c920e14fa35a Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +Date: Mon, 12 Jan 2026 09:19:07 +0100 +Subject: [PATCH 1/4] fix pc_rhel_10_2_compat_len + +RH-Author: Gerd Hoffmann +RH-MergeRequest: 447: q35: increase default tseg size +RH-Jira: RHEL-126707 +RH-Acked-by: Miroslav Rezanina +RH-Commit: [1/2] b9291186e031c0c018dfdc87960b04817421ecec (kraxel.rh/centos-src-qemu-kvm) + +There is an (apparently) cut+paste error in the definition +pc_rhel_10_2_compat_len variable, it calculates the length +of the wrong array. Fix it. + +Signed-off-by: Gerd Hoffmann +--- + hw/i386/pc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hw/i386/pc.c b/hw/i386/pc.c +index 446d4a7c93..394a84eb8a 100644 +--- a/hw/i386/pc.c ++++ b/hw/i386/pc.c +@@ -304,7 +304,7 @@ GlobalProperty pc_rhel_10_2_compat[] = { + { TYPE_X86_CPU, "x-arch-cap-always-on", "true" }, + { TYPE_X86_CPU, "x-pdcm-on-even-without-pmu", "true" }, + }; +-const size_t pc_rhel_10_2_compat_len = G_N_ELEMENTS(pc_compat_10_0); ++const size_t pc_rhel_10_2_compat_len = G_N_ELEMENTS(pc_rhel_10_2_compat); + + GlobalProperty pc_rhel_10_1_compat[] = { + /* pc_rhel_10_1_compat from pc_compat_9_1 */ +-- +2.47.3 + diff --git a/kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch b/kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch new file mode 100644 index 0000000..fc1797d --- /dev/null +++ b/kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch @@ -0,0 +1,68 @@ +From 7ecba7856c08f410391ccb12620aeb304d800815 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= +Date: Thu, 6 Nov 2025 11:51:48 +0100 +Subject: [PATCH 3/4] hw/intc/ioapic: Fix ACCEL_KERNEL_GSI_IRQFD_POSSIBLE typo +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Cédric Le Goater +RH-MergeRequest: 449: hw/intc/ioapic: Fix ACCEL_KERNEL_GSI_IRQFD_POSSIBLE typo +RH-Jira: RHEL-139028 +RH-Acked-by: Igor Mammedov +RH-Acked-by: Miroslav Rezanina +RH-Commit: [1/1] 61c1a3f68e0a5403a90f1d1f2cb793cc83e0cea9 (clegoate/qemu-kvm-centos) + +Commit 638ac1c78457 introduced a regression in interrupt remapping +when running a VM configured with an intel-iommu device and an +assigned PCI VF. During boot, Linux reports repeated messages : + + [ 15.416794] __common_interrupt: 2.37 No irq handler for vector + [ 15.417266] __common_interrupt: 2.37 No irq handler for vector + [ 15.417733] __common_interrupt: 2.37 No irq handler for vector + [ 15.418202] __common_interrupt: 2.37 No irq handler for vector + [ 15.418670] __common_interrupt: 2.37 No irq handler for vector + +and may eventually hang. + +The issue is caused by the incorrect use of the macro +ACCEL_KERNEL_GSI_IRQFD_POSSIBLE, which should instead be +ACCEL_GSI_IRQFD_POSSIBLE. + +Fixes: 638ac1c78457 ("hw/intc: Generalize APIC helper names from kvm_* to accel_*") +Cc: Magnus Kulke +Signed-off-by: Cédric Le Goater +Reviewed-by: Philippe Mathieu-Daudé +Message-ID: <20251106105148.737093-1-clg@redhat.com> +Signed-off-by: Philippe Mathieu-Daudé +(cherry picked from commit 3abfbb571143ba865488b6c11f8ad75dda97d1a3) +Signed-off-by: Cédric Le Goater +--- + hw/intc/ioapic.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c +index e431d00311..38e4384648 100644 +--- a/hw/intc/ioapic.c ++++ b/hw/intc/ioapic.c +@@ -216,7 +216,7 @@ static void ioapic_update_kvm_routes(IOAPICCommonState *s) + #endif + } + +-#ifdef ACCEL_KERNEL_GSI_IRQFD_POSSIBLE ++#ifdef ACCEL_GSI_IRQFD_POSSIBLE + static void ioapic_iec_notifier(void *private, bool global, + uint32_t index, uint32_t mask) + { +@@ -434,7 +434,7 @@ static const MemoryRegionOps ioapic_io_ops = { + + static void ioapic_machine_done_notify(Notifier *notifier, void *data) + { +-#ifdef ACCEL_KERNEL_GSI_IRQFD_POSSIBLE ++#ifdef ACCEL_GSI_IRQFD_POSSIBLE + IOAPICCommonState *s = container_of(notifier, IOAPICCommonState, + machine_done); + +-- +2.47.3 + diff --git a/kvm-q35-increase-default-tseg-size.patch b/kvm-q35-increase-default-tseg-size.patch new file mode 100644 index 0000000..9ac5d51 --- /dev/null +++ b/kvm-q35-increase-default-tseg-size.patch @@ -0,0 +1,63 @@ +From 50db9d559ad56dfa54de13adbb494edca24d9d43 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +Date: Thu, 6 Nov 2025 11:56:40 +0100 +Subject: [PATCH 2/4] q35: increase default tseg size + +RH-Author: Gerd Hoffmann +RH-MergeRequest: 447: q35: increase default tseg size +RH-Jira: RHEL-126707 +RH-Acked-by: Miroslav Rezanina +RH-Commit: [2/2] 8cbbb7b55e2e83bb6129b2da92179ff7b969c4ed (kraxel.rh/centos-src-qemu-kvm) + +With virtual machines becoming larger (more CPUs, more memory) the +memory needed by the SMM code in OVMF to manage page tables and vcpu +state grows too. + +Default SMM memory (aka TSEG) size is 16 MB, and this often is not +enough. Bump it to 64 MB for new machine types. + +Signed-off-by: Gerd Hoffmann +Reviewed-by: Michael S. Tsirkin +Signed-off-by: Michael S. Tsirkin +Message-Id: <20251106105640.1642109-1-kraxel@redhat.com> +(cherry picked from commit fa4136387928749d5a1b4fa3606ae0ce6dce75aa) + +[ RHEL: drop compat property update for upstream machine types ] +[ RHEL: add compat property for rhel 10.0 machine type ] +[ NOTE: the 10.0 compat properties are used for + rhel-9.6 + older machine types too ] + +Resolves: RHEL-126707 +--- + hw/i386/pc.c | 1 + + hw/pci-host/q35.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/hw/i386/pc.c b/hw/i386/pc.c +index 394a84eb8a..27900e071b 100644 +--- a/hw/i386/pc.c ++++ b/hw/i386/pc.c +@@ -299,6 +299,7 @@ const size_t pc_rhel_compat_len = G_N_ELEMENTS(pc_rhel_compat); + + GlobalProperty pc_rhel_10_2_compat[] = { + /* pc_rhel_10_2_compat from pc_compat_10_0 */ ++ { "mch", "extended-tseg-mbytes", "16" }, + { TYPE_X86_CPU, "x-consistent-cache", "false" }, + { TYPE_X86_CPU, "x-vendor-cpuid-only-v2", "false" }, + { TYPE_X86_CPU, "x-arch-cap-always-on", "true" }, +diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c +index 1951ae440c..a708758d36 100644 +--- a/hw/pci-host/q35.c ++++ b/hw/pci-host/q35.c +@@ -663,7 +663,7 @@ static void mch_realize(PCIDevice *d, Error **errp) + + static const Property mch_props[] = { + DEFINE_PROP_UINT16("extended-tseg-mbytes", MCHPCIState, ext_tseg_mbytes, +- 16), ++ 64), + DEFINE_PROP_BOOL("smbase-smram", MCHPCIState, has_smram_at_smbase, true), + }; + +-- +2.47.3 + diff --git a/kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch b/kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch new file mode 100644 index 0000000..533cfcf --- /dev/null +++ b/kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch @@ -0,0 +1,43 @@ +From 966c9312152322e6c2bb434861388a34754911c8 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Fri, 18 Jul 2025 18:03:50 +0200 +Subject: [PATCH 4/4] redhat: allow 5-level paging for TDX VMs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Paolo Bonzini +RH-MergeRequest: 450: redhat: allow 5-level paging for TDX VMs +RH-Jira: RHEL-111853 +RH-Acked-by: Miroslav Rezanina +RH-Acked-by: Daniel P. Berrangé +RH-Commit: [1/1] d3ffac324cfbf79d99763b9d3d29797d883f4969 (bonzini/qemu-kvm-centos) + +Without this patch, when booting a TDX guest, qemu outputs, + +qemu-kvm: TDX requires guest CPU physical bits (48) to match host CPU physical bits (52) + +This is due to different machine types in RHEL vs. upstream, and therefore +must be kept forever as a delta from upstream. + +Resolves: https://issues.redhat.com/browse/RHEL-111853 +Signed-off-by: Paolo Bonzini +--- + target/i386/kvm/tdx.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c +index dbf0fa2c91..91fe19b7d4 100644 +--- a/target/i386/kvm/tdx.c ++++ b/target/i386/kvm/tdx.c +@@ -754,6 +754,7 @@ static void tdx_cpu_instance_init(X86ConfidentialGuest *cg, CPUState *cpu) + } + + object_property_set_bool(OBJECT(cpu), "pmu", false, &error_abort); ++ object_property_set_int(OBJECT(cpu), "host-phys-bits-limit", 0, &error_abort); + + /* invtsc is fixed1 for TD guest */ + object_property_set_bool(OBJECT(cpu), "invtsc", true, &error_abort); +-- +2.47.3 + diff --git a/qemu-kvm.spec b/qemu-kvm.spec index 77867a6..8f34097 100644 --- a/qemu-kvm.spec +++ b/qemu-kvm.spec @@ -143,7 +143,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \ Summary: QEMU is a machine emulator and virtualizer Name: qemu-kvm Version: 10.1.0 -Release: 10%{?rcrel}%{?dist}%{?cc_suffix} +Release: 11%{?rcrel}%{?dist}%{?cc_suffix} # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped # Epoch 15 used for RHEL 8 # Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5) @@ -347,6 +347,14 @@ Patch95: kvm-qemu-img-info-Add-cache-mode-option.patch Patch96: kvm-rh-configs-enable-CONFIG_TDX-for-x86_64.patch # For RHEL-108142 - QEMU crashes when stopping source VM during live migration Patch97: kvm-block-Fix-BDS-use-after-free-during-shutdown.patch +# For RHEL-126707 - [qemu, rhel-10] increase default TSEG size +Patch98: kvm-fix-pc_rhel_10_2_compat_len.patch +# For RHEL-126707 - [qemu, rhel-10] increase default TSEG size +Patch99: kvm-q35-increase-default-tseg-size.patch +# For RHEL-139028 - Intel IOMMU VM freezes: "call_irq_handler: 3.37 No irq handler for vector"[rhel-10.2] +Patch100: kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch +# For RHEL-111853 - [Intel 10.0 FEAT] [SPR] TDX: Virt-QEMU: QEMU Support [rhel-10] +Patch101: kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch %if %{have_clang} BuildRequires: clang @@ -1426,6 +1434,18 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \ %endif %changelog +* Tue Jan 13 2026 Miroslav Rezanina - 10.1.0-11 +- kvm-fix-pc_rhel_10_2_compat_len.patch [RHEL-126707] +- kvm-q35-increase-default-tseg-size.patch [RHEL-126707] +- kvm-hw-intc-ioapic-Fix-ACCEL_KERNEL_GSI_IRQFD_POSSIBLE-t.patch [RHEL-139028] +- kvm-redhat-allow-5-level-paging-for-TDX-VMs.patch [RHEL-111853] +- Resolves: RHEL-126707 + ([qemu, rhel-10] increase default TSEG size) +- Resolves: RHEL-139028 + (Intel IOMMU VM freezes: "call_irq_handler: 3.37 No irq handler for vector"[rhel-10.2]) +- Resolves: RHEL-111853 + ([Intel 10.0 FEAT] [SPR] TDX: Virt-QEMU: QEMU Support [rhel-10]) + * Mon Jan 05 2026 Miroslav Rezanina - 10.1.0-10 - kvm-block-Fix-BDS-use-after-free-during-shutdown.patch [RHEL-108142] - Resolves: RHEL-108142