From: "Cédric Le Goater" <clg@redhat.com>
To: qemu-devel@nongnu.org
Cc: Alex Williamson <alex.williamson@redhat.com>,
Eric Auger <eric.auger@redhat.com>,
Zhenzhong Duan <zhenzhong.duan@intel.com>,
"Michael S . Tsirkin" <mst@redhat.com>
Subject: [PULL 21/42] HostIOMMUDevice: Store the aliased bus and devfn
Date: Mon, 24 Jun 2024 23:24:35 +0200 [thread overview]
Message-ID: <20240624212456.350919-22-clg@redhat.com> (raw)
In-Reply-To: <20240624212456.350919-1-clg@redhat.com>
From: Eric Auger <eric.auger@redhat.com>
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>
---
include/sysemu/host_iommu_device.h | 2 ++
hw/pci/pci.c | 8 ++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/include/sysemu/host_iommu_device.h b/include/sysemu/host_iommu_device.h
index 40e0fa13efb5c023bc9b46fc99bf553cb93adf24..ee6c813c8b2299ed1d1d3b34d143c20a8ec27400 100644
--- a/include/sysemu/host_iommu_device.h
+++ b/include/sysemu/host_iommu_device.h
@@ -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;
};
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index c8a8aab30646c5e37816f49f6ef9d1bdf8be241f..50b86d57907411ee7646b436dda53503eca33c13 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -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);
--
2.45.2
next prev parent reply other threads:[~2024-06-24 21:29 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-24 21:24 [PULL 00/42] vfio queue Cédric Le Goater
2024-06-24 21:24 ` [PULL 01/42] backends: Introduce HostIOMMUDevice abstract Cédric Le Goater
2024-06-24 21:24 ` [PULL 02/42] backends/host_iommu_device: Introduce HostIOMMUDeviceCaps Cédric Le Goater
2024-06-24 21:24 ` [PULL 03/42] vfio/container: Introduce TYPE_HOST_IOMMU_DEVICE_LEGACY_VFIO device Cédric Le Goater
2024-06-24 21:24 ` [PULL 04/42] backends/iommufd: Introduce TYPE_HOST_IOMMU_DEVICE_IOMMUFD[_VFIO] devices Cédric Le Goater
2024-06-24 21:24 ` [PULL 05/42] range: Introduce range_get_last_bit() Cédric Le Goater
2024-06-24 21:24 ` [PULL 06/42] vfio/container: Implement HostIOMMUDeviceClass::realize() handler Cédric Le Goater
2024-06-24 21:24 ` [PULL 07/42] backends/iommufd: Introduce helper function iommufd_backend_get_device_info() Cédric Le Goater
2024-06-24 21:24 ` [PULL 08/42] vfio/iommufd: Implement HostIOMMUDeviceClass::realize() handler Cédric Le Goater
2024-06-24 21:24 ` [PULL 09/42] vfio/container: Implement HostIOMMUDeviceClass::get_cap() handler Cédric Le Goater
2024-06-24 21:24 ` [PULL 10/42] backends/iommufd: " Cédric Le Goater
2024-06-24 21:24 ` [PULL 11/42] vfio: Create host IOMMU device instance Cédric Le Goater
2024-06-24 21:24 ` [PULL 12/42] hw/pci: Introduce helper function pci_device_get_iommu_bus_devfn() Cédric Le Goater
2024-06-24 21:24 ` [PULL 13/42] hw/pci: Introduce pci_device_[set|unset]_iommu_device() Cédric Le Goater
2024-06-24 21:24 ` [PULL 14/42] vfio/pci: Pass HostIOMMUDevice to vIOMMU Cédric Le Goater
2024-06-24 21:24 ` [PULL 15/42] intel_iommu: Extract out vtd_cap_init() to initialize cap/ecap Cédric Le Goater
2024-06-24 21:24 ` [PULL 16/42] intel_iommu: Implement [set|unset]_iommu_device() callbacks Cédric Le Goater
2024-06-24 21:24 ` [PULL 17/42] intel_iommu: Check compatibility with host IOMMU capabilities Cédric Le Goater
2024-06-24 21:24 ` [PULL 18/42] HostIOMMUDevice: Store the VFIO/VDPA agent Cédric Le Goater
2024-06-24 21:24 ` [PULL 19/42] virtio-iommu: Implement set|unset]_iommu_device() callbacks Cédric Le Goater
2024-06-24 21:24 ` [PULL 20/42] HostIOMMUDevice: Introduce get_iova_ranges callback Cédric Le Goater
2024-06-24 21:24 ` Cédric Le Goater [this message]
2024-06-24 21:24 ` [PULL 22/42] virtio-iommu: Compute host reserved regions Cédric Le Goater
2024-06-24 21:24 ` [PULL 23/42] virtio-iommu: Remove the implementation of iommu_set_iova_range Cédric Le Goater
2024-06-24 21:24 ` [PULL 24/42] hw/vfio: Remove memory_region_iommu_set_iova_ranges() call Cédric Le Goater
2024-06-24 21:24 ` [PULL 25/42] memory: Remove IOMMU MR iommu_set_iova_range API Cédric Le Goater
2024-06-24 21:24 ` [PULL 26/42] vfio: Make vfio_devices_dma_logging_start() return bool Cédric Le Goater
2024-06-24 21:24 ` [PULL 27/42] vfio: Remove unused declarations from vfio-common.h Cédric Le Goater
2024-06-24 21:24 ` [PULL 28/42] vfio/common: Move dirty tracking ranges update to helper Cédric Le Goater
2024-06-24 21:24 ` [PULL 29/42] vfio/common: Extract vIOMMU code from vfio_sync_dirty_bitmap() Cédric Le Goater
2024-06-24 21:24 ` [PULL 30/42] vfio/container: Introduce vfio_address_space_insert() Cédric Le Goater
2024-06-24 21:24 ` [PULL 31/42] vfio/container: Simplify vfio_container_init() Cédric Le Goater
2024-06-24 21:24 ` [PULL 32/42] vfio/container: Modify vfio_get_iommu_type() to use a container fd Cédric Le Goater
2024-06-24 21:24 ` [PULL 33/42] vfio/container: Introduce vfio_get_iommu_class_name() Cédric Le Goater
2024-06-24 21:24 ` [PULL 34/42] vfio/container: Introduce vfio_create_container() Cédric Le Goater
2024-06-24 21:24 ` [PULL 35/42] vfio/container: Discover IOMMU type before creating the container Cédric Le Goater
2024-06-24 21:24 ` [PULL 36/42] vfio/container: Change VFIOContainerBase to use QOM Cédric Le Goater
2024-06-24 21:24 ` [PULL 37/42] vfio/container: Switch to QOM Cédric Le Goater
2024-06-24 21:24 ` [PULL 38/42] vfio/container: Introduce an instance_init() handler Cédric Le Goater
2024-06-24 21:24 ` [PULL 39/42] vfio/container: Remove VFIOContainerBase::ops Cédric Le Goater
2024-06-24 21:24 ` [PULL 40/42] vfio/container: Remove vfio_container_init() Cédric Le Goater
2024-06-24 21:24 ` [PULL 41/42] vfio/container: Introduce vfio_iommu_legacy_instance_init() Cédric Le Goater
2024-06-24 21:24 ` [PULL 42/42] vfio/container: Move vfio_container_destroy() to an instance_finalize() handler Cédric Le Goater
2024-06-25 17:25 ` [PULL 00/42] vfio queue Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240624212456.350919-22-clg@redhat.com \
--to=clg@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=eric.auger@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zhenzhong.duan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).