* 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
|
Summary: QEMU is a machine emulator and virtualizer
|
||||||
Name: qemu-kvm
|
Name: qemu-kvm
|
||||||
Version: 7.1.0
|
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 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)
|
||||||
@ -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
|
Patch46: kvm-Revert-Re-enable-capstone-internal-build.patch
|
||||||
# For bz#2108531 - Windows guest reboot after migration with wsl2 installed inside
|
# For bz#2108531 - Windows guest reboot after migration with wsl2 installed inside
|
||||||
Patch47: kvm-target-i386-kvm-fix-kvmclock_current_nsec-Assertion-.patch
|
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}
|
%if %{have_clang}
|
||||||
BuildRequires: clang
|
BuildRequires: clang
|
||||||
@ -1281,6 +1283,11 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%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
|
* 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]
|
- kvm-target-i386-kvm-fix-kvmclock_current_nsec-Assertion-.patch [bz#2108531]
|
||||||
- Resolves: bz#2108531
|
- Resolves: bz#2108531
|
||||||
|
Loading…
Reference in New Issue
Block a user