Commit b7d6bf4f authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Michael Ellerman

powerpc/pseries/pci: Remove obsolete SW invalidate

That was used by some old IBM internal bringup tools and is
no longer relevant.
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent fb111334
...@@ -120,35 +120,6 @@ static void iommu_pseries_free_group(struct iommu_table_group *table_group, ...@@ -120,35 +120,6 @@ static void iommu_pseries_free_group(struct iommu_table_group *table_group,
kfree(table_group); kfree(table_group);
} }
static void tce_invalidate_pSeries_sw(struct iommu_table *tbl,
__be64 *startp, __be64 *endp)
{
u64 __iomem *invalidate = (u64 __iomem *)tbl->it_index;
unsigned long start, end, inc;
start = __pa(startp);
end = __pa(endp);
inc = L1_CACHE_BYTES; /* invalidate a cacheline of TCEs at a time */
/* If this is non-zero, change the format. We shift the
* address and or in the magic from the device tree. */
if (tbl->it_busno) {
start <<= 12;
end <<= 12;
inc <<= 12;
start |= tbl->it_busno;
end |= tbl->it_busno;
}
end |= inc - 1; /* round up end to be different than start */
mb(); /* Make sure TCEs in memory are written */
while (start <= end) {
out_be64(invalidate, start);
start += inc;
}
}
static int tce_build_pSeries(struct iommu_table *tbl, long index, static int tce_build_pSeries(struct iommu_table *tbl, long index,
long npages, unsigned long uaddr, long npages, unsigned long uaddr,
enum dma_data_direction direction, enum dma_data_direction direction,
...@@ -173,9 +144,6 @@ static int tce_build_pSeries(struct iommu_table *tbl, long index, ...@@ -173,9 +144,6 @@ static int tce_build_pSeries(struct iommu_table *tbl, long index,
uaddr += TCE_PAGE_SIZE; uaddr += TCE_PAGE_SIZE;
tcep++; tcep++;
} }
if (tbl->it_type & TCE_PCI_SWINV_CREATE)
tce_invalidate_pSeries_sw(tbl, tces, tcep - 1);
return 0; return 0;
} }
...@@ -188,9 +156,6 @@ static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages) ...@@ -188,9 +156,6 @@ static void tce_free_pSeries(struct iommu_table *tbl, long index, long npages)
while (npages--) while (npages--)
*(tcep++) = 0; *(tcep++) = 0;
if (tbl->it_type & TCE_PCI_SWINV_FREE)
tce_invalidate_pSeries_sw(tbl, tces, tcep - 1);
} }
static unsigned long tce_get_pseries(struct iommu_table *tbl, long index) static unsigned long tce_get_pseries(struct iommu_table *tbl, long index)
...@@ -537,7 +502,7 @@ static void iommu_table_setparms(struct pci_controller *phb, ...@@ -537,7 +502,7 @@ static void iommu_table_setparms(struct pci_controller *phb,
struct iommu_table *tbl) struct iommu_table *tbl)
{ {
struct device_node *node; struct device_node *node;
const unsigned long *basep, *sw_inval; const unsigned long *basep;
const u32 *sizep; const u32 *sizep;
node = phb->dn; node = phb->dn;
...@@ -575,22 +540,6 @@ static void iommu_table_setparms(struct pci_controller *phb, ...@@ -575,22 +540,6 @@ static void iommu_table_setparms(struct pci_controller *phb,
tbl->it_index = 0; tbl->it_index = 0;
tbl->it_blocksize = 16; tbl->it_blocksize = 16;
tbl->it_type = TCE_PCI; tbl->it_type = TCE_PCI;
sw_inval = of_get_property(node, "linux,tce-sw-invalidate-info", NULL);
if (sw_inval) {
/*
* This property contains information on how to
* invalidate the TCE entry. The first property is
* the base MMIO address used to invalidate entries.
* The second property tells us the format of the TCE
* invalidate (whether it needs to be shifted) and
* some magic routing info to add to our invalidate
* command.
*/
tbl->it_index = (unsigned long) ioremap(sw_inval[0], 8);
tbl->it_busno = sw_inval[1]; /* overload this with magic */
tbl->it_type = TCE_PCI_SWINV_CREATE | TCE_PCI_SWINV_FREE;
}
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment