mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-18 01:54:47 +02:00
8261636: The test mapping in hugetlbfs_sanity_check should consider LargePageSizeInBytes
Reviewed-by: tschatzl, iwalulya
This commit is contained in:
parent
702ca6228c
commit
0a7fff46cf
2 changed files with 16 additions and 11 deletions
|
@ -3529,11 +3529,19 @@ bool os::Linux::transparent_huge_pages_sanity_check(bool warn,
|
|||
return result;
|
||||
}
|
||||
|
||||
int os::Linux::hugetlbfs_page_size_flag(size_t page_size) {
|
||||
if (page_size != default_large_page_size()) {
|
||||
return (exact_log2(page_size) << MAP_HUGE_SHIFT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool os::Linux::hugetlbfs_sanity_check(bool warn, size_t page_size) {
|
||||
bool result = false;
|
||||
void *p = mmap(NULL, page_size, PROT_READ|PROT_WRITE,
|
||||
MAP_ANONYMOUS|MAP_PRIVATE|MAP_HUGETLB,
|
||||
-1, 0);
|
||||
|
||||
// Include the page size flag to ensure we sanity check the correct page size.
|
||||
int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_HUGETLB | hugetlbfs_page_size_flag(page_size);
|
||||
void *p = mmap(NULL, page_size, PROT_READ|PROT_WRITE, flags, -1, 0);
|
||||
|
||||
if (p != MAP_FAILED) {
|
||||
// We don't know if this really is a huge page or not.
|
||||
|
@ -3980,10 +3988,9 @@ char* os::Linux::reserve_memory_special_huge_tlbfs_only(size_t bytes,
|
|||
|
||||
int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
|
||||
int flags = MAP_PRIVATE|MAP_ANONYMOUS|MAP_HUGETLB;
|
||||
// Ensure the correct page size flag is used when needed.
|
||||
flags |= hugetlbfs_page_size_flag(os::large_page_size());
|
||||
|
||||
if (os::large_page_size() != default_large_page_size()) {
|
||||
flags |= (exact_log2(os::large_page_size()) << MAP_HUGE_SHIFT);
|
||||
}
|
||||
char* addr = (char*)::mmap(req_addr, bytes, prot, flags, -1, 0);
|
||||
|
||||
if (addr == MAP_FAILED) {
|
||||
|
@ -4053,11 +4060,7 @@ char* os::Linux::reserve_memory_special_huge_tlbfs_mixed(size_t bytes,
|
|||
}
|
||||
|
||||
// Commit large-paged area.
|
||||
flags |= MAP_HUGETLB;
|
||||
|
||||
if (os::large_page_size() != default_large_page_size()) {
|
||||
flags |= (exact_log2(os::large_page_size()) << MAP_HUGE_SHIFT);
|
||||
}
|
||||
flags |= MAP_HUGETLB | hugetlbfs_page_size_flag(os::large_page_size());
|
||||
|
||||
result = ::mmap(lp_start, lp_bytes, prot, flags, -1, 0);
|
||||
if (result == MAP_FAILED) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue