On 08/10/2019 23:45, Sasha Levin wrote: > On Tue, Oct 08, 2019 at 09:20:08AM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote: >> >> The patch below does not apply to the 4.19-stable tree. >> If someone wants it applied there, or to any other stable or longterm >> tree, then please email the backport, including the original git commit >> id to <stable@xxxxxxxxxxxxxxx>. >> >> thanks, >> >> greg k-h >> >> ------------------ original commit in Linus's tree ------------------ >> >> From 237aed48c642328ff0ab19b63423634340224a06 Mon Sep 17 00:00:00 2001 >> From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@xxxxxxxx> >> Date: Tue, 6 Aug 2019 19:25:38 +0200 >> Subject: [PATCH] KVM: PPC: Book3S HV: XIVE: Free escalation interrupts before >> disabling the VP >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=UTF-8 >> Content-Transfer-Encoding: 8bit >> >> When a vCPU is brought done, the XIVE VP (Virtual Processor) is first >> disabled and then the event notification queues are freed. When freeing >> the queues, we check for possible escalation interrupts and free them >> also. >> >> But when a XIVE VP is disabled, the underlying XIVE ENDs also are >> disabled in OPAL. When an END (Event Notification Descriptor) is >> disabled, its ESB pages (ESn and ESe) are disabled and loads return all >> 1s. Which means that any access on the ESB page of the escalation >> interrupt will return invalid values. >> >> When an interrupt is freed, the shutdown handler computes a 'saved_p' >> field from the value returned by a load in xive_do_source_set_mask(). >> This value is incorrect for escalation interrupts for the reason >> described above. >> >> This has no impact on Linux/KVM today because we don't make use of it >> but we will introduce in future changes a xive_get_irqchip_state() >> handler. This handler will use the 'saved_p' field to return the state >> of an interrupt and 'saved_p' being incorrect, softlockup will occur. >> >> Fix the vCPU cleanup sequence by first freeing the escalation interrupts >> if any, then disable the XIVE VP and last free the queues. >> >> Fixes: 90c73795afa2 ("KVM: PPC: Book3S HV: Add a new KVM device for the XIVE native exploitation mode") >> Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller") >> Cc: stable@xxxxxxxxxxxxxxx # v4.12+ >> Signed-off-by: Cédric Le Goater <clg@xxxxxxxx> >> Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx> >> Link: https://lore.kernel.org/r/20190806172538.5087-1-clg@xxxxxxxx > > I've dropped the xive native part on 4.19 and 4.14 because 90c73795afa24 > ("KVM: PPC: Book3S HV: Add a new KVM device for the XIVE native > exploitation mode") isn't there. yes. It was introduced in 5.2. The fixes on the XICS-on-XIVE KVM device and the XIVE native KVM device are often the same patch because they have a lot in common. We should try to separate the patches in the future to ease backport on the stable trees. Thanks for doing so, C.