[LSF/MM TOPIC] CMA and larger page sizes

Laura Abbott
2018-01-26T10:08:18Z

CMA as it's currently designed requires alignment to the pageblock size c.f.

/*
* Sanitise input arguments.
* Pages both ends in CMA area could be merged into adjacent unmovable
* migratetype page by page allocator's buddy algorithm. In the case,
* you couldn't get a contiguous memory, which is not what we want.
*/
alignment = max(alignment, (phys_addr_t)PAGE_SIZE <<
max_t(unsigned long, MAX_ORDER - 1, pageblock_order));

On arm64 with 64K page size and transparent huge page, this gives an alignment
of 512MB. This is quite restrictive and can eat up significant portions of
memory on smaller memory targets. Adjusting the configuration options really
isn't ideal for distributions that aim to have a single image which runs on
all targets.

Approaches I've thought about:
- Making CMA alignment less restrictive (and dealing with the fallout from
the comment above)
- Command line option to force a reasonable alignment

There's been some interest in other CMA topics so this might go along well.

Thanks,
Laura

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: email@kvack.org