flushreg = strbuf->strbuf_ctxflush;
matchreg = PCI_STC_CTXMATCH_ADDR(strbuf, ctx);
- limit = 10000;
- do {
- pci_iommu_write(flushreg, ctx);
- udelay(10);
+ limit = 100000;
+ pci_iommu_write(flushreg, ctx);
+ for(;;) {
+ if (((long)pci_iommu_read(matchreg)) >= 0L)
+ break;
limit--;
if (!limit)
break;
- } while(((long)pci_iommu_read(matchreg)) < 0L);
+ udelay(1);
+ }
if (!limit)
printk(KERN_WARNING "pci_strbuf_flush: ctx flush "
"timeout vaddr[%08x] ctx[%lx]\n",
pci_iommu_write(strbuf->strbuf_fsync, strbuf->strbuf_flushflag_pa);
(void) pci_iommu_read(iommu->write_complete_reg);
- limit = 10000;
+ limit = 100000;
while (!PCI_STC_FLUSHFLAG_SET(strbuf)) {
limit--;
if (!limit)
break;
- udelay(10);
+ udelay(1);
membar("#LoadLoad");
}
if (!limit)
iommu->strbuf_regs + STRBUF_FSYNC);
upa_readq(iommu->sbus_control_reg);
- limit = 10000;
+ limit = 100000;
while (iommu->strbuf_flushflag == 0UL) {
limit--;
if (!limit)
break;
- udelay(10);
+ udelay(1);
membar("#LoadLoad");
}
if (!limit)