Re: [PATCH 2/2] arch:mm: Use hugetlb_bad_size
From: Mike Kravetz
Date: Tue Mar 22 2016 - 22:43:00 EST
On 03/22/2016 03:05 AM, Vaishali Thakkar wrote:
> Update the setup_hugepagesz function to call the routine
> hugetlb_bad_size when unsupported hugepage size is found.
>
> Misc:
> - Silent 80 characters warning
>
> Signed-off-by: Vaishali Thakkar <vaishali.thakkar@xxxxxxxxxx>
> Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
> Cc: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx>
> Cc: Hillf Danton <hillf.zj@xxxxxxxxxxxxxxx>
> Cc: Michal Hocko <mhocko@xxxxxxxx>
> Cc: Yaowei Bai <baiyaowei@xxxxxxxxxxxxxxxxxxxx>
> Cc: Dominik Dingel <dingel@xxxxxxxxxxxxxxxxxx>
> Cc: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Cc: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx>
> Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> ---
Looks fine to me,
Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
> - Please note that the patch is tested for x86 only. But as this
> is one line change I just changed them. So, it would be good if
> the patch can be tested for other architectures before adding
> this in to mainline.
> - Not sure if printk related checkpatch.pl warning should be resolved
> with this patch as code is not consistent in architectures. May be
> one separate patch for changing all printk's to pr_<level> kind of
> debugging functions would be good.
> ---
> arch/arm64/mm/hugetlbpage.c | 1 +
> arch/metag/mm/hugetlbpage.c | 1 +
> arch/powerpc/mm/hugetlbpage.c | 7 +++++--
> arch/tile/mm/hugetlbpage.c | 7 ++++++-
> arch/x86/mm/hugetlbpage.c | 1 +
> 5 files changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
> index 589fd28..aa8aee7 100644
> --- a/arch/arm64/mm/hugetlbpage.c
> +++ b/arch/arm64/mm/hugetlbpage.c
> @@ -307,6 +307,7 @@ static __init int setup_hugepagesz(char *opt)
> } else if (ps == PUD_SIZE) {
> hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
> } else {
> + hugetlb_bad_size();
> pr_err("hugepagesz: Unsupported page size %lu K\n", ps >> 10);
> return 0;
> }
> diff --git a/arch/metag/mm/hugetlbpage.c b/arch/metag/mm/hugetlbpage.c
> index b38700a..db1b7da 100644
> --- a/arch/metag/mm/hugetlbpage.c
> +++ b/arch/metag/mm/hugetlbpage.c
> @@ -239,6 +239,7 @@ static __init int setup_hugepagesz(char *opt)
> if (ps == (1 << HPAGE_SHIFT)) {
> hugetlb_add_hstate(HPAGE_SHIFT - PAGE_SHIFT);
> } else {
> + hugetlb_bad_size();
> pr_err("hugepagesz: Unsupported page size %lu M\n",
> ps >> 20);
> return 0;
> diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
> index 6dd272b..a437ff7 100644
> --- a/arch/powerpc/mm/hugetlbpage.c
> +++ b/arch/powerpc/mm/hugetlbpage.c
> @@ -772,8 +772,11 @@ static int __init hugepage_setup_sz(char *str)
>
> size = memparse(str, &str);
>
> - if (add_huge_page_size(size) != 0)
> - printk(KERN_WARNING "Invalid huge page size specified(%llu)\n", size);
> + if (add_huge_page_size(size) != 0) {
> + hugetlb_bad_size();
> + printk(KERN_WARNING "Invalid huge page size specified(%llu)\n",
> + size);
> + }
>
> return 1;
> }
> diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c
> index e212c64..77ceaa3 100644
> --- a/arch/tile/mm/hugetlbpage.c
> +++ b/arch/tile/mm/hugetlbpage.c
> @@ -308,11 +308,16 @@ static bool saw_hugepagesz;
>
> static __init int setup_hugepagesz(char *opt)
> {
> + int rc;
> +
> if (!saw_hugepagesz) {
> saw_hugepagesz = true;
> memset(huge_shift, 0, sizeof(huge_shift));
> }
> - return __setup_hugepagesz(memparse(opt, NULL));
> + rc = __setup_hugepagesz(memparse(opt, NULL));
> + if (rc)
> + hugetlb_bad_size();
> + return rc;
> }
> __setup("hugepagesz=", setup_hugepagesz);
>
> diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
> index 740d7ac..3ec44f8 100644
> --- a/arch/x86/mm/hugetlbpage.c
> +++ b/arch/x86/mm/hugetlbpage.c
> @@ -165,6 +165,7 @@ static __init int setup_hugepagesz(char *opt)
> } else if (ps == PUD_SIZE && cpu_has_gbpages) {
> hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
> } else {
> + hugetlb_bad_size();
> printk(KERN_ERR "hugepagesz: Unsupported page size %lu M\n",
> ps >> 20);
> return 0;
>
--
Mike Kravetz