diff options
Diffstat (limited to 'arch/sparc64/kernel/pci_iommu.c')
-rw-r--r-- | arch/sparc64/kernel/pci_iommu.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c index f009b1b45501..33ca56c90da2 100644 --- a/arch/sparc64/kernel/pci_iommu.c +++ b/arch/sparc64/kernel/pci_iommu.c | |||
@@ -392,14 +392,16 @@ static void pci_strbuf_flush(struct pci_strbuf *strbuf, struct pci_iommu *iommu, | |||
392 | flushreg = strbuf->strbuf_ctxflush; | 392 | flushreg = strbuf->strbuf_ctxflush; |
393 | matchreg = PCI_STC_CTXMATCH_ADDR(strbuf, ctx); | 393 | matchreg = PCI_STC_CTXMATCH_ADDR(strbuf, ctx); |
394 | 394 | ||
395 | limit = 10000; | 395 | limit = 100000; |
396 | do { | 396 | pci_iommu_write(flushreg, ctx); |
397 | pci_iommu_write(flushreg, ctx); | 397 | for(;;) { |
398 | udelay(10); | 398 | if (((long)pci_iommu_read(matchreg)) >= 0L) |
399 | break; | ||
399 | limit--; | 400 | limit--; |
400 | if (!limit) | 401 | if (!limit) |
401 | break; | 402 | break; |
402 | } while(((long)pci_iommu_read(matchreg)) < 0L); | 403 | udelay(1); |
404 | } | ||
403 | if (!limit) | 405 | if (!limit) |
404 | printk(KERN_WARNING "pci_strbuf_flush: ctx flush " | 406 | printk(KERN_WARNING "pci_strbuf_flush: ctx flush " |
405 | "timeout vaddr[%08x] ctx[%lx]\n", | 407 | "timeout vaddr[%08x] ctx[%lx]\n", |
@@ -414,12 +416,12 @@ static void pci_strbuf_flush(struct pci_strbuf *strbuf, struct pci_iommu *iommu, | |||
414 | pci_iommu_write(strbuf->strbuf_fsync, strbuf->strbuf_flushflag_pa); | 416 | pci_iommu_write(strbuf->strbuf_fsync, strbuf->strbuf_flushflag_pa); |
415 | (void) pci_iommu_read(iommu->write_complete_reg); | 417 | (void) pci_iommu_read(iommu->write_complete_reg); |
416 | 418 | ||
417 | limit = 10000; | 419 | limit = 100000; |
418 | while (!PCI_STC_FLUSHFLAG_SET(strbuf)) { | 420 | while (!PCI_STC_FLUSHFLAG_SET(strbuf)) { |
419 | limit--; | 421 | limit--; |
420 | if (!limit) | 422 | if (!limit) |
421 | break; | 423 | break; |
422 | udelay(10); | 424 | udelay(1); |
423 | membar("#LoadLoad"); | 425 | membar("#LoadLoad"); |
424 | } | 426 | } |
425 | if (!limit) | 427 | if (!limit) |