Thread (1 message) 1 message, 1 author, 2018-06-19

dynamic reservation and allocation of physically contiguous memory using CMA

From: m.szyprowski@samsung.com (Marek Szyprowski)
Date: 2018-06-19 11:45:35
Also in: linux-media, linux-mm, linux-samsung-soc, lkml

Hi Amit,

On 2018-06-18 20:23, Amit Chandra (amichand) wrote:
Hi experts,

I had a question related to CMA. I have been trying to use the CMA 
infra to reserve and allocate physically contiguous memory dynamically 
at runtime.

I built a custom kernel based on linux-4.14.47 to invoke the cma 
initialization apis at runtime from kernel loadable module.

I invoke cma_declare_contiguous() followed by cma_init_reserved_areas().

cma_declare_contiguous throws no surprises and succeeds. The issue 
happens when cma_init_reserved_areas() is invoked post that.

Here is the kernel log snippet post that call:

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.593218] cma: 
cma_declare_contiguous(size 0x0000000200000000, base 
0x0000000000000000, limit 0x0000000000000000 alignment 0x0000000000000000)

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.593228] cma: Reserved 
8192 MiB at 0x0000001d4d000000

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.593345] BUG: Bad page 
state in process insmod? pfn:1d4d000

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.595758] 
page:ffffefc335340000 count:0 mapcount:-127 mapping:????????? (null) 
index:0x0

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.599193] flags: 
0x57fffc000000000()

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.600751] raw: 
057fffc000000000 0000000000000000 0000000000000000 00000000ffffff80

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.603946] raw: 
ffffefc335330020 ffffefc335350020 000000000000000a 0000000000000000

Jun 15 03:30:31 ubuntu-quickstart kernel: [? 384.607152] page dumped 
because: nonzero mapcount

I am having a hard time trying to understand why the mapcount is less 
than 0 here. I figured this is happening in the call to __free_pages() 
from init_cma_reserved_pageblock().

Any pointers here would be really helpful. If I am missing any step 
for cma reservation, please do let me know.

Thanks in advance.
CMA initialization is possible only on very early boot stage. CMA will 
not work as dynamic module.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help