SCD_MSG_SCHEDULE_PROCESS: stay on current CPU if set in process' CPU mask

Change-Id: I347fe61f8123792648747ec9bf856a9340ea9d9b
This commit is contained in:
Balazs Gerofi
2021-03-03 14:45:13 +09:00
committed by Masamichi Takagi
parent eca107f52d
commit 1070387ed2
2 changed files with 9 additions and 6 deletions

View File

@ -2646,7 +2646,7 @@ int main(int argc, char **argv)
}
/* Partitioned execution, obtain CPU set */
if (nr_processes > 0) {
if (!target_core && nr_processes > 0) {
struct get_cpu_set_arg cpu_set_arg;
int mcexec_linux_numa = 0;
int ikc_mapped = 0;

View File

@ -758,11 +758,14 @@ static int syscall_packet_handler(struct ihk_ikc_channel_desc *c,
case SCD_MSG_SCHEDULE_PROCESS:
thread = (struct thread *)packet->arg;
cpuid = obtain_clone_cpuid(&thread->cpu_set, 0);
if (cpuid == -1) {
kprintf("No CPU available\n");
ret = -1;
break;
cpuid = ihk_mc_get_processor_id();
if (!CPU_ISSET(cpuid, &thread->cpu_set)) {
cpuid = obtain_clone_cpuid(&thread->cpu_set, 0);
if (cpuid == -1) {
kprintf("No CPU available\n");
ret = -1;
break;
}
}
dkprintf("SCD_MSG_SCHEDULE_PROCESS: %lx\n", packet->arg);