On 4/24/21 1:18 AM, Dan Williams wrote:
> On Thu, Mar 25, 2021 at 4:10 PM Joao Martins
> wrote:
>>
>> Move struct page init to an helper function __init_zone_device_page().
>
> Same sentence addition suggestion from the last patch to make this
> patch have some rationale for existing.
>
I have fixed this too, with the same message as the previous patch.
>>
>> Signed-off-by: Joao Martins
>> ---
>> mm/page_alloc.c | 74 +++--
>> 1 file changed, 41 insertions(+), 33 deletions(-)
>>
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index 43dd98446b0b..58974067bbd4 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -6237,6 +6237,46 @@ void __meminit memmap_init_range(unsigned long size,
>> int nid, unsigned long zone
>> }
>>
>> #ifdef CONFIG_ZONE_DEVICE
>> +static void __ref __init_zone_device_page(struct page *page, unsigned long
>> pfn,
>> + unsigned long zone_idx, int nid,
>> + struct dev_pagemap *pgmap)
>> +{
>> +
>> + __init_single_page(page, pfn, zone_idx, nid);
>> +
>> + /*
>> +* Mark page reserved as it will need to wait for onlining
>> +* phase for it to be fully associated with a zone.
>> +*
>> +* We can use the non-atomic __set_bit operation for setting
>> +* the flag as we are still initializing the pages.
>> +*/
>> + __SetPageReserved(page);
>> +
>> + /*
>> +* ZONE_DEVICE pages union ->lru with a ->pgmap back pointer
>> +* and zone_device_data. It is a bug if a ZONE_DEVICE page is
>> +* ever freed or placed on a driver-private list.
>> +*/
>> + page->pgmap = pgmap;
>> + page->zone_device_data = NULL;
>> +
>> + /*
>> +* Mark the block movable so that blocks are reserved for
>> +* movable at startup. This will force kernel allocations
>> +* to reserve their blocks rather than leaking throughout
>> +* the address space during boot when many long-lived
>> +* kernel allocations are made.
>> +*
>> +* Please note that MEMINIT_HOTPLUG path doesn't clear memmap
>> +* because this is done early in section_activate()
>> +*/
>> + if (IS_ALIGNED(pfn, pageblock_nr_pages)) {
>> + set_pageblock_migratetype(page, MIGRATE_MOVABLE);
>> + cond_resched();
>> + }
>> +}
>> +
>> void __ref memmap_init_zone_device(struct zone *zone,
>>unsigned long start_pfn,
>>unsigned long nr_pages,
>> @@ -6265,39 +6305,7 @@ void __ref memmap_init_zone_device(struct zone *zone,
>> for (pfn = start_pfn; pfn < end_pfn; pfn++) {
>> struct page *page = pfn_to_page(pfn);
>>
>> - __init_single_page(page, pfn, zone_idx, nid);
>> -
>> - /*
>> -* Mark page reserved as it will need to wait for onlining
>> -* phase for it to be fully associated with a zone.
>> -*
>> -* We can use the non-atomic __set_bit operation for setting
>> -* the flag as we are still initializing the pages.
>> -*/
>> - __SetPageReserved(page);
>> -
>> - /*
>> -* ZONE_DEVICE pages union ->lru with a ->pgmap back pointer
>> -* and zone_device_data. It is a bug if a ZONE_DEVICE page
>> is
>> -* ever freed or placed on a driver-private list.
>> -*/
>> - page->pgmap = pgmap;
>> - page->zone_device_data = NULL;
>> -
>> - /*
>> -* Mark the block movable so that blocks are reserved for
>> -* movable at startup. This will force kernel allocations
>> -* to reserve their blocks rather than leaking throughout
>> -* the address space during boot when many long-lived
>> -* kernel allocations are made.
>> -*
>> -* Please note that MEMINIT_HOTPLUG path doesn't clear memmap
>> -* because this is done early in section_activate()
>> -*/
>> - if (IS_ALIGNED(pfn, pageblock_nr_pages)) {
>> - set_pageblock_migratetype(page, MIGRATE_MOVABLE);
>> - cond_resched();
>> - }
>> + __init_zone_device_page(page, pfn, zone_idx, nid, pgmap);
>> }
>>
>> pr_info("%s initialised %lu pages in %ums\n", __func__,
>> --
>> 2.17.1
>>
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org