On 19 Nov 2021, at 7:33, Vlastimil Babka wrote: > On 11/15/21 20:37, Zi Yan wrote: >> From: Zi Yan <ziy@xxxxxxxxxx> >> >> Hi David, >> >> You suggested to make alloc_contig_range() deal with pageblock_order instead of >> MAX_ORDER - 1 and get rid of MAX_ORDER - 1 dependency in virtio_mem[1]. This >> patchset is my attempt to achieve that. Please take a look and let me know if >> I am doing it correctly or not. >> >> From what my understanding, cma required alignment of >> max(MAX_ORDER - 1, pageblock_order), because when MIGRATE_CMA was introduced, >> __free_one_page() does not prevent merging two different pageblocks, when >> MAX_ORDER - 1 > pageblock_order. But current __free_one_page() implementation >> does prevent that. > > But it does prevent that only for isolated pageblock, not CMA, and yout > patchset doesn't seem to expand that to CMA? Or am I missing something. Yeah, you are right. Originally, I thought preventing merging isolated pageblock with other types of pageblocks is sufficient, since MIGRATE_CMA is always converted from MIGRATE_ISOLATE. But that is not true. I will rework the code. Thanks for pointing this out. > > >> It should be OK to just align cma to pageblock_order. >> alloc_contig_range() relies on MIGRATE_CMA to get free pages, so it can use >> pageblock_order as alignment too. >> >> In terms of virtio_mem, if I understand correctly, it relies on >> alloc_contig_range() to obtain contiguous free pages and offlines them to reduce >> guest memory size. As the result of alloc_contig_range() alignment change, >> virtio_mem should be able to just align PFNs to pageblock_order. >> >> Thanks. >> >> >> [1] https://lore.kernel.org/linux-mm/28b57903-fae6-47ac-7e1b-a1dd41421349@xxxxxxxxxx/ >> >> Zi Yan (3): >> mm: cma: alloc_contig_range: use pageblock_order as the single >> alignment. >> drivers: virtio_mem: use pageblock size as the minimum virtio_mem >> size. >> arch: powerpc: adjust fadump alignment to be pageblock aligned. >> >> arch/powerpc/include/asm/fadump-internal.h | 4 +--- >> drivers/virtio/virtio_mem.c | 6 ++---- >> include/linux/mmzone.h | 5 +---- >> kernel/dma/contiguous.c | 2 +- >> mm/cma.c | 6 ++---- >> mm/page_alloc.c | 12 +++++------- >> 6 files changed, 12 insertions(+), 23 deletions(-) >> -- Best Regards, Yan, Zi
Attachment:
signature.asc
Description: OpenPGP digital signature