mmap()/shmget(): use Linux default huge page size when not specified

Change-Id: I8a9e3bed65ac1902adfaeaa254597dd30f540319
This commit is contained in:
Balazs Gerofi
2019-06-05 16:07:34 +09:00
committed by Masamichi Takagi
parent e9955a4bba
commit 089b443aaf
4 changed files with 12 additions and 5 deletions

View File

@ -1940,7 +1940,8 @@ SYSCALL_DECLARE(mmap)
if (hugeshift == 0) {
/* default hugepage size */
flags |= MAP_HUGE_SECOND_BLOCK;
flags |= ihk_mc_get_linux_default_huge_page_shift() <<
MAP_HUGE_SHIFT;
} else if ((first_level_block_support &&
hugeshift == MAP_HUGE_FIRST_BLOCK) ||
(first_level_block_support &&
@ -2017,7 +2018,8 @@ SYSCALL_DECLARE(shmget)
if (hugeshift == 0) {
/* default hugepage size */
shmflg |= SHM_HUGE_SECOND_BLOCK;
shmflg |= ihk_mc_get_linux_default_huge_page_shift() <<
MAP_HUGE_SHIFT;
} else if ((first_level_block_support &&
hugeshift == SHM_HUGE_FIRST_BLOCK) ||
(first_level_block_support &&

View File

@ -1683,7 +1683,9 @@ SYSCALL_DECLARE(mmap)
if (flags & MAP_HUGETLB) {
switch (flags & (0x3F << MAP_HUGE_SHIFT)) {
case 0:
flags |= MAP_HUGE_2MB; /* default hugepage size */
/* default hugepage size */
flags |= ihk_mc_get_linux_default_huge_page_shift() <<
MAP_HUGE_SHIFT;
break;
case MAP_HUGE_2MB:
@ -1785,7 +1787,9 @@ SYSCALL_DECLARE(shmget)
int hugeshift = shmflg & (0x3F << SHM_HUGE_SHIFT);
if (hugeshift == 0) {
shmflg |= SHM_HUGE_2MB; /* default hugepage size */
/* default hugepage size */
shmflg |= ihk_mc_get_linux_default_huge_page_shift() <<
MAP_HUGE_SHIFT;
} else if (hugeshift == SHM_HUGE_2MB ||
hugeshift == SHM_HUGE_1GB) {
/*nop*/

2
ihk

Submodule ihk updated: ab078956b2...c505d9c25e

View File

@ -211,6 +211,7 @@ struct smp_coreset;
int ihk_mc_get_numa_node(int id, int *linux_numa_id, int *type);
int ihk_mc_get_numa_distance(int i, int j);
int ihk_mc_get_nr_memory_chunks(void);
int ihk_mc_get_linux_default_huge_page_shift(void);
int ihk_mc_get_memory_chunk(int id,
unsigned long *start,
unsigned long *end,