diff options
| author | Andrew Gallatin <gallatin@FreeBSD.org> | 2016-10-03 13:23:43 +0000 |
|---|---|---|
| committer | Andrew Gallatin <gallatin@FreeBSD.org> | 2016-10-03 13:23:43 +0000 |
| commit | edb2994a620283d637b3e6e22800e0183e942201 (patch) | |
| tree | add7bc6bbbd937c7212097eaa1b9652665e854cf /sys/vm/vm_init.c | |
| parent | 5c1ea1fcd01c9be610c82e8f554edbc2456493e1 (diff) | |
Notes
Diffstat (limited to 'sys/vm/vm_init.c')
| -rw-r--r-- | sys/vm/vm_init.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/vm/vm_init.c b/sys/vm/vm_init.c index e6645858ad37..8b5f2adf691f 100644 --- a/sys/vm/vm_init.c +++ b/sys/vm/vm_init.c @@ -206,8 +206,18 @@ again: */ if (firstaddr == 0) { size = (vm_size_t)v; - firstaddr = kmem_malloc(kernel_arena, round_page(size), - M_ZERO | M_WAITOK); +#ifdef VM_FREELIST_DMA32 + /* + * Try to protect 32-bit DMAable memory from the largest + * early alloc of wired mem. + */ + firstaddr = kmem_alloc_attr(kernel_arena, size, + M_ZERO | M_NOWAIT, (vm_paddr_t)1 << 32, + ~(vm_paddr_t)0, VM_MEMATTR_DEFAULT); + if (firstaddr == 0) +#endif + firstaddr = kmem_malloc(kernel_arena, size, + M_ZERO | M_WAITOK); if (firstaddr == 0) panic("startup: no room for tables"); goto again; |
