Message ID | 1621914605-14724-3-git-send-email-wangxingang5@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | IOMMU: Add support for IOMMU Bypass Feature | expand |
Hi Xingang, On 5/25/21 5:49 AM, Wang Xingang wrote: > From: Xingang Wang <wangxingang5@huawei.com> > > This add a bypass_iommu property for pci_expander_bridge. > The property can be used as: > qemu -device pxb-pcie,bus_nr=0x10,addr=0x1,bypass_iommu=true > > Signed-off-by: Xingang Wang <wangxingang5@huawei.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Eric > --- > hw/pci-bridge/pci_expander_bridge.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c > index aedded1064..7112dc3062 100644 > --- a/hw/pci-bridge/pci_expander_bridge.c > +++ b/hw/pci-bridge/pci_expander_bridge.c > @@ -57,6 +57,7 @@ struct PXBDev { > > uint8_t bus_nr; > uint16_t numa_node; > + bool bypass_iommu; > }; > > static PXBDev *convert_to_pxb(PCIDevice *dev) > @@ -255,6 +256,7 @@ static void pxb_dev_realize_common(PCIDevice *dev, bool pcie, Error **errp) > bus->map_irq = pxb_map_irq_fn; > > PCI_HOST_BRIDGE(ds)->bus = bus; > + PCI_HOST_BRIDGE(ds)->bypass_iommu = pxb->bypass_iommu; > > pxb_register_bus(dev, bus, &local_err); > if (local_err) { > @@ -301,6 +303,7 @@ static Property pxb_dev_properties[] = { > /* Note: 0 is not a legal PXB bus number. */ > DEFINE_PROP_UINT8("bus_nr", PXBDev, bus_nr, 0), > DEFINE_PROP_UINT16("numa_node", PXBDev, numa_node, NUMA_NODE_UNASSIGNED), > + DEFINE_PROP_BOOL("bypass_iommu", PXBDev, bypass_iommu, false), > DEFINE_PROP_END_OF_LIST(), > }; >
diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c index aedded1064..7112dc3062 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -57,6 +57,7 @@ struct PXBDev { uint8_t bus_nr; uint16_t numa_node; + bool bypass_iommu; }; static PXBDev *convert_to_pxb(PCIDevice *dev) @@ -255,6 +256,7 @@ static void pxb_dev_realize_common(PCIDevice *dev, bool pcie, Error **errp) bus->map_irq = pxb_map_irq_fn; PCI_HOST_BRIDGE(ds)->bus = bus; + PCI_HOST_BRIDGE(ds)->bypass_iommu = pxb->bypass_iommu; pxb_register_bus(dev, bus, &local_err); if (local_err) { @@ -301,6 +303,7 @@ static Property pxb_dev_properties[] = { /* Note: 0 is not a legal PXB bus number. */ DEFINE_PROP_UINT8("bus_nr", PXBDev, bus_nr, 0), DEFINE_PROP_UINT16("numa_node", PXBDev, numa_node, NUMA_NODE_UNASSIGNED), + DEFINE_PROP_BOOL("bypass_iommu", PXBDev, bypass_iommu, false), DEFINE_PROP_END_OF_LIST(), };