Re: [PATCH v3] mm: fix panic in __alloc_pages

Alexey Makhalov
2021-12-21T20:25:44Z

> On Dec 21, 2021, at 1:46 AM, Michal Hocko <mhocko@suse.com> wrote:
>
> On Tue 21-12-21 05:46:16, Alexey Makhalov wrote:
>> Hi Michal,
>>
>> The patchset looks good to me. I didn’t find any issues during the testing.
>
> Thanks a lot. Can I add your Tested-by: tag?
Sure, thanks.

>
>> I have one concern regarding dmesg output. Do you think this messaging is
>> valid if possible node is not yet present?
>> Or is it only the issue for virtual machines?
>>
>> Node XX uninitialized by the platform. Please report with boot dmesg.
>> Initmem setup node XX [mem 0x0000000000000000-0x0000000000000000]
>
> AFAIU the Initmem part of the output is what concerns you, right? Yeah,
First line actually, this sentence “Please report with boot dmesg.”. But
there is nothing to fix, at least for VMs.

> that really is more cryptic than necessary. Does this look any better?
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 34743dcd2d66..7e18a924be7e 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -7618,9 +7618,14 @@ static void __init free_area_init_node(int nid)
> pgdat->node_start_pfn = start_pfn;
> pgdat->per_cpu_nodestats = NULL;
>
> - pr_info("Initmem setup node %d [mem %#018Lx-%#018Lx]\n", nid,
> - (u64)start_pfn << PAGE_SHIFT,
> - end_pfn ? ((u64)end_pfn << PAGE_SHIFT) - 1 : 0);
> + if (start_pfn != end_pfn) {
> + pr_info("Initmem setup node %d [mem %#018Lx-%#018Lx]\n", nid,
> + (u64)start_pfn << PAGE_SHIFT,
> + end_pfn ? ((u64)end_pfn << PAGE_SHIFT) - 1 : 0);
> + } else {
> + pr_info("Initmem setup node %d as memoryless\n", nid);
> + }
> +
> calculate_node_totalpages(pgdat, start_pfn, end_pfn);
>
> alloc_node_mem_map(pgdat);
Second line looks much better.

Thank you,
—Alexey