MFC: Remove the 'needbounce' variable from _bus_dmamap_load_buffer().

This commit is contained in:
jhb 2008-03-17 17:33:32 +00:00
parent 95623d189d
commit 9c82fd4f0f
4 changed files with 11 additions and 25 deletions

View File

@ -576,7 +576,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)
@ -600,10 +599,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);
@ -673,7 +670,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)))

View File

@ -664,12 +664,11 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
static int
_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
bus_size_t buflen, int flags, int *nb)
bus_size_t buflen, int flags)
{
vm_offset_t vaddr;
vm_offset_t vendaddr;
bus_addr_t paddr;
int needbounce = *nb;
if ((map->pagesneeded == 0)) {
CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, "
@ -687,10 +686,8 @@ _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
while (vaddr < vendaddr) {
paddr = pmap_kextract(vaddr);
if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
run_filter(dmat, paddr) != 0) {
needbounce = 1;
run_filter(dmat, paddr) != 0)
map->pagesneeded++;
}
vaddr += PAGE_SIZE;
}
CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded);
@ -716,7 +713,6 @@ _bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
mtx_unlock(&bounce_lock);
}
*nb = needbounce;
return (0);
}
@ -739,14 +735,12 @@ bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t *segs,
pd_entry_t *pde;
pt_entry_t pte;
pt_entry_t *ptep;
int needbounce = 0;
lastaddr = *lastaddrp;
bmask = ~(dmat->boundary - 1);
if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) {
error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags,
&needbounce);
error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags);
if (error)
return (error);
}
@ -834,7 +828,7 @@ bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t *segs,
* Insert chunk into a segment, coalescing with
* the previous segment if possible.
*/
if (needbounce == 0 && seg >= 0 && curaddr == lastaddr &&
if (seg >= 0 && curaddr == lastaddr &&
(segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
(dmat->boundary == 0 ||
(segs[seg].ds_addr & bmask) ==

View File

@ -579,7 +579,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)
@ -603,10 +602,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);
@ -676,7 +673,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)))
@ -858,6 +855,7 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map,
nsegs = 0;
error = 0;
first = 1;
lastaddr = (bus_addr_t) 0;
for (i = 0; i < uio->uio_iovcnt && resid != 0 && !error; i++) {
/*
* Now at the first iovec to load. Load each iovec

View File

@ -489,7 +489,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;
pmap_t pmap;
@ -515,10 +514,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
while (vaddr < vendaddr) {
paddr = pmap_kextract(vaddr);
if (run_filter(dmat, paddr, 0) != 0) {
needbounce = 1;
if (run_filter(dmat, paddr, 0) != 0)
map->pagesneeded++;
}
vaddr += PAGE_SIZE;
}
}
@ -588,7 +585,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
segs[seg].ds_len = sgsize;
first = 0;
} else {
if (!needbounce && curaddr == lastaddr &&
if (curaddr == lastaddr &&
(segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
(dmat->boundary == 0 ||
(segs[seg].ds_addr & bmask) == (curaddr & bmask)))