Re: [PATCH 3/4] KVM: x86: change PIT discard tick policy

From: Paolo Bonzini
Date: Wed Feb 03 2016 - 11:48:49 EST




On 03/02/2016 17:23, Radim KrÄmÃÅ wrote:
> Discard policy uses ack_notifiers to prevent injection of PIT interrupts
> before EOI from the last one.
>
> This patch changes the policy to always try to deliver the interrupt,
> which makes a difference when its vector is in ISR.
> Old implementation would drop the interrupt, but proposed one injects to
> IRR, like real hardware would.
>
> The old policy breaks legacy NMI watchdogs, where PIT is used through
> virtual wire (LVT0): PIT never sends an interrupt before receiving EOI,
> thus a guest deadlock with disabled interrupts will stop NMIs.
>
> Note that NMI doesn't do EOI, so PIT also had to send a normal interrupt
> through IOAPIC. (KVM's PIT is deeply rotten and luckily not used much
> in modern systems.)
>
> Even though there is a chance of regressions, I think we can fix the
> LVT0 NMI bug without introducing a new tick policy.
>
> Reported-by: Yuki Shibuya <shibuya.yk@xxxxxxxxxxxxxx>
> Signed-off-by: Radim KrÄmÃÅ <rkrcmar@xxxxxxxxxx>

Haven't looked at the patch yet, but this is definitely how DISCARD is
supposed to work.

Paolo