From 477327b5c51f2fdb4056909b33650969c01d6bca Mon Sep 17 00:00:00 2001 From: Scott Long Date: Mon, 4 Aug 2003 23:40:35 +0000 Subject: [PATCH] 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 =-) --- sys/amd64/amd64/busdma_machdep.c | 3 ++- sys/i386/i386/busdma_machdep.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/amd64/amd64/busdma_machdep.c b/sys/amd64/amd64/busdma_machdep.c index 058210bd2b0e..7b183b7f2fac 100644 --- a/sys/amd64/amd64/busdma_machdep.c +++ b/sys/amd64/amd64/busdma_machdep.c @@ -476,7 +476,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, else 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; /* diff --git a/sys/i386/i386/busdma_machdep.c b/sys/i386/i386/busdma_machdep.c index 6bce740dfd30..ab7bd217ff57 100644 --- a/sys/i386/i386/busdma_machdep.c +++ b/sys/i386/i386/busdma_machdep.c @@ -494,7 +494,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, else 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; /*