Mike Kowal, can you please review this?

Thanks,

Glenn

On Mon, 2026-08-24 at 12:33 +0530, Gautam Menghani wrote:
> 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.
> 
> Signed-off-by: Gautam Menghani <[email protected]>
> ---
>  hw/intc/xive.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/hw/intc/xive.c b/hw/intc/xive.c
> index f473e6ac77..712498d4af 100644
> --- a/hw/intc/xive.c
> +++ b/hw/intc/xive.c
> @@ -1080,6 +1080,9 @@ static int vmstate_xive_tctx_post_load(void *opaque, 
> int version_id)
>              error_report_err(local_err);
>              return ret;
>          }
> +    } else {
> +        uint8_t pipr = tctx->regs[TM_QW1_OS + TM_PIPR];
> +        xive_tctx_pipr_set(tctx, TM_QW1_OS, pipr, 0);
>      }
>  
>      return 0;


Reply via email to