diff options
author | alc <alc@FreeBSD.org> | 2008-07-15 03:34:49 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2008-07-15 03:34:49 +0000 |
commit | d4de04e9b12b0c35662441b280530b24f1a04472 (patch) | |
tree | 108e4a91f6248d3c2f096fa2c7182df936169673 /sys/amd64 | |
parent | eae79cfa0fb80e366fc602240d0ef1774ba118eb (diff) | |
download | FreeBSD-src-d4de04e9b12b0c35662441b280530b24f1a04472.zip FreeBSD-src-d4de04e9b12b0c35662441b280530b24f1a04472.tar.gz |
Update bus_dmamem_alloc()'s first call to malloc() such that M_WAITOK is
specified when appropriate.
Reviewed by: scottl
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/busdma_machdep.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/amd64/amd64/busdma_machdep.c b/sys/amd64/amd64/busdma_machdep.c index c9475d5..f68e90b 100644 --- a/sys/amd64/amd64/busdma_machdep.c +++ b/sys/amd64/amd64/busdma_machdep.c @@ -480,8 +480,6 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, mflags = M_NOWAIT; else mflags = M_WAITOK; - if (flags & BUS_DMA_ZERO) - mflags |= M_ZERO; /* If we succeed, no mapping/bouncing will be required */ *mapp = NULL; @@ -489,13 +487,15 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, if (dmat->segments == NULL) { dmat->segments = (bus_dma_segment_t *)malloc( sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF, - M_NOWAIT); + mflags); if (dmat->segments == NULL) { CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, ENOMEM); return (ENOMEM); } } + if (flags & BUS_DMA_ZERO) + mflags |= M_ZERO; /* * XXX: @@ -531,7 +531,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, pmap_change_attr((vm_offset_t)*vaddr, dmat->maxsize, PAT_UNCACHEABLE); CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", - __func__, dmat, dmat->flags, ENOMEM); + __func__, dmat, dmat->flags, 0); return (0); } |