Message ID | 1614577853-7452-1-git-send-email-anshuman.khandual@arm.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | mm: Generalize HUGETLB_PAGE_SIZE_VARIABLE | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (626a6c3d2e20da80aaa710104f34ea6037b28b33) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 50 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
On Mon, Mar 01, 2021 at 11:20:53AM +0530, Anshuman Khandual wrote: > HUGETLB_PAGE_SIZE_VARIABLE need not be defined for each individual > platform subscribing it. Instead just make it generic. > > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> > Cc: Paul Mackerras <paulus@samba.org> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Christoph Hellwig <hch@lst.de> > Cc: linux-ia64@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-mm@kvack.org > Cc: linux-kernel@vger.kernel.org > Suggested-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > This change was originally suggested in an earilier discussion. This > applies on v5.12-rc1 and has been build tested on all applicable > platforms i.e ia64 and powerpc. > > https://patchwork.kernel.org/project/linux-mm/patch/1613024531-19040-3-git-send-email-anshuman.khandual@arm.com/ > > arch/ia64/Kconfig | 6 +----- > arch/powerpc/Kconfig | 6 +----- > mm/Kconfig | 8 ++++++++ > 3 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig > index 2ad7a8d29fcc..6b3e3f6c29ae 100644 > --- a/arch/ia64/Kconfig > +++ b/arch/ia64/Kconfig > @@ -32,6 +32,7 @@ config IA64 > select TTY > select HAVE_ARCH_TRACEHOOK > select HAVE_VIRT_CPU_ACCOUNTING > + select HUGETLB_PAGE_SIZE_VARIABLE doesn't this need a 'if HUGETLB_PAGE' or did you verify that HUGETLB_PAGE_SIZE_VARIABLE checks are always nested inside of HUGETLB_PAGE ones?
On 3/1/21 11:53 AM, Christoph Hellwig wrote: > On Mon, Mar 01, 2021 at 11:20:53AM +0530, Anshuman Khandual wrote: >> HUGETLB_PAGE_SIZE_VARIABLE need not be defined for each individual >> platform subscribing it. Instead just make it generic. >> >> Cc: Michael Ellerman <mpe@ellerman.id.au> >> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> >> Cc: Paul Mackerras <paulus@samba.org> >> Cc: Andrew Morton <akpm@linux-foundation.org> >> Cc: Christoph Hellwig <hch@lst.de> >> Cc: linux-ia64@vger.kernel.org >> Cc: linuxppc-dev@lists.ozlabs.org >> Cc: linux-mm@kvack.org >> Cc: linux-kernel@vger.kernel.org >> Suggested-by: Christoph Hellwig <hch@lst.de> >> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> >> --- >> This change was originally suggested in an earilier discussion. This >> applies on v5.12-rc1 and has been build tested on all applicable >> platforms i.e ia64 and powerpc. >> >> https://patchwork.kernel.org/project/linux-mm/patch/1613024531-19040-3-git-send-email-anshuman.khandual@arm.com/ >> >> arch/ia64/Kconfig | 6 +----- >> arch/powerpc/Kconfig | 6 +----- >> mm/Kconfig | 8 ++++++++ >> 3 files changed, 10 insertions(+), 10 deletions(-) >> >> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig >> index 2ad7a8d29fcc..6b3e3f6c29ae 100644 >> --- a/arch/ia64/Kconfig >> +++ b/arch/ia64/Kconfig >> @@ -32,6 +32,7 @@ config IA64 >> select TTY >> select HAVE_ARCH_TRACEHOOK >> select HAVE_VIRT_CPU_ACCOUNTING >> + select HUGETLB_PAGE_SIZE_VARIABLE > > doesn't this need a 'if HUGETLB_PAGE' While making HUGETLB_PAGE_SIZE_VARIABLE a generic option, also made it dependent on HUGETLB_PAGE. Should not that gate HUGETLB_PAGE_SIZE_VARIABLE when HUGETLB_PAGE is not available irrespective of the select statement on the platforms ? > > or did you verify that HUGETLB_PAGE_SIZE_VARIABLE checks are always > nested inside of HUGETLB_PAGE ones? >
On Mon, Mar 01, 2021 at 01:13:41PM +0530, Anshuman Khandual wrote: > > doesn't this need a 'if HUGETLB_PAGE' > > While making HUGETLB_PAGE_SIZE_VARIABLE a generic option, also made it > dependent on HUGETLB_PAGE. Should not that gate HUGETLB_PAGE_SIZE_VARIABLE > when HUGETLB_PAGE is not available irrespective of the select statement on > the platforms ? depends doesn't properly work for variables that are selected.
On 3/1/21 1:23 PM, Christoph Hellwig wrote: > On Mon, Mar 01, 2021 at 01:13:41PM +0530, Anshuman Khandual wrote: >>> doesn't this need a 'if HUGETLB_PAGE' >> >> While making HUGETLB_PAGE_SIZE_VARIABLE a generic option, also made it >> dependent on HUGETLB_PAGE. Should not that gate HUGETLB_PAGE_SIZE_VARIABLE >> when HUGETLB_PAGE is not available irrespective of the select statement on >> the platforms ? > > depends doesn't properly work for variables that are selected. > Alright, will move the HUGETLB_PAGE dependency to platforms while selecting the variable HUGETLB_PAGE_SIZE_VARIABLE.
Hi Anshuman, Thank you for the patch! Yet something to improve: [auto build test ERROR on powerpc/next] [also build test ERROR on linus/master v5.12-rc1 next-20210301] [cannot apply to hnaz-linux-mm/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Anshuman-Khandual/mm-Generalize-HUGETLB_PAGE_SIZE_VARIABLE/20210301-135205 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: ia64-randconfig-r003-20210301 (attached as .config) compiler: ia64-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/fe78e3508e5221ac13aa288136e2a6506211be68 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Anshuman-Khandual/mm-Generalize-HUGETLB_PAGE_SIZE_VARIABLE/20210301-135205 git checkout fe78e3508e5221ac13aa288136e2a6506211be68 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from arch/ia64/include/asm/pgtable.h:154, from include/linux/pgtable.h:6, from include/linux/mm.h:33, from mm/page_alloc.c:19: arch/ia64/include/asm/mmu_context.h: In function 'reload_context': arch/ia64/include/asm/mmu_context.h:127:41: warning: variable 'old_rr4' set but not used [-Wunused-but-set-variable] 127 | unsigned long rr0, rr1, rr2, rr3, rr4, old_rr4; | ^~~~~~~ In file included from include/linux/kconfig.h:7, from <command-line>: mm/page_alloc.c: At top level: >> ./include/generated/autoconf.h:269:36: error: expected identifier or '(' before numeric constant 269 | #define CONFIG_FORCE_MAX_ZONEORDER 11 | ^~ include/linux/mmzone.h:29:19: note: in expansion of macro 'CONFIG_FORCE_MAX_ZONEORDER' 29 | #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/pageblock-flags.h:48:27: note: in expansion of macro 'MAX_ORDER' 48 | #define pageblock_order (MAX_ORDER-1) | ^~~~~~~~~ mm/page_alloc.c:250:14: note: in expansion of macro 'pageblock_order' 250 | unsigned int pageblock_order __read_mostly; | ^~~~~~~~~~~~~~~ mm/page_alloc.c:2618:5: warning: no previous prototype for 'find_suitable_fallback' [-Wmissing-prototypes] 2618 | int find_suitable_fallback(struct free_area *area, unsigned int order, | ^~~~~~~~~~~~~~~~~~~~~~ mm/page_alloc.c:3596:15: warning: no previous prototype for 'should_fail_alloc_page' [-Wmissing-prototypes] 3596 | noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) | ^~~~~~~~~~~~~~~~~~~~~~ mm/page_alloc.c:6257:23: warning: no previous prototype for 'memmap_init' [-Wmissing-prototypes] 6257 | void __meminit __weak memmap_init(unsigned long size, int nid, | ^~~~~~~~~~~ mm/page_alloc.c: In function 'set_pageblock_order': >> mm/page_alloc.c:6798:6: error: 'HPAGE_SHIFT' undeclared (first use in this function); did you mean 'PAGE_SHIFT'? 6798 | if (HPAGE_SHIFT > PAGE_SHIFT) | ^~~~~~~~~~~ | PAGE_SHIFT mm/page_alloc.c:6798:6: note: each undeclared identifier is reported only once for each function it appears in >> mm/page_alloc.c:6799:11: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function) 6799 | order = HUGETLB_PAGE_ORDER; | ^~~~~~~~~~~~~~~~~~ >> mm/page_alloc.c:6808:18: error: lvalue required as left operand of assignment 6808 | pageblock_order = order; | ^ Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for HUGETLB_PAGE_SIZE_VARIABLE Depends on HUGETLB_PAGE Selected by - IA64 vim +/HUGETLB_PAGE_ORDER +6799 mm/page_alloc.c ba72cb8cb0cdc0 Mel Gorman 2007-11-28 6788 d9c2340052278d Mel Gorman 2007-10-16 6789 /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */ 03e85f9d5f1f8c Oscar Salvador 2018-08-21 6790 void __init set_pageblock_order(void) d9c2340052278d Mel Gorman 2007-10-16 6791 { 955c1cd7401565 Andrew Morton 2012-05-29 6792 unsigned int order; 955c1cd7401565 Andrew Morton 2012-05-29 6793 d9c2340052278d Mel Gorman 2007-10-16 6794 /* Check that pageblock_nr_pages has not already been setup */ d9c2340052278d Mel Gorman 2007-10-16 6795 if (pageblock_order) d9c2340052278d Mel Gorman 2007-10-16 6796 return; d9c2340052278d Mel Gorman 2007-10-16 6797 955c1cd7401565 Andrew Morton 2012-05-29 @6798 if (HPAGE_SHIFT > PAGE_SHIFT) 955c1cd7401565 Andrew Morton 2012-05-29 @6799 order = HUGETLB_PAGE_ORDER; 955c1cd7401565 Andrew Morton 2012-05-29 6800 else 955c1cd7401565 Andrew Morton 2012-05-29 6801 order = MAX_ORDER - 1; 955c1cd7401565 Andrew Morton 2012-05-29 6802 d9c2340052278d Mel Gorman 2007-10-16 6803 /* d9c2340052278d Mel Gorman 2007-10-16 6804 * Assume the largest contiguous order of interest is a huge page. 955c1cd7401565 Andrew Morton 2012-05-29 6805 * This value may be variable depending on boot parameters on IA64 and 955c1cd7401565 Andrew Morton 2012-05-29 6806 * powerpc. d9c2340052278d Mel Gorman 2007-10-16 6807 */ d9c2340052278d Mel Gorman 2007-10-16 @6808 pageblock_order = order; d9c2340052278d Mel Gorman 2007-10-16 6809 } d9c2340052278d Mel Gorman 2007-10-16 6810 #else /* CONFIG_HUGETLB_PAGE_SIZE_VARIABLE */ d9c2340052278d Mel Gorman 2007-10-16 6811 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On 3/1/21 3:22 PM, kernel test robot wrote: > Hi Anshuman, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on powerpc/next] > [also build test ERROR on linus/master v5.12-rc1 next-20210301] > [cannot apply to hnaz-linux-mm/master] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch] > > url: https://github.com/0day-ci/linux/commits/Anshuman-Khandual/mm-Generalize-HUGETLB_PAGE_SIZE_VARIABLE/20210301-135205 > base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next > config: ia64-randconfig-r003-20210301 (attached as .config) > compiler: ia64-linux-gcc (GCC) 9.3.0 > reproduce (this is a W=1 build): > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # https://github.com/0day-ci/linux/commit/fe78e3508e5221ac13aa288136e2a6506211be68 > git remote add linux-review https://github.com/0day-ci/linux > git fetch --no-tags linux-review Anshuman-Khandual/mm-Generalize-HUGETLB_PAGE_SIZE_VARIABLE/20210301-135205 > git checkout fe78e3508e5221ac13aa288136e2a6506211be68 > # save the attached .config to linux build tree > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@intel.com> > > All errors (new ones prefixed by >>): > > In file included from arch/ia64/include/asm/pgtable.h:154, > from include/linux/pgtable.h:6, > from include/linux/mm.h:33, > from mm/page_alloc.c:19: > arch/ia64/include/asm/mmu_context.h: In function 'reload_context': > arch/ia64/include/asm/mmu_context.h:127:41: warning: variable 'old_rr4' set but not used [-Wunused-but-set-variable] > 127 | unsigned long rr0, rr1, rr2, rr3, rr4, old_rr4; > | ^~~~~~~ > In file included from include/linux/kconfig.h:7, > from <command-line>: > mm/page_alloc.c: At top level: >>> ./include/generated/autoconf.h:269:36: error: expected identifier or '(' before numeric constant > 269 | #define CONFIG_FORCE_MAX_ZONEORDER 11 > | ^~ > include/linux/mmzone.h:29:19: note: in expansion of macro 'CONFIG_FORCE_MAX_ZONEORDER' > 29 | #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > include/linux/pageblock-flags.h:48:27: note: in expansion of macro 'MAX_ORDER' > 48 | #define pageblock_order (MAX_ORDER-1) > | ^~~~~~~~~ > mm/page_alloc.c:250:14: note: in expansion of macro 'pageblock_order' > 250 | unsigned int pageblock_order __read_mostly; > | ^~~~~~~~~~~~~~~ > mm/page_alloc.c:2618:5: warning: no previous prototype for 'find_suitable_fallback' [-Wmissing-prototypes] > 2618 | int find_suitable_fallback(struct free_area *area, unsigned int order, > | ^~~~~~~~~~~~~~~~~~~~~~ > mm/page_alloc.c:3596:15: warning: no previous prototype for 'should_fail_alloc_page' [-Wmissing-prototypes] > 3596 | noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) > | ^~~~~~~~~~~~~~~~~~~~~~ > mm/page_alloc.c:6257:23: warning: no previous prototype for 'memmap_init' [-Wmissing-prototypes] > 6257 | void __meminit __weak memmap_init(unsigned long size, int nid, > | ^~~~~~~~~~~ > mm/page_alloc.c: In function 'set_pageblock_order': >>> mm/page_alloc.c:6798:6: error: 'HPAGE_SHIFT' undeclared (first use in this function); did you mean 'PAGE_SHIFT'? > 6798 | if (HPAGE_SHIFT > PAGE_SHIFT) > | ^~~~~~~~~~~ > | PAGE_SHIFT > mm/page_alloc.c:6798:6: note: each undeclared identifier is reported only once for each function it appears in >>> mm/page_alloc.c:6799:11: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function) > 6799 | order = HUGETLB_PAGE_ORDER; > | ^~~~~~~~~~~~~~~~~~ >>> mm/page_alloc.c:6808:18: error: lvalue required as left operand of assignment > 6808 | pageblock_order = order; > | ^ > > Kconfig warnings: (for reference only) > WARNING: unmet direct dependencies detected for HUGETLB_PAGE_SIZE_VARIABLE > Depends on HUGETLB_PAGE > Selected by > - IA64 This shows that HUGETLB_PAGE_SIZE_VARIABLE could be selected without HUGETLB_PAGE being enabled, which was not intended. The dependency on HUGETLB_PAGE need to be explicit for HUGETLB_PAGE_SIZE_VARIABLE.
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 2ad7a8d29fcc..6b3e3f6c29ae 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -32,6 +32,7 @@ config IA64 select TTY select HAVE_ARCH_TRACEHOOK select HAVE_VIRT_CPU_ACCOUNTING + select HUGETLB_PAGE_SIZE_VARIABLE select VIRT_TO_BUS select GENERIC_IRQ_PROBE select GENERIC_PENDING_IRQ if SMP @@ -82,11 +83,6 @@ config STACKTRACE_SUPPORT config GENERIC_LOCKBREAK def_bool n -config HUGETLB_PAGE_SIZE_VARIABLE - bool - depends on HUGETLB_PAGE - default y - config GENERIC_CALIBRATE_DELAY bool default y diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 3778ad17f56a..b8565bed284f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -232,6 +232,7 @@ config PPC select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP + select HUGETLB_PAGE_SIZE_VARIABLE if PPC_BOOK3S_64 select MMU_GATHER_RCU_TABLE_FREE select MMU_GATHER_PAGE_SIZE select HAVE_REGS_AND_STACK_ACCESS_API @@ -416,11 +417,6 @@ config HIGHMEM source "kernel/Kconfig.hz" -config HUGETLB_PAGE_SIZE_VARIABLE - bool - depends on HUGETLB_PAGE && PPC_BOOK3S_64 - default y - config MATH_EMULATION bool "Math emulation" depends on 4xx || PPC_8xx || PPC_MPC832x || BOOKE diff --git a/mm/Kconfig b/mm/Kconfig index 24c045b24b95..e604a87862a4 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -274,6 +274,14 @@ config ARCH_ENABLE_HUGEPAGE_MIGRATION config ARCH_ENABLE_THP_MIGRATION bool +config HUGETLB_PAGE_SIZE_VARIABLE + def_bool n + depends on HUGETLB_PAGE + help + When there are multiple HugeTLB sizes available on a platform + and pageblock_order could then be a dynamic value instead of + standard HUGETLB_PAGE_ORDER. + config CONTIG_ALLOC def_bool (MEMORY_ISOLATION && COMPACTION) || CMA
HUGETLB_PAGE_SIZE_VARIABLE need not be defined for each individual platform subscribing it. Instead just make it generic. Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Christoph Hellwig <hch@lst.de> Cc: linux-ia64@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Suggested-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- This change was originally suggested in an earilier discussion. This applies on v5.12-rc1 and has been build tested on all applicable platforms i.e ia64 and powerpc. https://patchwork.kernel.org/project/linux-mm/patch/1613024531-19040-3-git-send-email-anshuman.khandual@arm.com/ arch/ia64/Kconfig | 6 +----- arch/powerpc/Kconfig | 6 +----- mm/Kconfig | 8 ++++++++ 3 files changed, 10 insertions(+), 10 deletions(-)