The vmalloc allocator can be used to obtain virtually contiguous memory zones, but not physically contiguous. The requested memory size is rounded up to the next page.
The allocated area is in the kernel space part of the address space, but outside of the identically-mapped area
Allocations of fairly large areas is possible, since physical memory fragmentation is not an issue, but areas cannot be used for DMA, as DMA usually requires physically contiguous buffers.
API in <linux/vmalloc.h>
void *vmalloc(unsigned long size);
Returns a virtual address