ihk_mc_get_ikc_cpu(): Get IKC destination CPU
This commit is contained in:
16
kernel/ap.c
16
kernel/ap.c
@ -32,11 +32,11 @@
|
|||||||
//#define DEBUG_PRINT_AP
|
//#define DEBUG_PRINT_AP
|
||||||
|
|
||||||
#ifdef DEBUG_PRINT_AP
|
#ifdef DEBUG_PRINT_AP
|
||||||
#define dkprintf(...) kprintf(__VA_ARGS__)
|
#define dkprintf(...) do { kprintf(__VA_ARGS__); } while (0)
|
||||||
#define ekprintf(...) kprintf(__VA_ARGS__)
|
#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0)
|
||||||
#else
|
#else
|
||||||
#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0)
|
#define dkprintf(...) do { } while (0)
|
||||||
#define ekprintf(...) kprintf(__VA_ARGS__)
|
#define ekprintf(...) do { kprintf(__VA_ARGS__); } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int num_processors = 1;
|
int num_processors = 1;
|
||||||
@ -48,7 +48,6 @@ extern struct ihk_os_monitor *monitor;
|
|||||||
|
|
||||||
static void ap_wait(void)
|
static void ap_wait(void)
|
||||||
{
|
{
|
||||||
struct ihk_mc_cpu_info *cpu_info = ihk_mc_get_cpu_info();
|
|
||||||
init_tick();
|
init_tick();
|
||||||
while (ap_stop) {
|
while (ap_stop) {
|
||||||
barrier();
|
barrier();
|
||||||
@ -62,10 +61,13 @@ static void ap_wait(void)
|
|||||||
|
|
||||||
if (find_command_line("hidos")) {
|
if (find_command_line("hidos")) {
|
||||||
mcs_lock_node_t mcs_node;
|
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);
|
mcs_lock_lock_noirq(&ap_syscall_semaphore, &mcs_node);
|
||||||
init_host_ikc2mckernel();
|
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);
|
mcs_lock_unlock_noirq(&ap_syscall_semaphore, &mcs_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,9 +41,11 @@
|
|||||||
//#define DEBUG_PRINT_INIT
|
//#define DEBUG_PRINT_INIT
|
||||||
|
|
||||||
#ifdef 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
|
#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
|
#endif
|
||||||
|
|
||||||
int osnum = 0;
|
int osnum = 0;
|
||||||
@ -360,7 +362,6 @@ extern int num_processors;
|
|||||||
|
|
||||||
static void post_init(void)
|
static void post_init(void)
|
||||||
{
|
{
|
||||||
struct ihk_mc_cpu_info *cpu_info = ihk_mc_get_cpu_info();
|
|
||||||
cpu_enable_interrupt();
|
cpu_enable_interrupt();
|
||||||
|
|
||||||
while (!host_ikc_inited) {
|
while (!host_ikc_inited) {
|
||||||
@ -369,8 +370,12 @@ static void post_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (find_command_line("hidos")) {
|
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_ikc2mckernel();
|
||||||
init_host_ikc2linux(cpu_info->ikc_cpus[ihk_mc_get_processor_id()]);
|
init_host_ikc2linux(ikc_cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
arch_setup_vdso();
|
arch_setup_vdso();
|
||||||
|
|||||||
@ -62,6 +62,7 @@ int ihk_mc_get_nr_cores();
|
|||||||
int ihk_mc_get_nr_linux_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 ihk_mc_get_core(int id, unsigned long *linux_core_id, unsigned long *apic_id,
|
||||||
int *numa_id);
|
int *numa_id);
|
||||||
|
int ihk_mc_get_ikc_cpu(int id);
|
||||||
int ihk_mc_get_apicid(int linux_core_id);
|
int ihk_mc_get_apicid(int linux_core_id);
|
||||||
|
|
||||||
void ihk_mc_delay_us(int us);
|
void ihk_mc_delay_us(int us);
|
||||||
|
|||||||
Reference in New Issue
Block a user