On 2016/3/17 23:31, Joonsoo Kim wrote: [...] >>> I may find that there is a bug which was introduced by me some time >>> ago. Could you test following change in __free_one_page() on top of >>> Vlastimil's patch? >>> >>> -page_idx = pfn & ((1 << max_order) - 1); >>> +page_idx = pfn & ((1 << MAX_ORDER) - 1); >> I tested Vlastimil's patch + your change with stress for more than half hour, the bug >> I reported is gone :) > Good to hear! > >> I have some questions, Joonsoo, you provided a patch as following: >> >> diff --git a/mm/cma.c b/mm/cma.c >> index 3a7a67b..952a8a3 100644 >> --- a/mm/cma.c >> +++ b/mm/cma.c >> @@ -448,7 +448,10 @@ bool cma_release(struct cma *cma, const struct page *pages, unsigned int count) >> >> VM_BUG_ON(pfn + count > cma->base_pfn + cma->count); >> >> + mutex_lock(&cma_mutex); >> free_contig_range(pfn, count); >> + mutex_unlock(&cma_mutex); >> + >> cma_clear_bitmap(cma, pfn, count); >> trace_cma_release(pfn, pages, count); >> >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >> index 7f32950..68ed5ae 100644 >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -1559,7 +1559,8 @@ void free_hot_cold_page(struct page *page, bool cold) >> * excessively into the page allocator >> */ >> if (migratetype >= MIGRATE_PCPTYPES) { >> - if (unlikely(is_migrate_isolate(migratetype))) { >> + if (is_migrate_cma(migratetype) || >> + unlikely(is_migrate_isolate(migratetype))) { >> free_one_page(zone, page, pfn, 0, migratetype); >> goto out; >> } >> >> This patch also works to fix the bug, why not just use this one? is there >> any side effects for this patch? maybe there is performance issue as the >> mutex lock is used, any other issues? > The changes in free_hot_cold_page() would cause unacceptable performance > problem in a big machine, because, with above change, it takes zone->lock > whenever freeing one page on CMA region. Thanks for the clarify :) Hanjun -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>