Masamichi Takagi
8f2c7d2265
Fix thread-safety issue in rus_vm_fault
...
Change-Id: I8640a8e0de8a0dfaee700b25e5f9e2941ac98fc8
2018-09-04 19:52:10 +09:00
Masamichi Takagi
5a7ca14fcc
rus_vm_fault: Return VM_FAULT_SIGBUS when per-process data is not found
2018-09-04 19:52:10 +09:00
Masamichi Takagi
2337832e4c
pager_req_release(): Correct debug messages
2018-09-04 19:52:10 +09:00
Masamichi Takagi
82914c6a2e
remote_page_fault: Retry when interrupted
...
Change-Id: Ib71a87ad03420e1918dc97da43351cb93e7d0754
2018-09-04 19:51:11 +09:00
Dominique Martinet
e531ee626e
mcctrl pager: handle pagers more properly
...
the pagers are all destroyed when linux thinks there is no process left,
but there is no synchronisation with mcexec on that and some new process
might have spawned and started using these pagers in the meantime,
leading to weird crashes because an invalid pager was used.
The reason we're cleaning up pagers when no process is left is that
mcctrl does not handle pager_req_release is the linux-side process got
killed or died before the mckernel one for some reason, so:
- move pager_req_release to a new __do_in_kernel_irq_syscall() helper
- have free_all_process_memory_range not set MF_HOST_RELEASED on the
memobj
- just in case, clean up everything like before on mcctrl shutdown
instead of when no process is left.
Change-Id: I53b8b9b81b1e5b807593850af17b5ea5e8471174
Refs: #1154
2018-08-24 09:18:20 +09:00
Dominique Martinet
9b8424523a
mcctrl: remove rus page cache
...
Change-Id: Ieed7a2a0077ffde3fec8a64d2051e56a53924a42
2018-08-23 02:10:44 +00:00
Dominique Martinet
ea35954613
linux side: replace vfs_read by kernel_read
...
vfs_read has been unexported in bd8df82be66 ("fs: unexport vfs_read and vfs_write")
in kernel 4.14.
kernel_read has always™ existed and is actually more appropriate: we can
remove the set_fs calls that are done in kernel_read.
The downside is that the function prototype also changed in 4.14 with
bdd1d2d3d251 ("fs: fix kernel_read prototype")...
(same with kernel_write e13ec939e96b ("fs: fix kernel_write prototype"))
Change-Id: I6f76a6387ae02b4d33bd62952d995a90b1952fc9
2018-08-22 06:27:12 +00:00
Dominique Martinet
e8f8660b73
mcctrl: lookup unexported symbols at runtime
...
Instead of parsing System.map, use kallsyms_lookup_name() to
get unexported symbols addresses at module loading time.
This lets mckernel work with kaslr enabled (it gets enabled by
default from el7.5 onwards)
Change-Id: Ie4349fc1145ebce44f37f1f40c16f9d75584074d
2018-08-08 06:00:20 +00:00
Dominique Martinet
794684985f
mcctrl syscall: remove unused walk page debug function
...
This saves looking up one symbol for a debug function that is not
used anywhere
Change-Id: I6a3a480ce8067b4f6f0faf9aa837119ea46888ad
2018-08-08 05:57:46 +00:00
Dominique Martinet
6cf89076dc
mcctrl handle_mm_fault compat: add el7.5 support
...
Change-Id: I8c7738b70ca914e857be119b7720cdc22e61ae0e
2018-08-08 05:36:35 +00:00
Dominique Martinet
1543119139
mcctrl rus_vm_fault: tpe changed with kernel >= 4.11
...
vma is part of vmf and isn't needed, so type changed (see linux 11bac80
("mm, fs: reduce fault, [...] to take only vmf"))
Change-Id: I4c023e23c7e7416ad2df2dcc0698a0032e574e4c
2018-07-27 02:31:39 +00:00
Dominique Martinet
0a0a78ac2e
mcctrl: replace GFP_TEMPORARY by GFP_KERNEL
...
See linux's commit 0ee931c4 ("mm: treewide: remove GFP_TEMPORARY
allocation flag") for a long explanation, but basically that flag
"is just cargo cult" and should be removed
Change-Id: I2147cd65b6b9ec509a72e11cc3abf1fe1561c10b
2018-07-27 02:31:00 +00:00
Dominique Martinet
dc8d6b740c
pager_req_read: handle short read
...
Change-Id: Iff89046041e012a65c80a29b485ddbb636435dd0
2018-07-26 04:37:54 +00:00
Masamichi Takagi
992705d465
pager_get_path: Append \0 to path
...
Change-Id: Iaabd89a649bb20b37b35cd345da0f468fd5dd0b5
2018-07-10 02:10:19 +00:00
Balazs Gerofi
f148863586
pager_req_map(): do not take mmap_sem if not needed
2018-06-07 07:17:41 +09:00
Balazs Gerofi
ec375da27a
pager_req_create(): prefetch libiomp, libpthread and libc
2018-06-07 07:17:31 +09:00
Balazs Gerofi
f3d18eb9de
fileobj/devobj: record path name (originally by Takagi-san)
2018-05-14 17:46:52 +09:00
Masamichi Takagi
bfb5080b71
pager_req_unmap: Put per-process data at exit
2018-04-10 11:35:03 +09:00
Tomoki Shirasawa
642520f80c
rus_vm_fault: If page fault occurs in a thread that has not processed system call offloading, incorrectly return to normal.
...
refs #923
2018-03-07 10:22:47 +09:00
Balazs Gerofi
a9dfcd9a89
translate_rva_to_rpa(): use 2MB blocks in 1GB pages on x86
2018-01-31 11:16:44 +09:00
Takayuki Okamoto
9989f41fd3
add arm64 support
...
- add arm64 dependent codes with GICv3 and SVE support
- fix bugs based on architecture separation requests
2017-09-05 15:06:27 +09:00
Balazs Gerofi
99ca46663b
mcctrl, mexec: fix a bunch of warnings
2017-09-04 08:53:32 +09:00
Yutaka Ishikawa
236a072311
Add qlmpi and swap to mckernel (This is rebase commit for merging to development)
2017-08-29 15:04:58 +09:00
Masamichi Takagi
74f15783d2
ihk_os_getrusage(): Add per-page-size memory usage accounting
2017-08-17 12:49:34 +09:00
Masamichi Takagi
75e2bb7793
mcctrl: Fix debug messages
2017-08-17 12:49:34 +09:00
Tomoki Shirasawa
831a0637a1
delete debug print
2017-08-01 15:27:51 +09:00
Masamichi Takagi
86dedc32fa
Eliminate Japanese comments
2017-07-15 20:04:16 +09:00
Tomoki Shirasawa
0061adadfb
temporary fix for bug #889
2017-07-04 12:04:37 +09:00
Tomoki Shirasawa
5a9bee55c9
kill system call offloading from interrupt_syscall (tid == -1) change to one sided communication
...
refs #889
2017-07-03 14:48:42 +09:00
Tomoki Shirasawa
07efb3ab9a
support to utility thread offloading
2017-06-27 13:27:09 +09:00
Balazs Gerofi
2afc9d37d1
fix config.h inclusion
2017-06-17 07:05:33 +09:00
Balazs Gerofi
1a853e07d7
rus_vm_fault(): fix misaligned address before accessing PTE
2017-06-14 20:32:03 +09:00
Balazs Gerofi
1f006b2381
remote_page_fault(): free remote PF response packet to avoid memory leak
2017-06-12 22:03:12 +09:00
Balazs Gerofi
c6e3185246
mcctrl: clean up RUS page hash at job completion
2017-06-12 13:04:03 +09:00
Balazs Gerofi
b03f69783a
mcctrl: cleanup devobj pagers in release_handle() to avoid memory leak
2017-06-11 19:13:31 +09:00
Balazs Gerofi
ab915f3331
mcctrl: clean up pagers for file objects to avoid memory leak
2017-06-11 19:11:54 +09:00
Balazs Gerofi
46b48ac59b
__return_syscall(): verify response structure
2017-06-07 17:21:55 +09:00
Balazs Gerofi
446ef0465b
mcctrl: verify ihk_device_map_virtual()'d buffer before accessing
2017-06-07 17:21:55 +09:00
Balazs Gerofi
9b5ccb5a33
Pre-map file mappings from /dev/shm (--mpol-shm-premap mcexec argument)
2017-05-23 20:00:06 +09:00
Balazs Gerofi
1ff0afe6fb
devobj/fileobj: do not try to free memory for device file mappings
2017-01-08 14:16:10 +09:00
Balazs Gerofi
6ad84a96a3
mcexec_syscall(): avoid calling task_pid_nr_ns() in IRQ context
2016-12-26 20:43:17 +09:00
Balazs Gerofi
4667136a4c
mcctrl: refcount per-process data to avoid corrupted syscall request lists
2016-12-23 09:54:15 +09:00
Balazs Gerofi
9635a628a9
fileobj/shmobj/devobj: add file size to memobj
2016-12-19 12:55:12 +09:00
Balazs Gerofi
56ed726a88
pager_req_create(): prefetch for MPI library and zerofill for shm
2016-12-18 21:12:37 +09:00
Balazs Gerofi
bce10e11e4
fileobj: rewrite for scalability using per-file page hash
2016-12-18 21:12:37 +09:00
Ken Sato
02536b7724
Merge remote-tracking branch 'remotes/origin/ikc2'
...
Conflicts:
executer/kernel/mcctrl/syscall.c
It is resolved.
2016-09-27 11:48:12 +09:00
Tomoki Shirasawa
673deadf37
fix syscall return type
2016-09-12 15:40:06 +09:00
Balazs Gerofi
bfbc94dfb0
mcctrl+mcexec: fix per-proc data allocation for fork()
2016-09-02 15:08:00 +09:00
Yoichi Umezawa
782122b681
mcctrl: fix to rus_vm_fault() call by kworker process
2016-08-22 13:00:28 +09:00
Balazs Gerofi
c897a56c34
__notify_syscall_requester(): use CAS or IKC to notify syscall completion
2016-08-16 08:56:05 +09:00