From 7145c4d3834ccace12652e5a0324794b18a7c6f2 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Tue, 15 Dec 2020 09:08:13 +0900 Subject: [PATCH] TO RESET: stack changes Change-Id: I325420701dfa5e9eac294be086a9d1e7326d95bc --- executer/kernel/mcctrl/arch/arm64/archdeps.c | 9 +++++++++ kernel/hugefileobj.c | 6 ++++++ kernel/mem.c | 4 ++++ kernel/process.c | 8 ++++++++ 4 files changed, 27 insertions(+) diff --git a/executer/kernel/mcctrl/arch/arm64/archdeps.c b/executer/kernel/mcctrl/arch/arm64/archdeps.c index 2b5f9bf8..9472e4ea 100644 --- a/executer/kernel/mcctrl/arch/arm64/archdeps.c +++ b/executer/kernel/mcctrl/arch/arm64/archdeps.c @@ -364,6 +364,15 @@ int translate_rva_to_rpa(ihk_os_t os, unsigned long rpt, unsigned long rva, // page table to translation_table. phys = ihk_device_map_memory(ihk_os_to_dev(os), rpt, PAGE_SIZE); +#ifdef ENABLE_FUGAKU_HACKS + if (!phys) { + pr_err("%s(): ERROR: VA: 0x%lx, rpt is NULL for PID %d\n", + __func__, rva, task_tgid_vnr(current)); + error = -EFAULT; + goto out; + } +#endif + tbl = ihk_device_map_virtual(ihk_os_to_dev(os), phys, PAGE_SIZE, NULL, 0); rpa = (unsigned long)tbl->tt_pa; diff --git a/kernel/hugefileobj.c b/kernel/hugefileobj.c index 07348992..883bf3de 100644 --- a/kernel/hugefileobj.c +++ b/kernel/hugefileobj.c @@ -295,7 +295,13 @@ int hugefileobj_create(struct memobj *memobj, size_t len, off_t off, int pgind; int npages; +#ifndef ENABLE_FUGAKU_HACKS for (pgind = 0; pgind < obj->nr_pages; ++pgind) { +#else + /* Map in only the last 8 pages */ + for (pgind = ((obj->nr_pages > 8) ? (obj->nr_pages - 8) : 0); + pgind < obj->nr_pages; ++pgind) { +#endif if (obj->pages[pgind]) { continue; } diff --git a/kernel/mem.c b/kernel/mem.c index 377c3315..53da5cdc 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -747,7 +747,11 @@ distance_based: } else { if (i == 0) +#ifndef ENABLE_FUGAKU_HACKS kprintf("%s: distance: CPU @ node %d failed to allocate " +#else + dkprintf("%s: distance: CPU @ node %d failed to allocate " +#endif "%d pages from node %d\n", __FUNCTION__, ihk_mc_get_numa_id(), diff --git a/kernel/process.c b/kernel/process.c index c09ad6c2..51c9750d 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2578,6 +2578,14 @@ int init_process_stack(struct thread *thread, struct program_load_desc *pn, __FUNCTION__, size, minsz, ap_flag ? "(IHK_MC_AP_USER)" : ""); +#ifdef ENABLE_FUGAKU_HACKS + /* + * XXX: Fugaku: Fujitsu's runtime remaps the stack + * using hugetlbfs so don't bother allocating too much here.. + */ + minsz = 8*1024*1024; +#endif + stack = ihk_mc_alloc_aligned_pages_user(minsz >> PAGE_SHIFT, USER_STACK_PAGE_P2ALIGN, IHK_MC_AP_NOWAIT | ap_flag,