Message ID | 1555038815-31916-2-git-send-email-srinath.mannam@broadcom.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | PCIe Host request to reserve IOVA | expand |
On Fri, Apr 12, 2019 at 08:43:33AM +0530, Srinath Mannam wrote: > Add a dma_ranges field in PCI host bridge structure to hold resource > entries list of memory regions in sorted order given through dma-ranges > DT property. > > While initializing IOMMU domain of PCI EPs connected to that host bridge > This list of resources will be processed and IOVAs for the address holes > will be reserved. s/bridge This list/bridge, this list/ > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> > Based-on-patch-by: Oza Pawandeep <oza.oza@broadcom.com> > Reviewed-by: Oza Pawandeep <poza@codeaurora.org> Acked-by: Bjorn Helgaas <bhelgaas@google.com> > --- > drivers/pci/probe.c | 3 +++ > include/linux/pci.h | 1 + > 2 files changed, 4 insertions(+) > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 257b9f6..ce5505f 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -544,6 +544,7 @@ struct pci_host_bridge *pci_alloc_host_bridge(size_t priv) > return NULL; > > INIT_LIST_HEAD(&bridge->windows); > + INIT_LIST_HEAD(&bridge->dma_ranges); > bridge->dev.release = pci_release_host_bridge_dev; > > /* > @@ -572,6 +573,7 @@ struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, > return NULL; > > INIT_LIST_HEAD(&bridge->windows); > + INIT_LIST_HEAD(&bridge->dma_ranges); > bridge->dev.release = devm_pci_release_host_bridge_dev; > > return bridge; > @@ -581,6 +583,7 @@ EXPORT_SYMBOL(devm_pci_alloc_host_bridge); > void pci_free_host_bridge(struct pci_host_bridge *bridge) > { > pci_free_resource_list(&bridge->windows); > + pci_free_resource_list(&bridge->dma_ranges); > > kfree(bridge); > } > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 65f1d8c..016a044 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -487,6 +487,7 @@ struct pci_host_bridge { > void *sysdata; > int busnr; > struct list_head windows; /* resource_entry */ > + struct list_head dma_ranges; /* dma ranges resource list */ > u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */ > int (*map_irq)(const struct pci_dev *, u8, u8); > void (*release_fn)(struct pci_host_bridge *); > -- > 2.7.4 >
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 257b9f6..ce5505f 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -544,6 +544,7 @@ struct pci_host_bridge *pci_alloc_host_bridge(size_t priv) return NULL; INIT_LIST_HEAD(&bridge->windows); + INIT_LIST_HEAD(&bridge->dma_ranges); bridge->dev.release = pci_release_host_bridge_dev; /* @@ -572,6 +573,7 @@ struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, return NULL; INIT_LIST_HEAD(&bridge->windows); + INIT_LIST_HEAD(&bridge->dma_ranges); bridge->dev.release = devm_pci_release_host_bridge_dev; return bridge; @@ -581,6 +583,7 @@ EXPORT_SYMBOL(devm_pci_alloc_host_bridge); void pci_free_host_bridge(struct pci_host_bridge *bridge) { pci_free_resource_list(&bridge->windows); + pci_free_resource_list(&bridge->dma_ranges); kfree(bridge); } diff --git a/include/linux/pci.h b/include/linux/pci.h index 65f1d8c..016a044 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -487,6 +487,7 @@ struct pci_host_bridge { void *sysdata; int busnr; struct list_head windows; /* resource_entry */ + struct list_head dma_ranges; /* dma ranges resource list */ u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */ int (*map_irq)(const struct pci_dev *, u8, u8); void (*release_fn)(struct pci_host_bridge *);