Hello, Laura. Sorry for a late response. On Fri, Jan 26, 2018 at 06:25:27PM +0100, Michal Hocko wrote: > [Ccing Joonsoo] Thanks! Michal. > > On Fri 26-01-18 02:08:14, Laura Abbott wrote: > > 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 If the patchset 'manage the memory of the CMA area by using the ZONE_MOVABLE' is merged, this restriction can be removed since there is no unmovable pageblock in ZONE_MOVABLE. Just quick thought. :) Thanks.