I'm trying to allocated a 10MB contiguous region of memory using kmalloc. I need this because it would be easier to have this available than to target my peripheral to DMA into different areas of my memory (i.e. "scatter gather"), plus if I hand off the buffer that the ARM receives from the peripheral to the DSP, then the DSP definitely requires contiguous memory. Whenever I try to allocate more than a very small amount it fails, so I tried to increase CONSISTENT_DMA_SIZE to 14MB in arch/arm/include/asm/memory.h but this doesn't work either.
So in either case when I try to allocate 10MB of memory with kmalloc here is the resulting output:
------------[ cut here ]------------
WARNING: at mm/page_alloc.c:1990 __alloc_pages_nodemask+0x148/0x514()
Modules linked in: pciemodule(+)
[<c0042ff4>] (unwind_backtrace+0x0/0xec) from [<c0062174>] (warn_slowpath_common+0x4c/0x64)
[<c0062174>] (warn_slowpath_common+0x4c/0x64) from [<c00621a4>] (warn_slowpath_null+0x18/0x1c)
[<c00621a4>] (warn_slowpath_null+0x18/0x1c) from [<c0097b48>] (__alloc_pages_nodemask+0x148/0x514)
[<c0097b48>] (__alloc_pages_nodemask+0x148/0x514) from [<c0097f24>] (__get_free_pages+0x10/0x24)
[<c0097f24>] (__get_free_pages+0x10/0x24) from [<bf001590>] (pci_probe+0x294/0x320 [sharkpcie])
[<bf001590>] (pci_probe+0x294/0x320 [sharkpcie]) from [<c0190954>] (local_pci_probe+0x50/0xac)
[<c0190954>] (local_pci_probe+0x50/0xac) from [<c0190ce8>] (pci_device_probe+0x58/0x8c)
[<c0190ce8>] (pci_device_probe+0x58/0x8c) from [<c01c53b4>] (driver_probe_device+0xc8/0x188)
[<c01c53b4>] (driver_probe_device+0xc8/0x188) from [<c01c54d4>] (__driver_attach+0x60/0x84)
[<c01c54d4>] (__driver_attach+0x60/0x84) from [<c01c4c0c>] (bus_for_each_dev+0x44/0x74)
[<c01c4c0c>] (bus_for_each_dev+0x44/0x74) from [<c01c4564>] (bus_add_driver+0xa8/0x224)
[<c01c4564>] (bus_add_driver+0xa8/0x224) from [<c01c57c4>] (driver_register+0xa8/0x134)
[<c01c57c4>] (driver_register+0xa8/0x134) from [<c0190f18>] (__pci_register_driver+0x38/0xac)
[<c0190f18>] (__pci_register_driver+0x38/0xac) from [<bf0012c0>] (drv_init+0x14/0x50 [sharkpcie])
[<bf0012c0>] (drv_init+0x14/0x50 [sharkpcie]) from [<c00393f8>] (do_one_initcall+0xc8/0x19c)
[<c00393f8>] (do_one_initcall+0xc8/0x19c) from [<c008a6b4>] (sys_init_module+0x90/0x1ac)
[<c008a6b4>] (sys_init_module+0x90/0x1ac) from [<c003e180>] (ret_fast_syscall+0x0/0x30)
---[ end trace 29c1800fa352226a ]---
Any ideas how to fix this? I already have "vmalloc=500M" in my kernel parameters which I don't expect is helping things.
Thanks,
Ralph