6b031c5472
uti: Fix condition for pthread_join of mcexec threads
...
Change-Id: Iaeee91c197b84436f84ce4380768aa79e7f9419e
2018-09-04 19:53:02 +09:00
e42c414454
uti: Hook system calls by binary-patching glibc
...
(1) Add --enable-uti option. The binary-patch library is
preloaded with this option.
(2) Binary-patching is done by syscall_intercept developed by Intel
This commit includes the following fixes:
(1) Fix do_exit() and terminate() handling
(2) Fix timing of killing mcexec threads when McKernel thread calls terminate()
Change-Id: Iad885e1e5540ed79f0808debd372463e3b8fecea
2018-09-04 19:53:02 +09:00
e613483bee
uti: Add system call profile
2018-09-04 19:53:02 +09:00
c0271f4727
Add debug messages for per-process data
2018-09-04 19:53:02 +09:00
4969762f15
uti: Add usage of uti specific options to mcexec
2018-09-04 19:53:02 +09:00
8c11daf726
uti: Fix signal relay from mcexec to McKernel
...
Change-Id: I2ffd8049a0fb1637cfc6bab7fe24c6a85e5e53fc
2018-09-04 19:53:01 +09:00
5cb8a1f10f
uti: Workaround not to share CPU with OpenMP threads
...
* Assign uti thread to the last idle CPU so that it's not shared with
an OpenMP thread
Change-Id: Ia42cae056ce81fde9b6dab6286b39a52f3c9e172
2018-09-04 19:53:01 +09:00
b6ab5911b7
uti: Identify uti thread by clone count
...
--uti-thread-count <count> is added to mcexec.
Change-Id: Id9ec464412a5bb71e4d9e87d05f79de22d35b067
2018-09-04 19:53:01 +09:00
b0d7f890d0
uti: Reverse-offload msync()
2018-09-04 19:53:01 +09:00
b9c0cdddab
uti: Cosmetic change
2018-09-04 19:52:14 +09:00
7ee7dd5e2c
uti: Allow tracer to call release_handler() for the main process
...
Change-Id: I934a6eefbcb87473e87c109d6b4d32c7ab486894
2018-09-04 19:52:14 +09:00
07db4a80a7
__do_in_kernel_syscall: Move ihk_ikc_release_packet from mcexec_wait_syscall
...
Change-Id: Ieeb5fda42dbddc9da27242f4b547c2143659f97a
2018-09-04 19:52:14 +09:00
f04e5c24ab
uti: Don't call mcexec_terminate_thread() when McKernel asks mcexec to interrupt system call
2018-09-04 19:52:14 +09:00
b8bacdd2de
Reference counting per-thread data
...
It is accompanied by the following fixes:
(1) Fix put ppd locations in mcexec_wait_syscall()
(2) Move put ptd to end of mcexec_terminate_thread_unsafe() and mcexec_ret_syscall()
(3) Add debug messages for ptd add/get/put
(4) Fix ptd-add/get/put matching in mcexec_wait_syscall()
* Skip put when woken-up from wait_event_interruptible() by signal
Change-Id: Ib9be3f5e62a7a370197cb36c9fa7c4d79f44c314
2018-09-04 19:52:14 +09:00
a121ffc785
uti: Release packet of reply from McKernel in backward_offload()
2018-09-04 19:52:14 +09:00
88f9693390
uti: Return -ENOSYS without offloading for set_robust_list()
...
Change-Id: I43466e3850fd2ad68e5754d1d460438fa47f3ed4
2018-09-04 19:52:13 +09:00
af7f61db49
uti: mcexec: Fix error check of pthread_detach
...
Change-Id: Idda8e060641bbd7b01c50163140a2c5f7466d193
2018-09-04 19:52:13 +09:00
ee299b5780
uti: Check size of syscall arguments for syscall_intercept
...
Change-Id: I747b90e1f521b08266cfc021ef4b23e2e3c7ba4c
2018-09-04 19:52:13 +09:00
c60a778c8d
uti: Zero-clear struct mckernel_exec_file before initialization
...
Change-Id: I315008b7f5c9e66a93b80da87d1a6332d717c2aa
2018-09-04 19:52:13 +09:00
25a129ea6a
uti: Disable jumping to McKernel futex code
2018-09-04 19:52:13 +09:00
8e9924c523
uti: Lock per_thread_data_hash_lock in mcctrl_put_per_proc_data()
2018-09-04 19:52:13 +09:00
c71291a429
mcctrl: Add mcexec_terminate_thread_unsafe()
...
Change-Id: I6ca54cdac2ab9449d40b22f7329f1a215e5aa33b
2018-09-04 19:52:13 +09:00
ba93b83d68
uti: Add __user to mcexec_terminate_thread argument
...
Change-Id: Ic96a91e6a892a1bd2f1d333580e28bced6a40dc0
2018-09-04 19:52:13 +09:00
c2f41ca9ad
uti: Replace hand-made list of host_threads with Linux macro
...
Change-Id: Ib46cc9fcdd2854b7bbe21c2cc885beeb22d16dd2
2018-09-04 19:52:13 +09:00
062d7ecae3
uti: Use copy_from_user() in mcexec_terminate_thread()
2018-09-04 19:52:12 +09:00
58d038fcac
uti: Fix wrong argument passed to ihk_ikc_release_packet() in mcexec_terminate_thread()
2018-09-04 19:52:12 +09:00
a6198f267b
uti: Offload set_robust_list to McKernel
2018-09-04 19:52:12 +09:00
5e78bd85ab
uti: Fix tracer exit code for the case when create_tracer() isn't called
2018-09-04 19:52:12 +09:00
85c0c8a01f
uti: Add debug messages for syscall
...
Change-Id: I2f96e71d5384f883f7dc568122c57d92bc1cd818
2018-09-04 19:52:12 +09:00
e29f579061
uti: Prevent user space vma from getting copied when forking
2018-09-04 19:52:12 +09:00
63703589e5
uti: Clear user space PTEs after first fork in create_tracer()
...
Change-Id: I60755f0cb5e84c3a5a5cd91515411a30f0995822
2018-09-04 19:52:12 +09:00
5c8c1986b5
uti: Add comment on ppd life cycle
...
Change-Id: Id16cf036b2d919444e8634b536fd701d996bcef2
2018-09-04 19:52:12 +09:00
e4370d235c
uti: Make tracer not call mcexec_terminate_thread() when tracee is killed by signal
...
Change-Id: I5878c7d623ce182a7cb9578c9d5c430c1bee8e1e
2018-09-04 19:52:12 +09:00
56da7e2de9
uti: Allocate memory area directly to uti_desc->wp
...
Change-Id: Ia5a1dbf56b937d9d05cd7fa1c5eec4a5b4b7b196
2018-09-04 19:52:11 +09:00
35300e7b4f
uti: Create tracer when forking
...
Change-Id: Ic66cf6289ac6f32a884ba1266e641ce61620a239
2018-09-04 19:52:11 +09:00
439dc0928b
uti: Streamline syscall_backward()
2018-09-04 19:52:11 +09:00
4b3e58fd3d
uti: Call terminate only when exit_group is called
...
Tracer tells McKernel side to call do_exit() in WIFSIGNALED case.
Change-Id: If85c6cbb4856036b406b11335f1384e57f26292d
2018-09-04 19:52:11 +09:00
b7cdbd6c42
uti: Enforce mcexec is destroyed and then McKernel process is destroyed
2018-09-04 19:52:11 +09:00
77f5cac2bf
uti: Make tracer exit when not used
...
Change-Id: I3d3b2f92fa2b160ffce633c46d1b60e9079e7f1b
2018-09-04 19:52:11 +09:00
9102b176c4
uti: Make per_proc_data of tracee survive over the signal-kill of the tracee
...
Change-Id: I8ff1dddb526ef2fd948cfe1b8f3aa8403c2006d6
2018-09-04 19:52:11 +09:00
d24b7585b7
uti: Make tracee pthread-detached
...
Change-Id: I672ee18739b956980901b63e55ee3ebc192b4e56
2018-09-04 19:52:11 +09:00
52afbbbc98
uti: Call into McKernel futex()
...
(1) Masquerade clv
(2) Fix timeout
(3) Let mcexec thread with the same tid as McKernel thread migrating
to Linux handles the migration request
(4) Call create_tracer() before creating proxy related objects
Change-Id: I6b2689b70db49827f10aa7d5a4c581aa81319b55
2018-09-04 19:52:10 +09:00
460917c4a0
remote_page_fault,syscall_backward: Zero-clear waitq entry
...
Change-Id: I151a35004183e911aaba766a8749830e1768bfe6
2018-09-04 19:52:10 +09:00
7803468afe
remote_page_fault,syscall_backward: Retry when interrupted by signal
...
Change-Id: Ic7d72ad9ca32bb3c8e3522e00fef1d98caf3c049
2018-09-04 19:52:10 +09:00
8f2c7d2265
Fix thread-safety issue in rus_vm_fault
...
Change-Id: I8640a8e0de8a0dfaee700b25e5f9e2941ac98fc8
2018-09-04 19:52:10 +09:00
5a7ca14fcc
rus_vm_fault: Return VM_FAULT_SIGBUS when per-process data is not found
2018-09-04 19:52:10 +09:00
d7b882855a
Correct comments in declaration of struct ikc_scd_packet
2018-09-04 19:52:10 +09:00
2337832e4c
pager_req_release(): Correct debug messages
2018-09-04 19:52:10 +09:00
82914c6a2e
remote_page_fault: Retry when interrupted
...
Change-Id: Ib71a87ad03420e1918dc97da43351cb93e7d0754
2018-09-04 19:51:11 +09:00
f127dfdf1e
mcexec_create_per_process_data: Zero ppd on allocation
...
Change-Id: I06306f30ce30ad6ddc6e8b8cab46ee39be0e4940
2018-09-04 19:51:11 +09:00