mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-26 11:53:53 -06:00
vfio/iommufd: change process
Finish CPR by change the owning process of the iommufd device in post load. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Link: https://lore.kernel.org/qemu-devel/1751493538-202042-19-git-send-email-steven.sistare@oracle.com [ clg: Fixed missing "qemu/error-report.h" include ] Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
010643eeb1
commit
5c066c4be2
1 changed files with 31 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
#include "hw/vfio/vfio-cpr.h"
|
||||
#include "hw/vfio/vfio-device.h"
|
||||
|
@ -112,10 +113,40 @@ static bool vfio_cpr_supported(IOMMUFDBackend *be, Error **errp)
|
|||
return true;
|
||||
}
|
||||
|
||||
static int iommufd_cpr_pre_save(void *opaque)
|
||||
{
|
||||
IOMMUFDBackend *be = opaque;
|
||||
|
||||
/*
|
||||
* The process has not changed yet, but proactively try the ioctl,
|
||||
* and it will fail if any DMA mappings are not supported.
|
||||
*/
|
||||
if (!iommufd_change_process_capable(be)) {
|
||||
error_report("some memory regions do not support "
|
||||
"IOMMU_IOAS_CHANGE_PROCESS");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iommufd_cpr_post_load(void *opaque, int version_id)
|
||||
{
|
||||
IOMMUFDBackend *be = opaque;
|
||||
Error *local_err = NULL;
|
||||
|
||||
if (!iommufd_change_process(be, &local_err)) {
|
||||
error_report_err(local_err);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const VMStateDescription iommufd_cpr_vmstate = {
|
||||
.name = "iommufd",
|
||||
.version_id = 0,
|
||||
.minimum_version_id = 0,
|
||||
.pre_save = iommufd_cpr_pre_save,
|
||||
.post_load = iommufd_cpr_post_load,
|
||||
.needed = cpr_incoming_needed,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_END_OF_LIST()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue