On 2022-04-11 12:23, Steven Sistare wrote: > On 3/29/2022 7:03 AM, Fam Zheng wrote: > > On 2021-08-06 14:43, Steve Sistare wrote: > >> Preserve vfio INTX state across cpr restart. Preserve VFIOINTx fields as > >> follows: > >> pin : Recover this from the vfio config in kernel space > >> interrupt : Preserve its eventfd descriptor across exec. > >> unmask : Ditto > >> route.irq : This could perhaps be recovered in vfio_pci_post_load by > >> calling pci_device_route_intx_to_irq(pin), whose implementation reads > >> config space for a bridge device such as ich9. However, there is no > >> guarantee that the bridge vmstate is read before vfio vmstate. Rather > >> than fiddling with MigrationPriority for vmstate handlers, explicitly > >> save route.irq in vfio vmstate. > >> pending : save in vfio vmstate. > >> mmap_timeout, mmap_timer : Re-initialize > >> bool kvm_accel : Re-initialize > >> > >> In vfio_realize, defer calling vfio_intx_enable until the vmstate > >> is available, in vfio_pci_post_load. Modify vfio_intx_enable and > >> vfio_intx_kvm_enable to skip vfio initialization, but still perform > >> kvm initialization. > >> > >> Signed-off-by: Steve Sistare <steven.sist...@oracle.com> > > > > Hi Steve, > > > > Not directly related to this patch, but since the context is close: it looks > > like this series only takes care of exec restart mode of vfio-pci, have you > > had > > any thoughts on kexec reboot mode with vfio-pci? > > > > The general idea is if DMAR context is not lost during kexec, we should be > > able > > to set up irqfds again and things will just work? > > > > Fam > > Hi Fam, > I have thought about that use case, but only in general terms. > IMO it best fits in the cpr framework as a new mode (rather than as > a new -restore command line argument).
Yes I think that is better, I will try that. > > In your code below, you would have fewer code changes if you set > 'reused = true' for the new mode, rather than testing both 'reused and > restored' > at multiple sites. Lastly, I cleaned up the vector handling somewhat from V6 > to V7, so you may want to try your code using V7 as a base. I am cleaning up the kernel patches and will post both parts once ready. Fam