diff options
Diffstat (limited to 'sys/amd64/amd64/busdma_machdep.c')
-rw-r--r-- | sys/amd64/amd64/busdma_machdep.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/amd64/amd64/busdma_machdep.c b/sys/amd64/amd64/busdma_machdep.c index b726fbbda271..321c49ebf591 100644 --- a/sys/amd64/amd64/busdma_machdep.c +++ b/sys/amd64/amd64/busdma_machdep.c @@ -580,7 +580,6 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_addr_t curaddr, lastaddr, baddr, bmask; vm_offset_t vaddr; bus_addr_t paddr; - int needbounce = 0; int seg; if (map == NULL) @@ -604,10 +603,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, while (vaddr < vendaddr) { paddr = pmap_kextract(vaddr); - if (run_filter(dmat, paddr) != 0) { - needbounce = 1; + if (run_filter(dmat, paddr) != 0) map->pagesneeded++; - } vaddr += PAGE_SIZE; } CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded); @@ -679,7 +676,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, segs[seg].ds_len = sgsize; first = 0; } else { - if (needbounce == 0 && curaddr == lastaddr && + if (curaddr == lastaddr && (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && (dmat->boundary == 0 || (segs[seg].ds_addr & bmask) == (curaddr & bmask))) |