diff --git a/executer/kernel/mcctrl/arch/arm64/include/archdeps.h b/executer/kernel/mcctrl/arch/arm64/include/archdeps.h index 38bc111c..d49aaa90 100644 --- a/executer/kernel/mcctrl/arch/arm64/include/archdeps.h +++ b/executer/kernel/mcctrl/arch/arm64/include/archdeps.h @@ -14,6 +14,9 @@ static inline bool pte_is_write_combined(pte_t pte) } #endif /* POSTK_DEBUG_ARCH_DEP_12 */ +#define ARMV8_IDX_COUNTER0 1 +#define ARCH_PERF_COUNTER_START ARMV8_IDX_COUNTER0 + #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) static const unsigned long arch_rus_vm_flags = VM_RESERVED | VM_MIXEDMAP | VM_EXEC; #else diff --git a/executer/kernel/mcctrl/arch/x86_64/include/archdeps.h b/executer/kernel/mcctrl/arch/x86_64/include/archdeps.h index fad7988b..46c16934 100644 --- a/executer/kernel/mcctrl/arch/x86_64/include/archdeps.h +++ b/executer/kernel/mcctrl/arch/x86_64/include/archdeps.h @@ -14,6 +14,8 @@ static inline bool pte_is_write_combined(pte_t pte) } #endif /* POSTK_DEBUG_ARCH_DEP_12 */ +#define ARCH_PERF_COUNTER_START 0 + #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) static const unsigned long arch_rus_vm_flags = VM_RESERVED | VM_MIXEDMAP; #else diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index 3590defd..5f76ecbe 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -49,6 +49,7 @@ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) #include #endif +#include //#define DEBUG @@ -2128,7 +2129,7 @@ long mcctrl_perf_set(ihk_os_t os, struct ihk_perf_event_attr *__user arg) perf_desc->ctrl_type = PERF_CTRL_SET; perf_desc->err = 0; - perf_desc->target_cntr = i; + perf_desc->target_cntr = i + ARCH_PERF_COUNTER_START; perf_desc->config = attr.config; perf_desc->exclude_kernel = attr.exclude_kernel; perf_desc->exclude_user = attr.exclude_user; @@ -2188,7 +2189,7 @@ long mcctrl_perf_get(ihk_os_t os, unsigned long *__user arg) perf_desc->ctrl_type = PERF_CTRL_GET; perf_desc->err = 0; - perf_desc->target_cntr = i; + perf_desc->target_cntr = i + ARCH_PERF_COUNTER_START; memset(&isp, '\0', sizeof(struct ikc_scd_packet)); isp.msg = SCD_MSG_PERF_CTRL; @@ -2235,7 +2236,7 @@ long mcctrl_perf_enable(ihk_os_t os) int need_free; for (i = 0; i < usrdata->perf_event_num; i++) { - cntr_mask |= 1UL << i; + cntr_mask |= 1UL << (i + ARCH_PERF_COUNTER_START); } perf_desc = kmalloc(sizeof(struct mcctrl_perf_ctrl_desc), GFP_KERNEL); if (!perf_desc) { @@ -2288,7 +2289,7 @@ long mcctrl_perf_disable(ihk_os_t os) int need_free; for (i = 0; i < usrdata->perf_event_num; i++) { - cntr_mask |= 1UL << i; + cntr_mask |= 1UL << (i + ARCH_PERF_COUNTER_START); } perf_desc = kmalloc(sizeof(struct mcctrl_perf_ctrl_desc), GFP_KERNEL); if (!perf_desc) {