mmap()/shmget(): use Linux default huge page size when not specified
Change-Id: I8a9e3bed65ac1902adfaeaa254597dd30f540319
This commit is contained in:
committed by
Masamichi Takagi
parent
e9955a4bba
commit
089b443aaf
@@ -1940,7 +1940,8 @@ SYSCALL_DECLARE(mmap)
|
|||||||
|
|
||||||
if (hugeshift == 0) {
|
if (hugeshift == 0) {
|
||||||
/* default hugepage size */
|
/* 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 &&
|
} else if ((first_level_block_support &&
|
||||||
hugeshift == MAP_HUGE_FIRST_BLOCK) ||
|
hugeshift == MAP_HUGE_FIRST_BLOCK) ||
|
||||||
(first_level_block_support &&
|
(first_level_block_support &&
|
||||||
@@ -2017,7 +2018,8 @@ SYSCALL_DECLARE(shmget)
|
|||||||
|
|
||||||
if (hugeshift == 0) {
|
if (hugeshift == 0) {
|
||||||
/* default hugepage size */
|
/* 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 &&
|
} else if ((first_level_block_support &&
|
||||||
hugeshift == SHM_HUGE_FIRST_BLOCK) ||
|
hugeshift == SHM_HUGE_FIRST_BLOCK) ||
|
||||||
(first_level_block_support &&
|
(first_level_block_support &&
|
||||||
|
|||||||
@@ -1683,7 +1683,9 @@ SYSCALL_DECLARE(mmap)
|
|||||||
if (flags & MAP_HUGETLB) {
|
if (flags & MAP_HUGETLB) {
|
||||||
switch (flags & (0x3F << MAP_HUGE_SHIFT)) {
|
switch (flags & (0x3F << MAP_HUGE_SHIFT)) {
|
||||||
case 0:
|
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;
|
break;
|
||||||
|
|
||||||
case MAP_HUGE_2MB:
|
case MAP_HUGE_2MB:
|
||||||
@@ -1785,7 +1787,9 @@ SYSCALL_DECLARE(shmget)
|
|||||||
int hugeshift = shmflg & (0x3F << SHM_HUGE_SHIFT);
|
int hugeshift = shmflg & (0x3F << SHM_HUGE_SHIFT);
|
||||||
|
|
||||||
if (hugeshift == 0) {
|
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 ||
|
} else if (hugeshift == SHM_HUGE_2MB ||
|
||||||
hugeshift == SHM_HUGE_1GB) {
|
hugeshift == SHM_HUGE_1GB) {
|
||||||
/*nop*/
|
/*nop*/
|
||||||
|
|||||||
2
ihk
2
ihk
Submodule ihk updated: ab078956b2...c505d9c25e
@@ -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_node(int id, int *linux_numa_id, int *type);
|
||||||
int ihk_mc_get_numa_distance(int i, int j);
|
int ihk_mc_get_numa_distance(int i, int j);
|
||||||
int ihk_mc_get_nr_memory_chunks(void);
|
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,
|
int ihk_mc_get_memory_chunk(int id,
|
||||||
unsigned long *start,
|
unsigned long *start,
|
||||||
unsigned long *end,
|
unsigned long *end,
|
||||||
|
|||||||
Reference in New Issue
Block a user