From ec5328de690d613fccb45f3c63ad9dd57cb9e859 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Wed, 7 Feb 2018 19:28:52 +0900 Subject: [PATCH] HFI1: refactor sdma_select_user_engine() --- kernel/sdma.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/kernel/sdma.c b/kernel/sdma.c index 5eea9f42..eb3bd3a9 100644 --- a/kernel/sdma.c +++ b/kernel/sdma.c @@ -50,6 +50,16 @@ #include #include +//#define DEBUG_PRINT_SDMA + +#ifdef DEBUG_PRINT_SC +#define dkprintf(...) kprintf(__VA_ARGS__) +#define ekprintf(...) kprintf(__VA_ARGS__) +#else +#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0) +#define ekprintf(...) kprintf(__VA_ARGS__) +#endif + unsigned long hfi1_cap_mask = HFI1_CAP_MASK_DEFAULT; /* must be a power of 2 >= 64 <= 32768 */ @@ -101,6 +111,25 @@ done: return rval; } +int sdma_select_user_engine_idx(void) +{ + int idx = 0; + int idx_start = 0; + int idx_modulo = 16; + + /* Hash on rank if MPI job */ + if (cpu_local_var(current)->proc->nr_processes > 1) { + idx = idx_start + + (cpu_local_var(current)->proc->process_rank % idx_modulo); + } + /* Otherwise, CPU id */ + else { + idx = ihk_mc_get_processor_id() % idx_modulo; + } + + return idx; +} + /* * sdma_select_user_engine() - select sdma engine based on user setup * @dd: devdata @@ -115,20 +144,7 @@ done: struct sdma_engine *sdma_select_user_engine(struct hfi1_devdata *dd, u32 selector, u8 vl) { - int idx = 0; - int idx_start = 0; - int idx_modulo = 16; - - /* Hash on rank for MPI jobs */ - if (cpu_local_var(current)->proc->nr_processes > 1) { - idx = idx_start + - (cpu_local_var(current)->proc->process_rank % idx_modulo); - } - else { - idx = ihk_mc_get_processor_id() % idx_modulo; - } - - return &dd->per_sdma[idx]; + return &dd->per_sdma[sdma_select_user_engine_idx()]; } /*