diff options
author | Zhenzhong Duan <zhenzhong.duan@intel.com> | 2023-07-03 15:15:08 +0800 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2023-07-10 09:52:52 +0200 |
commit | 2b43b2995b02e73b70d10b5be2f2b29b68c7e2fa (patch) | |
tree | ef1b4a9545a0257b9a201b835581b7b5ed00c18b /hw/intc | |
parent | 3c26c80a0a269ce7870d1475e756607e939226cd (diff) | |
download | qemu-2b43b2995b02e73b70d10b5be2f2b29b68c7e2fa.zip qemu-2b43b2995b02e73b70d10b5be2f2b29b68c7e2fa.tar.gz qemu-2b43b2995b02e73b70d10b5be2f2b29b68c7e2fa.tar.bz2 |
vfio/migration: Free resources when vfio_migration_realize fails
When vfio_realize() succeeds, hot unplug will call vfio_exitfn()
to free resources allocated in vfio_realize(); when vfio_realize()
fails, vfio_exitfn() is never called and we need to free resources
in vfio_realize().
In the case that vfio_migration_realize() fails,
e.g: with -only-migratable & enable-migration=off, we see below:
(qemu) device_add vfio-pci,host=81:11.1,id=vfio1,bus=root1,enable-migration=off
0000:81:11.1: Migration disabled
Error: disallowing migration blocker (--only-migratable) for: 0000:81:11.1: Migration is disabled for VFIO device
If we hotplug again we should see same log as above, but we see:
(qemu) device_add vfio-pci,host=81:11.1,id=vfio1,bus=root1,enable-migration=off
Error: vfio 0000:81:11.1: device is already attached
That's because some references to VFIO device isn't released.
For resources allocated in vfio_migration_realize(), free them by
jumping to out_deinit path with calling a new function
vfio_migration_deinit(). For resources allocated in vfio_realize(),
free them by jumping to de-register path in vfio_realize().
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Fixes: a22651053b59 ("vfio: Make vfio-pci device migration capable")
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'hw/intc')
0 files changed, 0 insertions, 0 deletions