* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 3:34 [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp Baolin Wang
@ 2022-06-16 8:47 ` kernel test robot
2022-06-16 10:50 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2022-06-16 8:47 UTC (permalink / raw)
To: Baolin Wang, mike.kravetz
Cc: kbuild-all, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, baolin.wang, linux-arm-kernel, linux-kernel,
linux-mm
Hi Baolin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on linus/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/intel-lab-lkp/linux/commits/Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220616/202206161633.yB7NR9sh-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.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/intel-lab-lkp/linux/commit/f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
git checkout f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/mm/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> arch/arm64/mm/hugetlbpage.c:371:15: warning: no previous prototype for 'hugetlb_mask_last_hp' [-Wmissing-prototypes]
371 | unsigned long hugetlb_mask_last_hp(struct hstate *h)
| ^~~~~~~~~~~~~~~~~~~~
vim +/hugetlb_mask_last_hp +371 arch/arm64/mm/hugetlbpage.c
370
> 371 unsigned long hugetlb_mask_last_hp(struct hstate *h)
372 {
373 unsigned long hp_size = huge_page_size(h);
374
375 switch (hp_size) {
376 case PUD_SIZE:
377 return PGDIR_SIZE - PUD_SIZE;
378 case CONT_PMD_SIZE:
379 return PUD_SIZE - CONT_PMD_SIZE;
380 case PMD_SIZE:
381 return PUD_SIZE - PMD_SIZE;
382 case CONT_PTE_SIZE:
383 return PMD_SIZE - CONT_PTE_SIZE;
384 default:
385 break;
386 }
387
388 return ~0UL;
389 }
390
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 3:34 [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp Baolin Wang
2022-06-16 8:47 ` kernel test robot
@ 2022-06-16 10:50 ` kernel test robot
2022-06-16 12:05 ` Baoquan He
2022-06-17 12:17 ` kernel test robot
3 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2022-06-16 10:50 UTC (permalink / raw)
To: Baolin Wang, mike.kravetz
Cc: kbuild-all, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, baolin.wang, linux-arm-kernel, linux-kernel,
linux-mm
Hi Baolin,
I love your patch! Yet something to improve:
[auto build test ERROR on arm64/for-next/core]
[also build test ERROR on linus/master v5.19-rc2 next-20220616]
[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/intel-lab-lkp/linux/commits/Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: arm64-buildonly-randconfig-r001-20220616 (https://download.01.org/0day-ci/archive/20220616/202206161848.w1bWqr7O-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.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/intel-lab-lkp/linux/commit/f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
git checkout f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/mm/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
arch/arm64/mm/hugetlbpage.c:371:15: warning: no previous prototype for 'hugetlb_mask_last_hp' [-Wmissing-prototypes]
371 | unsigned long hugetlb_mask_last_hp(struct hstate *h)
| ^~~~~~~~~~~~~~~~~~~~
arch/arm64/mm/hugetlbpage.c: In function 'hugetlb_mask_last_hp':
>> arch/arm64/mm/hugetlbpage.c:380:9: error: duplicate case value
380 | case PMD_SIZE:
| ^~~~
arch/arm64/mm/hugetlbpage.c:376:9: note: previously used here
376 | case PUD_SIZE:
| ^~~~
vim +380 arch/arm64/mm/hugetlbpage.c
370
371 unsigned long hugetlb_mask_last_hp(struct hstate *h)
372 {
373 unsigned long hp_size = huge_page_size(h);
374
375 switch (hp_size) {
376 case PUD_SIZE:
377 return PGDIR_SIZE - PUD_SIZE;
378 case CONT_PMD_SIZE:
379 return PUD_SIZE - CONT_PMD_SIZE;
> 380 case PMD_SIZE:
381 return PUD_SIZE - PMD_SIZE;
382 case CONT_PTE_SIZE:
383 return PMD_SIZE - CONT_PTE_SIZE;
384 default:
385 break;
386 }
387
388 return ~0UL;
389 }
390
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 3:34 [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp Baolin Wang
2022-06-16 8:47 ` kernel test robot
2022-06-16 10:50 ` kernel test robot
@ 2022-06-16 12:05 ` Baoquan He
2022-06-16 17:35 ` Mike Kravetz
2022-06-17 12:17 ` kernel test robot
3 siblings, 1 reply; 8+ messages in thread
From: Baoquan He @ 2022-06-16 12:05 UTC (permalink / raw)
To: Baolin Wang
Cc: mike.kravetz, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, linux-arm-kernel, linux-kernel, linux-mm
On 06/16/22 at 11:34am, Baolin Wang wrote:
> The HugeTLB address ranges are linearly scanned during fork, unmap and
> remap operations, and the linear scan can skip to the end of range mapped
> by the page table page if hitting a non-present entry, which can help
> to speed linear scanning of the HugeTLB address ranges.
>
> So hugetlb_mask_last_hp() is introduced to help to update the address in
> the loop of HugeTLB linear scanning with getting the last huge page mapped
> by the associated page table page[1], when a non-present entry is encountered.
>
> Considering ARM64 specific cont-pte/pmd size HugeTLB, this patch implemented
> an ARM64 specific hugetlb_mask_last_hp() to help this case.
>
> [1] https://lore.kernel.org/linux-mm/20220527225849.284839-1-mike.kravetz@oracle.com/
>
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> ---
> Note: this patch is based on the series: "hugetlb: speed up linear
> address scanning" from Mike. Mike, please fold it into your series.
> Thanks.
> ---
> arch/arm64/mm/hugetlbpage.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
> index e2a5ec9..958935c 100644
> --- a/arch/arm64/mm/hugetlbpage.c
> +++ b/arch/arm64/mm/hugetlbpage.c
> @@ -368,6 +368,26 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
> return NULL;
> }
>
> +unsigned long hugetlb_mask_last_hp(struct hstate *h)
> +{
> + unsigned long hp_size = huge_page_size(h);
hp_size may not be a good name, it reminds me of hotplug. I would name
it hpage_size even though a little more characters are added.
> +
> + switch (hp_size) {
> + case PUD_SIZE:
> + return PGDIR_SIZE - PUD_SIZE;
> + case CONT_PMD_SIZE:
> + return PUD_SIZE - CONT_PMD_SIZE;
> + case PMD_SIZE:
> + return PUD_SIZE - PMD_SIZE;
> + case CONT_PTE_SIZE:
> + return PMD_SIZE - CONT_PTE_SIZE;
> + default:
> + break;
> + }
> +
> + return ~0UL;
> +}
> +
> pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags)
> {
> size_t pagesize = 1UL << shift;
> --
> 1.8.3.1
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 12:05 ` Baoquan He
@ 2022-06-16 17:35 ` Mike Kravetz
2022-06-17 0:53 ` Baoquan He
0 siblings, 1 reply; 8+ messages in thread
From: Mike Kravetz @ 2022-06-16 17:35 UTC (permalink / raw)
To: Baoquan He
Cc: Baolin Wang, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, linux-arm-kernel, linux-kernel, linux-mm
On 06/16/22 20:05, Baoquan He wrote:
> On 06/16/22 at 11:34am, Baolin Wang wrote:
> > The HugeTLB address ranges are linearly scanned during fork, unmap and
> > remap operations, and the linear scan can skip to the end of range mapped
> > by the page table page if hitting a non-present entry, which can help
> > to speed linear scanning of the HugeTLB address ranges.
> >
> > So hugetlb_mask_last_hp() is introduced to help to update the address in
> > the loop of HugeTLB linear scanning with getting the last huge page mapped
> > by the associated page table page[1], when a non-present entry is encountered.
> >
> > Considering ARM64 specific cont-pte/pmd size HugeTLB, this patch implemented
> > an ARM64 specific hugetlb_mask_last_hp() to help this case.
> >
> > [1] https://lore.kernel.org/linux-mm/20220527225849.284839-1-mike.kravetz@oracle.com/
> >
> > Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> > ---
> > Note: this patch is based on the series: "hugetlb: speed up linear
> > address scanning" from Mike. Mike, please fold it into your series.
> > Thanks.
> > ---
> > arch/arm64/mm/hugetlbpage.c | 20 ++++++++++++++++++++
> > 1 file changed, 20 insertions(+)
> >
> > diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
> > index e2a5ec9..958935c 100644
> > --- a/arch/arm64/mm/hugetlbpage.c
> > +++ b/arch/arm64/mm/hugetlbpage.c
> > @@ -368,6 +368,26 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
> > return NULL;
> > }
> >
> > +unsigned long hugetlb_mask_last_hp(struct hstate *h)
> > +{
> > + unsigned long hp_size = huge_page_size(h);
>
> hp_size may not be a good name, it reminds me of hotplug. I would name
> it hpage_size even though a little more characters are added.
>
How about just hugetlb_mask_last_page? Since the routine is prefixed
with 'hugetlb' and we are passing in a pointer to a hstate, I think there
is enough context to know we are talking about a huge page mask as
opposed to a base page mask.
If OK, I will change the name in my patches and here.
--
Mike Kravetz
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 17:35 ` Mike Kravetz
@ 2022-06-17 0:53 ` Baoquan He
0 siblings, 0 replies; 8+ messages in thread
From: Baoquan He @ 2022-06-17 0:53 UTC (permalink / raw)
To: Mike Kravetz
Cc: Baolin Wang, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, linux-arm-kernel, linux-kernel, linux-mm
On 06/16/22 at 10:35am, Mike Kravetz wrote:
> On 06/16/22 20:05, Baoquan He wrote:
> > On 06/16/22 at 11:34am, Baolin Wang wrote:
> > > The HugeTLB address ranges are linearly scanned during fork, unmap and
> > > remap operations, and the linear scan can skip to the end of range mapped
> > > by the page table page if hitting a non-present entry, which can help
> > > to speed linear scanning of the HugeTLB address ranges.
> > >
> > > So hugetlb_mask_last_hp() is introduced to help to update the address in
> > > the loop of HugeTLB linear scanning with getting the last huge page mapped
> > > by the associated page table page[1], when a non-present entry is encountered.
> > >
> > > Considering ARM64 specific cont-pte/pmd size HugeTLB, this patch implemented
> > > an ARM64 specific hugetlb_mask_last_hp() to help this case.
> > >
> > > [1] https://lore.kernel.org/linux-mm/20220527225849.284839-1-mike.kravetz@oracle.com/
> > >
> > > Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> > > ---
> > > Note: this patch is based on the series: "hugetlb: speed up linear
> > > address scanning" from Mike. Mike, please fold it into your series.
> > > Thanks.
> > > ---
> > > arch/arm64/mm/hugetlbpage.c | 20 ++++++++++++++++++++
> > > 1 file changed, 20 insertions(+)
> > >
> > > diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
> > > index e2a5ec9..958935c 100644
> > > --- a/arch/arm64/mm/hugetlbpage.c
> > > +++ b/arch/arm64/mm/hugetlbpage.c
> > > @@ -368,6 +368,26 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
> > > return NULL;
> > > }
> > >
> > > +unsigned long hugetlb_mask_last_hp(struct hstate *h)
> > > +{
> > > + unsigned long hp_size = huge_page_size(h);
> >
> > hp_size may not be a good name, it reminds me of hotplug. I would name
> > it hpage_size even though a little more characters are added.
> >
>
> How about just hugetlb_mask_last_page? Since the routine is prefixed
> with 'hugetlb' and we are passing in a pointer to a hstate, I think there
> is enough context to know we are talking about a huge page mask as
> opposed to a base page mask.
Agree, hugetlb_mask_last_page looks good to me regarding the function name,
thx.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-16 3:34 [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp Baolin Wang
` (2 preceding siblings ...)
2022-06-16 12:05 ` Baoquan He
@ 2022-06-17 12:17 ` kernel test robot
2022-06-18 3:25 ` Baolin Wang
3 siblings, 1 reply; 8+ messages in thread
From: kernel test robot @ 2022-06-17 12:17 UTC (permalink / raw)
To: Baolin Wang, mike.kravetz
Cc: llvm, kbuild-all, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, baolin.wang, linux-arm-kernel, linux-kernel,
linux-mm
Hi Baolin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on linus/master v5.19-rc2 next-20220617]
[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/intel-lab-lkp/linux/commits/Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
config: arm64-randconfig-r011-20220616 (https://download.01.org/0day-ci/archive/20220617/202206172000.6Fwmo99P-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project f0e608de27b3d568000046eebf3712ab542979d6)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
git checkout f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/mm/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> arch/arm64/mm/hugetlbpage.c:371:15: warning: no previous prototype for function 'hugetlb_mask_last_hp' [-Wmissing-prototypes]
unsigned long hugetlb_mask_last_hp(struct hstate *h)
^
arch/arm64/mm/hugetlbpage.c:371:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
unsigned long hugetlb_mask_last_hp(struct hstate *h)
^
static
1 warning generated.
vim +/hugetlb_mask_last_hp +371 arch/arm64/mm/hugetlbpage.c
370
> 371 unsigned long hugetlb_mask_last_hp(struct hstate *h)
372 {
373 unsigned long hp_size = huge_page_size(h);
374
375 switch (hp_size) {
376 case PUD_SIZE:
377 return PGDIR_SIZE - PUD_SIZE;
378 case CONT_PMD_SIZE:
379 return PUD_SIZE - CONT_PMD_SIZE;
380 case PMD_SIZE:
381 return PUD_SIZE - PMD_SIZE;
382 case CONT_PTE_SIZE:
383 return PMD_SIZE - CONT_PTE_SIZE;
384 default:
385 break;
386 }
387
388 return ~0UL;
389 }
390
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64/hugetlb: Implement arm64 specific hugetlb_mask_last_hp
2022-06-17 12:17 ` kernel test robot
@ 2022-06-18 3:25 ` Baolin Wang
0 siblings, 0 replies; 8+ messages in thread
From: Baolin Wang @ 2022-06-18 3:25 UTC (permalink / raw)
To: kernel test robot, mike.kravetz
Cc: llvm, kbuild-all, songmuchun, akpm, catalin.marinas, will,
anshuman.khandual, linux-arm-kernel, linux-kernel, linux-mm
Hi,
On 6/17/2022 8:17 PM, kernel test robot wrote:
> Hi Baolin,
>
> I love your patch! Perhaps something to improve:
>
> [auto build test WARNING on arm64/for-next/core]
> [also build test WARNING on linus/master v5.19-rc2 next-20220617]
> [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/intel-lab-lkp/linux/commits/Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
> base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
> config: arm64-randconfig-r011-20220616 (https://download.01.org/0day-ci/archive/20220617/202206172000.6Fwmo99P-lkp@intel.com/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project f0e608de27b3d568000046eebf3712ab542979d6)
> 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
> # install arm64 cross compiling tool for clang build
> # apt-get install binutils-aarch64-linux-gnu
> # https://github.com/intel-lab-lkp/linux/commit/f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Baolin-Wang/arm64-hugetlb-Implement-arm64-specific-hugetlb_mask_last_hp/20220616-113640
> git checkout f1309dfbc2b70ec5dd72ac38e95a49b7be42b9b6
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/mm/
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
Thanks for your reporting. However this patch is based on the Mike's
series [1] and has been folded into this series. So just skip testing
this patch separately. Thanks.
https://lore.kernel.org/all/20220616210518.125287-1-mike.kravetz@oracle.com/
^ permalink raw reply [flat|nested] 8+ messages in thread