Re: [RFC PATCH v2] mm: initialize struct pages reserved by ZONE_DEVICE driver.

From: Dan Williams
Date: Tue Sep 10 2019 - 10:53:32 EST


On Tue, Sep 10, 2019 at 7:01 AM Michal Hocko <mhocko@xxxxxxxxxx> wrote:
>
> On Fri 06-09-19 08:09:52, Toshiki Fukasawa wrote:
> [...]
> > @@ -5856,8 +5855,6 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
> > if (!altmap)
> > return;
> >
> > - if (start_pfn == altmap->base_pfn)
> > - start_pfn += altmap->reserve;
> > end_pfn = altmap->base_pfn + vmem_altmap_offset(altmap);
>
> Who is actually setting reserve? This is is something really impossible
> to grep for in the kernle and git grep on altmap->reserve doesn't show
> anything AFAICS.

Yes, it's difficult to grep, here is the use in the nvdimm case:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/nvdimm/pfn_devs.c#n600

>
> Btw. irrespective to this issue all three callers should be using
> pfn_to_online_page rather than pfn_to_page AFAICS. It doesn't really
> make sense to collect data for offline pfn ranges. They might be
> uninitialized even without zone device.

Agree.