powerpc/pseries: Pass phb only to iommu_table_setparms_lpar
iommu_table_setparms_lpar needs either the phb or the subbusnumber (not both), pass the phb to make it similar to iommu_table_setparms. Note: In cases where a caller was passing bus->number previously to iommu_table_setparms_lpar() rather than phb->bus->number, this can lead to a different value in tbl->it_busno. The only example of this was the removed pci_dma_dev_setup_pSeriesLP(), removed in "ppc/iommu: remove unneeded pci_dma_dev_setup_pSeriesLP". [BenH: You updated only one of the two callers. Fixed that for you] Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
4af2da25ed
commit
b8c49def6d
|
@ -323,14 +323,13 @@ static void iommu_table_setparms(struct pci_controller *phb,
|
||||||
static void iommu_table_setparms_lpar(struct pci_controller *phb,
|
static void iommu_table_setparms_lpar(struct pci_controller *phb,
|
||||||
struct device_node *dn,
|
struct device_node *dn,
|
||||||
struct iommu_table *tbl,
|
struct iommu_table *tbl,
|
||||||
const void *dma_window,
|
const void *dma_window)
|
||||||
int bussubno)
|
|
||||||
{
|
{
|
||||||
unsigned long offset, size;
|
unsigned long offset, size;
|
||||||
|
|
||||||
tbl->it_busno = bussubno;
|
|
||||||
of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size);
|
of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size);
|
||||||
|
|
||||||
|
tbl->it_busno = phb->bus->number;
|
||||||
tbl->it_base = 0;
|
tbl->it_base = 0;
|
||||||
tbl->it_blocksize = 16;
|
tbl->it_blocksize = 16;
|
||||||
tbl->it_type = TCE_PCI;
|
tbl->it_type = TCE_PCI;
|
||||||
|
@ -450,8 +449,7 @@ static void pci_dma_bus_setup_pSeriesLP(struct pci_bus *bus)
|
||||||
if (!ppci->iommu_table) {
|
if (!ppci->iommu_table) {
|
||||||
tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
|
tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
|
||||||
ppci->phb->node);
|
ppci->phb->node);
|
||||||
iommu_table_setparms_lpar(ppci->phb, pdn, tbl, dma_window,
|
iommu_table_setparms_lpar(ppci->phb, pdn, tbl, dma_window);
|
||||||
bus->number);
|
|
||||||
ppci->iommu_table = iommu_init_table(tbl, ppci->phb->node);
|
ppci->iommu_table = iommu_init_table(tbl, ppci->phb->node);
|
||||||
pr_debug(" created table: %p\n", ppci->iommu_table);
|
pr_debug(" created table: %p\n", ppci->iommu_table);
|
||||||
}
|
}
|
||||||
|
@ -534,8 +532,7 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
|
||||||
if (!pci->iommu_table) {
|
if (!pci->iommu_table) {
|
||||||
tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
|
tbl = kzalloc_node(sizeof(struct iommu_table), GFP_KERNEL,
|
||||||
pci->phb->node);
|
pci->phb->node);
|
||||||
iommu_table_setparms_lpar(pci->phb, pdn, tbl, dma_window,
|
iommu_table_setparms_lpar(pci->phb, pdn, tbl, dma_window);
|
||||||
pci->phb->bus->number);
|
|
||||||
pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
|
pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
|
||||||
pr_debug(" created table: %p\n", pci->iommu_table);
|
pr_debug(" created table: %p\n", pci->iommu_table);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue