On Wed, Sep 12, 2018 at 10:46 AM, Pasha Tatashin <Pavel.Tatashin@xxxxxxxxxxxxx> wrote: > > > On 9/12/18 12:50 PM, Dan Williams wrote: >> On Wed, Sep 12, 2018 at 8:48 AM, Alexander Duyck >> <alexander.duyck@xxxxxxxxx> wrote: >>> On Wed, Sep 12, 2018 at 6:59 AM Pasha Tatashin >>> <Pavel.Tatashin@xxxxxxxxxxxxx> wrote: >>>> >>>> Hi Alex, >>> >>> Hi Pavel, >>> >>>> Please re-base on linux-next, memmap_init_zone() has been updated there >>>> compared to mainline. You might even find a way to unify some parts of >>>> memmap_init_zone and memmap_init_zone_device as memmap_init_zone() is a >>>> lot simpler now. >>> >>> This patch applied to the linux-next tree with only a little bit of >>> fuzz. It looks like it is mostly due to some code you had added above >>> the function as well. I have updated this patch so that it will apply >>> to both linux and linux-next by just moving the new function to >>> underneath memmap_init_zone instead of above it. >>> >>>> I think __init_single_page() should stay local to page_alloc.c to keep >>>> the inlining optimization. >>> >>> I agree. In addition it will make pulling common init together into >>> one space easier. I would rather not have us create an opportunity for >>> things to further diverge by making it available for anybody to use. >> >> I'll buy the inline argument for keeping the new routine in >> page_alloc.c, but I otherwise do not see the divergence danger or >> "making __init_single_page() available for anybody" given the the >> declaration is limited in scope to a mm/ local header file. >> > > Hi Dan, > > It is much harder for compiler to decide that function can be inlined > once it is non-static. Of course, we can simply move this function to a > header file, and declare it inline to begin with. > > But, still __init_single_page() is so performance sensitive, that I'd > like to reduce number of callers to this function, and keep it in .c file. Yes, agree, inline considerations win the day. I was just objecting to the "make it available for anybody" assertion.