ppc/xive: Trigger the pending interrupt for a guest after migration
When a KVM guest is migrated to another LPAR while a stress-ng workload is running, lockups are seen when the guest resumes on the destination LPAR. This root cause is that if there was a pending interrupt for a cpu on the source machine but it was not presented yet when the migration started, the interrupt is not retriggered on the destination LPAR. This is evident when running 'info pic' on the destination LPAR: $ virsh qemu-monitor-command --hmp migrate 'info pic' | grep -e OS -e MSI CPU[0000]: OS 00 ff 00 ff ff 00 ff ff 80000400 CPU[0001]: OS 00 ff 00 ff ff 00 ff ff 80000401 CPU[0002]: OS 00 ff 00 ff ff 00 ff ff 80000402 CPU[0003]: OS 00 ff 00 ff ff 00 ff ff 80000403 CPU[0004]: OS 00 ff 00 ff ff 00 ff ff 80000404 CPU[0005]: OS 00 ff 00 ff ff 00 ff ff 80000405 CPU[0006]: OS 80 ff 02 ff ff 00 ff 06 80000406 CPU[0007]: OS 00 ff 00 ff ff 00 ff ff 80000407 00000000 MSI -- 00000010 0/6 3071/16384 @3710000 ^1 [ 80000010 80000010 80000010 80000010 80000010 ^00000000 ] 00000001 MSI -- 00000010 1/6 1852/16384 @3980000 ^1 [ 80000010 80000033 80000033 80000033 80000033 ^00000000 ] 00000002 MSI -- 00000010 2/6 4424/16384 @40c0000 ^1 [ 80000020 80000020 80000020 80000010 80000010 ^00000000 ] 00000003 MSI -- 00000010 3/6 1913/16384 @4220000 ^1 [ 80000010 80000032 80000010 80000010 80000010 ^00000000 ] 00000004 MSI -- 00000010 4/6 2946/16384 @4360000 ^1 [ 80000010 80000010 80000010 80000010 80000010 ^00000000 ] 00000005 MSI -- 00000010 5/6 2313/16384 @44a0000 ^1 [ 80000010 80000010 80000010 80000010 80000010 ^00000000 ] 00000006 MSI P- 00000010 6/6 5825/16384 @45f0000 ^1 [ 80000024 80000024 80000024 80000010 80000016 ^00000000 ] 00000007 MSI -- 00000010 7/6 2346/16384 @4760000 ^1 [ 80000032 80000032 80000010 80000032 80000032 ^00000000 ] Fix this by calling xive_tctx_pipr_set() in vmstate_xive_tctx_post_load(), which ends up calling qemu_irq_raise() to present the interrupt. This fix is relevant only for setups where KVM guests rely on emulated XIVE provided by QEMU, since the native XIVE case is already handled. Cc: qemu-stable@nongnu.org Reported-by: Anushree Mathur <anushree.mathur@linux.ibm.com> Tested-by: Anushree Mathur <anushree.mathur@linux.ibm.com> Reviewed-by: Nikhil Kumar Singh <nikhilks@linux.ibm.com> Reviewed-by: Michael Kowal <kowal@linux.ibm.com> Signed-off-by: Gautam Menghani <gautam@linux.ibm.com> Link: https://lore.kernel.org/qemu-devel/20260826060217.24978-1-gautam@linux.ibm.com Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>