Re: [PATCH v6 1/2] mm/memory_hotplug: optimize zone contiguous check when changing pfn range

"David Hildenbrand (Arm)" <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.kernel.mm
Message-ID <[email protected]>
>>> +static void __init update_zone_online_memmap_pages(struct zone *zone,
>>> +						   unsigned long start_pfn,
>>> +						   unsigned long end_pfn,
>>> +						   unsigned long *hole_pfn)
>>> +{
>>> +#ifdef CONFIG_SPARSEMEM_VMEMMAP
>>> +	unsigned long zone_start_pfn = zone->zone_start_pfn;
>>> +	unsigned long zone_end_pfn = zone_start_pfn + zone->spanned_pages;
>>
>> These two can be const.
> 
> Will do.
> 
>>> +	unsigned long sub_start, sub_end;
>>> +
>>> +	sub_start = max(ALIGN_DOWN(start_pfn, PAGES_PER_SUBSECTION),
>>> +			zone_start_pfn);
>>> +	sub_end = min(ALIGN(end_pfn, PAGES_PER_SUBSECTION), zone_end_pfn);
>>
>> Hm, I don't immediately understand why we do the PAGES_PER_SUBSECTION
>> thing
>> here. Why is that required?
> 
> pages_with_online_memmap counts all PFNs where pfn_to_online_page() is
> valid. With CONFIG_SPARSEMEM_VMEMMAP, pfn_section_valid() operates at
> PAGES_PER_SUBSECTION granularity — when any page in a subsection has
> memory, the entire subsection is valid/online. So we align to subsection
> boundaries to include hole pages within partially-populated subsections.

But we must never account exceeding the zone range. So I don't understand why we
would have to care about PAGES_PER_SUBSECTION here at all?

-- 
Cheers,

David
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.