Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/src/linux_page.c
Show First 20 Lines • Show All 91 Lines • ▼ Show 20 Lines | linux_alloc_pages(gfp_t flags, unsigned int order) | ||||
if (PMAP_HAS_DMAP) { | if (PMAP_HAS_DMAP) { | ||||
unsigned long npages = 1UL << order; | unsigned long npages = 1UL << order; | ||||
int req = VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_NORMAL; | int req = VM_ALLOC_NOOBJ | VM_ALLOC_WIRED | VM_ALLOC_NORMAL; | ||||
if ((flags & M_ZERO) != 0) | if ((flags & M_ZERO) != 0) | ||||
req |= VM_ALLOC_ZERO; | req |= VM_ALLOC_ZERO; | ||||
if (order == 0 && (flags & GFP_DMA32) == 0) { | if (order == 0 && (flags & GFP_DMA32) == 0) { | ||||
page = vm_page_alloc(NULL, 0, req); | page = vm_page_alloc_noobj(req); | ||||
if (page == NULL) | if (page == NULL) | ||||
return (NULL); | return (NULL); | ||||
} else { | } else { | ||||
vm_paddr_t pmax = (flags & GFP_DMA32) ? | vm_paddr_t pmax = (flags & GFP_DMA32) ? | ||||
BUS_SPACE_MAXADDR_32BIT : BUS_SPACE_MAXADDR; | BUS_SPACE_MAXADDR_32BIT : BUS_SPACE_MAXADDR; | ||||
retry: | retry: | ||||
page = vm_page_alloc_contig(NULL, 0, req, | page = vm_page_alloc_contig(NULL, 0, req, | ||||
npages, 0, pmax, PAGE_SIZE, 0, VM_MEMATTR_DEFAULT); | npages, 0, pmax, PAGE_SIZE, 0, VM_MEMATTR_DEFAULT); | ||||
▲ Show 20 Lines • Show All 262 Lines • Show Last 20 Lines |