On Mon, May 13, 2019 at 7:55 PM Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx> wrote: > > We already add the start_pad to the resource->start but fails to section > align the start. This make sure with altmap we compute the right first > pfn when start_pad is zero and we are doing an align down of start address. > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx> > --- > kernel/memremap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/memremap.c b/kernel/memremap.c > index a856cb5ff192..23d77b60e728 100644 > --- a/kernel/memremap.c > +++ b/kernel/memremap.c > @@ -59,9 +59,9 @@ static unsigned long pfn_first(struct dev_pagemap *pgmap) > { > const struct resource *res = &pgmap->res; > struct vmem_altmap *altmap = &pgmap->altmap; > - unsigned long pfn; > + unsigned long pfn = PHYS_PFN(res->start); > > - pfn = res->start >> PAGE_SHIFT; > + pfn = SECTION_ALIGN_DOWN(pfn); This does not seem right to me it breaks the assumptions of where the first expected valid pfn occurs in the passed in range.