In _bus_dmamap_load_buffer(), only count the number of bounce pages needed if
they haven't been counted before. This test was ommitted when bus_dmamap_load() was merged into this function, and results in the pagesneeded field growing without bounds when multiple deferrals happen. Thanks to Paul Saab for beating his head against this for a few hours =-)
This commit is contained in:
parent
02cc6a6f35
commit
477327b5c5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=118451
@ -476,7 +476,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
|
|||||||
else
|
else
|
||||||
pmap = NULL;
|
pmap = NULL;
|
||||||
|
|
||||||
if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem)) {
|
if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem) &&
|
||||||
|
map->pagesneeded == 0) {
|
||||||
vm_offset_t vendaddr;
|
vm_offset_t vendaddr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -494,7 +494,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
|
|||||||
else
|
else
|
||||||
pmap = NULL;
|
pmap = NULL;
|
||||||
|
|
||||||
if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem)) {
|
if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem) &&
|
||||||
|
map->pagesneeded == 0) {
|
||||||
vm_offset_t vendaddr;
|
vm_offset_t vendaddr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user