linux_dma: Ensure proper flags pass to allocators.

Possibly fixes the wrong flags being passed to the kernel
allocators in linux_dma_alloc_coherent() and linux_dma_pool_alloc().

Reviewed by:	hps
MFC after:	2 weeks
Sponsored by:	Dell EMC
Differential Revision:	https://reviews.freebsd.org/D27508
This commit is contained in:
bdrewery 2020-12-10 20:45:08 +00:00
parent 04477ecaf2
commit f623166c73

View File

@ -625,8 +625,8 @@ linux_dma_alloc_coherent(struct device *dev, size_t size,
else else
high = BUS_SPACE_MAXADDR; high = BUS_SPACE_MAXADDR;
align = PAGE_SIZE << get_order(size); align = PAGE_SIZE << get_order(size);
mem = (void *)kmem_alloc_contig(size, flag, 0, high, align, 0, mem = (void *)kmem_alloc_contig(size, flag & GFP_NATIVE_MASK, 0, high,
VM_MEMATTR_DEFAULT); align, 0, VM_MEMATTR_DEFAULT);
if (mem != NULL) { if (mem != NULL) {
*dma_handle = linux_dma_map_phys(dev, vtophys(mem), size); *dma_handle = linux_dma_map_phys(dev, vtophys(mem), size);
if (*dma_handle == 0) { if (*dma_handle == 0) {
@ -932,7 +932,7 @@ linux_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
{ {
struct linux_dma_obj *obj; struct linux_dma_obj *obj;
obj = uma_zalloc_arg(pool->pool_zone, pool, mem_flags); obj = uma_zalloc_arg(pool->pool_zone, pool, mem_flags & GFP_NATIVE_MASK);
if (obj == NULL) if (obj == NULL)
return (NULL); return (NULL);