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 <[email protected]>
> Signed-off-by: Radim Krčmář <[email protected]>

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

Paolo

Reply via email to