ANDROID: mm: Skip the virtzones area when reserving the CMA region
We have discovered a bug: when there is an overlap between CMA and TAO,
the cma_alloc() function internally causes splitting, which directly
triggers a kernel warning.
Call trace:
split_free_page+0x29c/0x2f0
isolate_single_pageblock+0x38c/0x478
start_isolate_page_range+0x8c/0x178
alloc_contig_range+0xf8/0x2f0
__cma_alloc+0x3dc/0x668
cma_alloc+0x28/0x40
dma_alloc_from_contiguous+0x4c/0x60
atomic_pool_expand+0x9c/0x338
__dma_atomic_pool_init+0x54/0xc8
dma_atomic_pool_init+0xb8/0x200
do_one_initcall+0x80/0x360
kernel_init_freeable+0x2ac/0x568
kernel_init+0x2c/0x1f0
ret_from_fork+0x10/0x20
The fix for this issue is to skip the virtzones area when reserving the CMA region,
ensuring that CMA and virtzones do not overlap.
Bug: 313807618
Change-Id: I121c75defa6652777491818fcad1e87d14d0f02f
Signed-off-by:
Tangquan Zheng <zhengtangquan@oppo.com>
Loading
Please sign in to comment