* Tue Nov 01 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-4
- kvm-Revert-intel_iommu-Fix-irqchip-X2APIC-configuration-.patch [bz#2126095] - Resolves: bz#2126095 ([rhel9.2][intel_iommu]Booting guest with "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=on" causes kernel call trace)
This commit is contained in:
parent
afd495b342
commit
3e616168bc
@ -0,0 +1,84 @@
|
||||
From 7f5289f426b25cf1113a450a3aa311170ac30397 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Xu <peterx@redhat.com>
|
||||
Date: Mon, 26 Sep 2022 11:32:06 -0400
|
||||
Subject: [PATCH] Revert "intel_iommu: Fix irqchip / X2APIC configuration
|
||||
checks"
|
||||
|
||||
RH-Author: Peter Xu <peterx@redhat.com>
|
||||
RH-MergeRequest: 121: Revert "intel_iommu: Fix irqchip / X2APIC configuration checks"
|
||||
RH-Bugzilla: 2126095
|
||||
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
|
||||
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||
RH-Acked-by: Jason Wang <jasowang@redhat.com>
|
||||
RH-Commit: [1/1] 6218c5f81c205ab160f4ccdb203ae39d4af3339e (peterx/qemu-kvm)
|
||||
|
||||
It's true that when vcpus<=255 we don't require the length of 32bit APIC
|
||||
IDs. However here since we already have EIM=ON it means the hypervisor
|
||||
will declare the VM as x2apic supported (e.g. VT-d ECAP register will have
|
||||
EIM bit 4 set), so the guest should assume the APIC IDs are 32bits width
|
||||
even if vcpus<=255. In short, commit 77250171bdc breaks any simple cmdline
|
||||
that wants to boot a VM with >=9 but <=255 vcpus with:
|
||||
|
||||
-device intel-iommu,intremap=on
|
||||
|
||||
For anyone who does not want to enable x2apic, we can use eim=off in the
|
||||
intel-iommu parameters to skip enabling KVM x2apic.
|
||||
|
||||
This partly reverts commit 77250171bdc02aee106083fd2a068147befa1a38, while
|
||||
keeping the valid bit on checking split irqchip, but revert the other change.
|
||||
|
||||
One thing to mention is that this patch may break migration compatibility
|
||||
of such VM, however that's probably the best thing we can do, because the
|
||||
old behavior was simply wrong and not working for >8 vcpus. For <=8 vcpus,
|
||||
there could be a light guest ABI change (by enabling KVM x2apic after this
|
||||
patch), but logically it shouldn't affect the migration from working.
|
||||
|
||||
Also, this is not the 1st commit to change x2apic behavior. Igor provided
|
||||
a full history of how this evolved for the past few years:
|
||||
|
||||
https://lore.kernel.org/qemu-devel/20220922154617.57d1a1fb@redhat.com/
|
||||
|
||||
Relevant commits for reference:
|
||||
|
||||
fb506e701e ("intel_iommu: reject broken EIM", 2016-10-17)
|
||||
c1bb5418e3 ("target/i386: Support up to 32768 CPUs without IRQ remapping", 2020-12-10)
|
||||
77250171bd ("intel_iommu: Fix irqchip / X2APIC configuration checks", 2022-05-16)
|
||||
dc89f32d92 ("target/i386: Fix sanity check on max APIC ID / X2APIC enablement", 2022-05-16)
|
||||
|
||||
We may want to have this for stable too (mostly for 7.1.0 only). Adding a
|
||||
fixes tag.
|
||||
|
||||
Cc: David Woodhouse <dwmw2@infradead.org>
|
||||
Cc: Claudio Fontana <cfontana@suse.de>
|
||||
Cc: Igor Mammedov <imammedo@redhat.com>
|
||||
Fixes: 77250171bd ("intel_iommu: Fix irqchip / X2APIC configuration checks")
|
||||
Signed-off-by: Peter Xu <peterx@redhat.com>
|
||||
Message-Id: <20220926153206.10881-1-peterx@redhat.com>
|
||||
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
|
||||
(cherry picked from commit 20ca47429e96df84e7b2e741f740bfce8a813fb2)
|
||||
Signed-off-by: Peter Xu <peterx@redhat.com>
|
||||
---
|
||||
hw/i386/intel_iommu.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
|
||||
index 05d53a1aa9..6524c2ee32 100644
|
||||
--- a/hw/i386/intel_iommu.c
|
||||
+++ b/hw/i386/intel_iommu.c
|
||||
@@ -3818,6 +3818,11 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
|
||||
error_setg(errp, "eim=on requires accel=kvm,kernel-irqchip=split");
|
||||
return false;
|
||||
}
|
||||
+ if (!kvm_enable_x2apic()) {
|
||||
+ error_setg(errp, "eim=on requires support on the KVM side"
|
||||
+ "(X2APIC_API, first shipped in v4.7)");
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Currently only address widths supported are 39 and 48 bits */
|
||||
--
|
||||
2.31.1
|
||||
|
@ -151,7 +151,7 @@ Obsoletes: %{name}-block-ssh <= %{epoch}:%{version} \
|
||||
Summary: QEMU is a machine emulator and virtualizer
|
||||
Name: qemu-kvm
|
||||
Version: 7.1.0
|
||||
Release: 3%{?rcrel}%{?dist}%{?cc_suffix}
|
||||
Release: 4%{?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)
|
||||
@ -249,6 +249,8 @@ Patch45: kvm-i386-do-kvm_put_msr_feature_control-first-thing-when.patch
|
||||
Patch46: kvm-Revert-Re-enable-capstone-internal-build.patch
|
||||
# For bz#2108531 - Windows guest reboot after migration with wsl2 installed inside
|
||||
Patch47: kvm-target-i386-kvm-fix-kvmclock_current_nsec-Assertion-.patch
|
||||
# For bz#2126095 - [rhel9.2][intel_iommu]Booting guest with "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=on" causes kernel call trace
|
||||
Patch48: kvm-Revert-intel_iommu-Fix-irqchip-X2APIC-configuration-.patch
|
||||
|
||||
%if %{have_clang}
|
||||
BuildRequires: clang
|
||||
@ -1281,6 +1283,11 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Nov 01 2022 Miroslav Rezanina <mrezanin@redhat.com> - 7.1.0-4
|
||||
- kvm-Revert-intel_iommu-Fix-irqchip-X2APIC-configuration-.patch [bz#2126095]
|
||||
- Resolves: bz#2126095
|
||||
([rhel9.2][intel_iommu]Booting guest with "-device intel-iommu,intremap=on,device-iotlb=on,caching-mode=on" causes kernel call trace)
|
||||
|
||||
* Thu Oct 13 2022 Jon Maloy <jmaloy@redhat.com> - 7.1.0-3
|
||||
- kvm-target-i386-kvm-fix-kvmclock_current_nsec-Assertion-.patch [bz#2108531]
|
||||
- Resolves: bz#2108531
|
||||
|
Loading…
Reference in New Issue
Block a user