vfio/iommufd: Set cpr.ioas_id on source side for CPR transfer
On source side, if there are more than one VFIO devices and they
attach to same container, only the first device sets cpr.ioas_id,
the others are bypassed. We should set it for each device, or
else only first device works.
Fixes: 4296ee0745 ("vfio/iommufd: reconstruct device")
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Steve Sistare <steven.sistare@oracle.com>
Link: https://lore.kernel.org/qemu-devel/20250928085432.40107-4-zhenzhong.duan@intel.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
9423094896
commit
d59db04aed
1 changed files with 2 additions and 1 deletions
|
|
@ -602,7 +602,6 @@ skip_ioas_alloc:
|
|||
container->be = vbasedev->iommufd;
|
||||
container->ioas_id = ioas_id;
|
||||
QLIST_INIT(&container->hwpt_list);
|
||||
vbasedev->cpr.ioas_id = ioas_id;
|
||||
|
||||
bcontainer = VFIO_IOMMU(container);
|
||||
vfio_address_space_insert(space, bcontainer);
|
||||
|
|
@ -636,6 +635,8 @@ skip_ioas_alloc:
|
|||
bcontainer->initialized = true;
|
||||
|
||||
found_container:
|
||||
vbasedev->cpr.ioas_id = container->ioas_id;
|
||||
|
||||
ret = ioctl(devfd, VFIO_DEVICE_GET_INFO, &dev_info);
|
||||
if (ret) {
|
||||
error_setg_errno(errp, errno, "error getting device info");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue