mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
HostIOMMUDevice: Store the aliased bus and devfn
Store the aliased bus and devfn in the HostIOMMUDevice. This will be useful to handle info that are iommu group specific and not device specific (such as reserved iova ranges). Signed-off-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
3ad35d9158
commit
a95264191f
2 changed files with 8 additions and 2 deletions
|
@ -2745,11 +2745,15 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice *dev)
|
|||
bool pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod,
|
||||
Error **errp)
|
||||
{
|
||||
PCIBus *iommu_bus;
|
||||
PCIBus *iommu_bus, *aliased_bus;
|
||||
int aliased_devfn;
|
||||
|
||||
/* set_iommu_device requires device's direct BDF instead of aliased BDF */
|
||||
pci_device_get_iommu_bus_devfn(dev, &iommu_bus, NULL, NULL);
|
||||
pci_device_get_iommu_bus_devfn(dev, &iommu_bus,
|
||||
&aliased_bus, &aliased_devfn);
|
||||
if (iommu_bus && iommu_bus->iommu_ops->set_iommu_device) {
|
||||
hiod->aliased_bus = aliased_bus;
|
||||
hiod->aliased_devfn = aliased_devfn;
|
||||
return iommu_bus->iommu_ops->set_iommu_device(pci_get_bus(dev),
|
||||
iommu_bus->iommu_opaque,
|
||||
dev->devfn, hiod, errp);
|
||||
|
|
|
@ -35,6 +35,8 @@ struct HostIOMMUDevice {
|
|||
|
||||
char *name;
|
||||
void *agent; /* pointer to agent device, ie. VFIO or VDPA device */
|
||||
PCIBus *aliased_bus;
|
||||
int aliased_devfn;
|
||||
HostIOMMUDeviceCaps caps;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue