Skip to content

Commit

Permalink
sparc64: Register hugepages during arch init
Browse files Browse the repository at this point in the history
Add hstate for each supported hugepage size using
arch initcall. This change fixes some hugepage
parameter parsing inconsistencies:

case 1: no hugepage parameters

 Without hugepage parameters, only a hugepages-8192kB entry is visible
 in sysfs.  It's different from x86_64 where both 2M and 1G hugepage
 sizes are available.

case 2: default_hugepagesz=[64K|256M|2G]

 When specifying only a default_hugepagesz parameter, the default
 hugepage size isn't really changed and it stays at 8M. This is again
 different from x86_64.

Orabug: 25869946

Reviewed-by: Bob Picco <bob.picco@oracle.com>
Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Nitin Gupta authored and David S. Miller committed Jul 20, 2017
1 parent fc290a1 commit 8399e4b
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion arch/sparc/mm/init_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,29 @@ static void __update_mmu_tsb_insert(struct mm_struct *mm, unsigned long tsb_inde
}

#ifdef CONFIG_HUGETLB_PAGE
static void __init add_huge_page_size(unsigned long size)
{
unsigned int order;

if (size_to_hstate(size))
return;

order = ilog2(size) - PAGE_SHIFT;
hugetlb_add_hstate(order);
}

static int __init hugetlbpage_init(void)
{
add_huge_page_size(1UL << HPAGE_64K_SHIFT);
add_huge_page_size(1UL << HPAGE_SHIFT);
add_huge_page_size(1UL << HPAGE_256MB_SHIFT);
add_huge_page_size(1UL << HPAGE_2GB_SHIFT);

return 0;
}

arch_initcall(hugetlbpage_init);

static int __init setup_hugepagesz(char *string)
{
unsigned long long hugepage_size;
Expand Down Expand Up @@ -364,7 +387,7 @@ static int __init setup_hugepagesz(char *string)
goto out;
}

hugetlb_add_hstate(hugepage_shift - PAGE_SHIFT);
add_huge_page_size(hugepage_size);
rc = 1;

out:
Expand Down

0 comments on commit 8399e4b

Please sign in to comment.