TO RESET: hugefileobj: pre-allocate on mmap
Set this change to "TO RESET" because one of the Fujitsu tests fails. Change-Id: Iddc30e8452b3d39da4975079d0c6a035e4f3dbde
This commit is contained in:
@ -281,6 +281,34 @@ int hugefileobj_create(struct memobj *memobj, size_t len, off_t off,
|
|||||||
virt_addr,
|
virt_addr,
|
||||||
nr_pages,
|
nr_pages,
|
||||||
obj->pgsize);
|
obj->pgsize);
|
||||||
|
|
||||||
|
#ifdef ENABLE_FUGAKU_HACKS
|
||||||
|
{
|
||||||
|
int pgind;
|
||||||
|
int npages;
|
||||||
|
|
||||||
|
for (pgind = 0; pgind < obj->nr_pages; ++pgind) {
|
||||||
|
if (obj->pages[pgind]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
npages = obj->pgsize >> PAGE_SHIFT;
|
||||||
|
obj->pages[pgind] = ihk_mc_alloc_aligned_pages_user(npages,
|
||||||
|
obj->pgshift - PTL1_SHIFT,
|
||||||
|
IHK_MC_AP_NOWAIT | IHK_MC_AP_USER, 0);
|
||||||
|
if (!obj->pages[pgind]) {
|
||||||
|
kprintf("%s: error: could not allocate page for off: %lu"
|
||||||
|
", page size: %lu\n", __func__, off, obj->pgsize);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(obj->pages[pgind], 0, obj->pgsize);
|
||||||
|
dkprintf("%s: obj: 0x%lx, pre-allocated page for off: %lu"
|
||||||
|
" (ind: %d), page size: %lu\n",
|
||||||
|
__func__, obj, off, pgind, obj->pgsize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
obj->memobj.size = len;
|
obj->memobj.size = len;
|
||||||
|
|||||||
Reference in New Issue
Block a user