From 72e3f5ee503050bd1eecbfe8631a359d40c7c9b4 Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Tue, 11 Jul 2017 19:58:10 +0900 Subject: [PATCH] ihk_mc_get_ikc_cpu(): Get IKC destination CPU --- kernel/ap.c | 16 +++++++++------- kernel/init.c | 13 +++++++++---- lib/include/ihk/cpu.h | 1 + 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/kernel/ap.c b/kernel/ap.c index 3e243188..278827ff 100644 --- a/kernel/ap.c +++ b/kernel/ap.c @@ -32,11 +32,11 @@ //#define DEBUG_PRINT_AP #ifdef DEBUG_PRINT_AP -#define dkprintf(...) kprintf(__VA_ARGS__) -#define ekprintf(...) kprintf(__VA_ARGS__) +#define dkprintf(...) do { kprintf(__VA_ARGS__); } while (0) +#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0) #else -#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0) -#define ekprintf(...) kprintf(__VA_ARGS__) +#define dkprintf(...) do { } while (0) +#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0) #endif int num_processors = 1; @@ -48,7 +48,6 @@ extern struct ihk_os_monitor *monitor; static void ap_wait(void) { - struct ihk_mc_cpu_info *cpu_info = ihk_mc_get_cpu_info(); init_tick(); while (ap_stop) { barrier(); @@ -62,10 +61,13 @@ static void ap_wait(void) if (find_command_line("hidos")) { mcs_lock_node_t mcs_node; - + int ikc_cpu = ihk_mc_get_ikc_cpu(ihk_mc_get_processor_id()); + if(ikc_cpu < 0) { + ekprintf("%s,ihk_mc_get_ikc_cpu failed\n", __FUNCTION__); + } mcs_lock_lock_noirq(&ap_syscall_semaphore, &mcs_node); init_host_ikc2mckernel(); - init_host_ikc2linux(cpu_info->ikc_cpus[ihk_mc_get_processor_id()]); + init_host_ikc2linux(ikc_cpu); mcs_lock_unlock_noirq(&ap_syscall_semaphore, &mcs_node); } diff --git a/kernel/init.c b/kernel/init.c index cf8d53ea..6c080d7f 100644 --- a/kernel/init.c +++ b/kernel/init.c @@ -41,9 +41,11 @@ //#define DEBUG_PRINT_INIT #ifdef DEBUG_PRINT_INIT -#define dkprintf kprintf +#define dkprintf(...) do { kprintf(__VA_ARGS__); } while (0) +#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0) #else -#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0) +#define dkprintf(...) do { } while (0) +#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0) #endif int osnum = 0; @@ -360,7 +362,6 @@ extern int num_processors; static void post_init(void) { - struct ihk_mc_cpu_info *cpu_info = ihk_mc_get_cpu_info(); cpu_enable_interrupt(); while (!host_ikc_inited) { @@ -369,8 +370,12 @@ static void post_init(void) } if (find_command_line("hidos")) { + int ikc_cpu = ihk_mc_get_ikc_cpu(ihk_mc_get_processor_id()); + if(ikc_cpu < 0) { + ekprintf("%s,ihk_mc_get_ikc_cpu failed\n", __FUNCTION__); + } init_host_ikc2mckernel(); - init_host_ikc2linux(cpu_info->ikc_cpus[ihk_mc_get_processor_id()]); + init_host_ikc2linux(ikc_cpu); } arch_setup_vdso(); diff --git a/lib/include/ihk/cpu.h b/lib/include/ihk/cpu.h index 75737e69..d4850089 100644 --- a/lib/include/ihk/cpu.h +++ b/lib/include/ihk/cpu.h @@ -62,6 +62,7 @@ int ihk_mc_get_nr_cores(); int ihk_mc_get_nr_linux_cores(); int ihk_mc_get_core(int id, unsigned long *linux_core_id, unsigned long *apic_id, int *numa_id); +int ihk_mc_get_ikc_cpu(int id); int ihk_mc_get_apicid(int linux_core_id); void ihk_mc_delay_us(int us);