[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALMp9eQBd1yFA+w8X4EK1M+Dmh_MaEG=7POd-pexgA-wHWJBSQ@mail.gmail.com>
Date: Mon, 10 Jun 2024 20:47:21 -0700
From: Jim Mattson <jmattson@...gle.com>
To: Sean Christopherson <seanjc@...gle.com>
Cc: Paolo Bonzini <pbonzini@...hat.com>, kvm@...r.kernel.org, linux-kernel@...r.kernel.org,
Adamos Ttofari <attofari@...zon.de>, Raghavendra Rao Ananta <rananta@...gle.com>
Subject: Re: [PATCH] KVM: x86: Always sync PIR to IRR prior to scanning I/O
APIC routes
On Mon, Jun 10, 2024 at 6:48 PM Sean Christopherson <seanjc@...gle.com> wrote:
>
> Sync pending posted interrupts to the IRR prior to re-scanning I/O APIC
> routes, irrespective of whether the I/O APIC is emulated by userspace or
> by KVM. If a level-triggered interrupt routed through the I/O APIC is
> pending or in-service for a vCPU, KVM needs to intercept EOIs on said
> vCPU even if the vCPU isn't the destination for the new routing, e.g. if
> servicing an interrupt using the old routing races with I/O APIC
> reconfiguration.
>
> Commit fceb3a36c29a ("KVM: x86: ioapic: Fix level-triggered EOI and
> userspace I/OAPIC reconfigure race") fixed the common cases, but
> kvm_apic_pending_eoi() only checks if an interrupt is in the local
> APIC's IRR or ISR, i.e. misses the uncommon case where an interrupt is
> pending in the PIR.
>
> Failure to intercept EOI can manifest as guest hangs with Windows 11 if
> the guest uses the RTC as its timekeeping source, e.g. if the VMM doesn't
> expose a more modern form of time to the guest.
>
> Cc: stable@...r.kernel.org
> Cc: Adamos Ttofari <attofari@...zon.de>
> Cc: Raghavendra Rao Ananta <rananta@...gle.com>
> Cc: Jim Mattson <jmattson@...gle.com>
> Signed-off-by: Sean Christopherson <seanjc@...gle.com>
Reviewed-by: Jim Mattson <jmattson@...gle.com>
Powered by blists - more mailing lists