[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 6/7] intel_iommu: reject broken EIM
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH v5 6/7] intel_iommu: reject broken EIM |
Date: |
Mon, 10 Oct 2016 14:49:28 -0300 |
User-agent: |
Mutt/1.7.0 (2016-08-17) |
On Mon, Oct 10, 2016 at 05:28:47PM +0200, Radim Krčmář wrote:
> Cluster x2APIC cannot work without KVM's x2apic API when the maximal
> APIC ID is greater than 8 and only KVM's LAPIC can support x2APIC, so we
> forbid other APICs and also the old KVM case with less than 9, to
> simplify the code.
>
> There is no point in enabling EIM in forbidden APICs, so we keep it
> enabled only for the KVM APIC; unconditionally, because making the
> option depend on KVM version would be a maintanance burden.
>
> Old QEMUs would enable eim whenever intremap was on, which would trick
> guests into thinking that they can enable cluster x2APIC even if any
> interrupt destination would get clamped to 8 bits.
> Depending on your configuration, QEMU could notice that the destination
> LAPIC is not present and report it with a very non-obvious:
>
> KVM: injection failed, MSI lost (Operation not permitted)
>
> Or the guest could say something about unexpected interrupts, because
> clamping leads to aliasing so interrupts were being delivered to
> incorrect VCPUs.
>
> KVM_X2APIC_API is the feature that allows us to enable EIM for KVM.
>
> QEMU 2.7 allowed EIM whenever interrupt remapping was enabled. In order
> to keep backward compatibility, we again allow guests to misbehave in
> non-obvious ways, and make it the default for old machine types.
>
> A user can enable the buggy mode it with "x-buggy-eim=on".
>
> Signed-off-by: Radim Krčmář <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
--
Eduardo
- [Qemu-devel] [PATCH v5 0/7] intel_iommu: fix EIM, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 1/7] apic: add global apic_get_class(), Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 2/7] apic: add send_msi() to APICCommonClass, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 3/7] intel_iommu: pass whole remapped addresses to apic, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 4/7] intel_iommu: redo configuraton check in realize, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 5/7] intel_iommu: add OnOffAuto intr_eim as "eim" property, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 6/7] intel_iommu: reject broken EIM, Radim Krčmář, 2016/10/10
- [Qemu-devel] [PATCH v5 7/7] target-i386/kvm: cache the return value of kvm_enable_x2apic(), Radim Krčmář, 2016/10/10
- Re: [Qemu-devel] [PATCH v5 0/7] intel_iommu: fix EIM, Eduardo Habkost, 2016/10/14