[SPARC64]: Refine PCI strbuf ctx-based flush.
The initial peek read PIO of the match register is just a waste.
Just do the flush writes first, as that is more efficient.
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c
index 1807876..2803bc7 100644
--- a/arch/sparc64/kernel/pci_iommu.c
+++ b/arch/sparc64/kernel/pci_iommu.c
@@ -422,14 +422,12 @@
flushreg = strbuf->strbuf_ctxflush;
matchreg = PCI_STC_CTXMATCH_ADDR(strbuf, ctx);
- if (pci_iommu_read(matchreg) == 0)
- goto do_flush_sync;
-
pci_iommu_write(flushreg, ctx);
- if ((val = pci_iommu_read(matchreg)) == 0)
+ val = pci_iommu_read(matchreg);
+ val &= 0xffff;
+ if (!val)
goto do_flush_sync;
- val &= 0xffff;
while (val) {
if (val & 0x1)
pci_iommu_write(flushreg, ctx);