I tried using kmalloc() but it's not providing more than 4MB. Also, can I use ioctl to transfer that large data from a user process to a kernel module? Is there any limitations for the buffer size?
I also read some documentation about __get_free_page() and dma_alloc_coherent() but these functions also do not provide that much memory.