From 0061adadfb426379965bdda85c3cbc0e0a715629 Mon Sep 17 00:00:00 2001 From: Tomoki Shirasawa Date: Tue, 4 Jul 2017 12:04:37 +0900 Subject: [PATCH] temporary fix for bug #889 --- executer/kernel/mcctrl/syscall.c | 3 --- kernel/syscall.c | 6 ++++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/executer/kernel/mcctrl/syscall.c b/executer/kernel/mcctrl/syscall.c index 6868a569..efabb0bc 100644 --- a/executer/kernel/mcctrl/syscall.c +++ b/executer/kernel/mcctrl/syscall.c @@ -1770,9 +1770,6 @@ void __return_syscall(ihk_os_t os, struct ikc_scd_packet *packet, unsigned long phys; struct syscall_response *res; - if (stid == -1) - return; - phys = ihk_device_map_memory(ihk_os_to_dev(os), packet->resp_pa, sizeof(*res)); res = ihk_device_map_virtual(ihk_os_to_dev(os), diff --git a/kernel/syscall.c b/kernel/syscall.c index 208faae6..e60ba8a6 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -211,8 +211,7 @@ long do_syscall(struct syscall_request *req, int cpu, int pid) send_syscall(req, cpu, pid, &res); if (req->rtid == -1) { - rc = 0; - goto out; + preempt_disable(); } dkprintf("%s: syscall num: %d waiting for Linux.. \n", @@ -363,6 +362,9 @@ long do_syscall(struct syscall_request *req, int cpu, int pid) send_syscall(&req2, cpu, pid, &res); } } + if (req->rtid == -1) { + preempt_enable(); + } dkprintf("%s: syscall num: %d got host reply: %d \n", __FUNCTION__, req->number, res.ret);