[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 4/4] intel_iommu: Fix irqchip / X2APIC configuration check
From: |
Peter Xu |
Subject: |
Re: [PATCH v2 4/4] intel_iommu: Fix irqchip / X2APIC configuration checks |
Date: |
Thu, 16 Dec 2021 16:47:06 +0800 |
Hi, David,
On Thu, Dec 09, 2021 at 10:08:40PM +0000, David Woodhouse wrote:
> We don't need to check kvm_enable_x2apic(). It's perfectly OK to support
> interrupt remapping even if we can't address CPUs above 254. Kind of
> pointless, but still functional.
We only checks kvm_enable_x2apic() if eim=on is set, right? I mean, we can
still enable IR without x2apic even with current code?
Could you elaborate what's the use scenario for this patch? Thanks in advance.
>
> The check on kvm_enable_x2apic() needs to happen *anyway* in order to
> allow CPUs above 254 even without an IOMMU, so allow that to happen
> elsewhere.
>
> However, we do require the *split* irqchip in order to rewrite I/OAPIC
> destinations. So fix that check while we're here.
>
> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
> Reviewed-by: Peter Xu <peterx@redhat.com>
> Acked-by: Jason Wang <jasowang@redhat.com>
I think the r-b and a-b should be for patch 2 not this one? :)
> ---
> hw/i386/intel_iommu.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
> index bd288d45bb..0d1c72f08e 100644
> --- a/hw/i386/intel_iommu.c
> +++ b/hw/i386/intel_iommu.c
> @@ -3760,15 +3760,10 @@ static bool vtd_decide_config(IntelIOMMUState *s,
> Error **errp)
> ON_OFF_AUTO_ON :
> ON_OFF_AUTO_OFF;
> }
> if (s->intr_eim == ON_OFF_AUTO_ON && !s->buggy_eim) {
> - if (!kvm_irqchip_in_kernel()) {
> + if (!kvm_irqchip_is_split()) {
I think this is okay, but note that we'll already fail if !split in
x86_iommu_realize():
bool irq_all_kernel = kvm_irqchip_in_kernel() && !kvm_irqchip_is_split();
/* Both Intel and AMD IOMMU IR only support "kernel-irqchip={off|split}" */
if (x86_iommu_ir_supported(x86_iommu) && irq_all_kernel) {
error_setg(errp, "Interrupt Remapping cannot work with "
"kernel-irqchip=on, please use 'split|off'.");
return;
}
> 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
>
--
Peter Xu