Loading arch/x86/oprofile/nmi_int.c +5 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ u64 op_x86_get_ctrl(struct op_x86_model_spec const *model, val |= counter_config->user ? ARCH_PERFMON_EVENTSEL_USR : 0; val |= counter_config->kernel ? ARCH_PERFMON_EVENTSEL_OS : 0; val |= (counter_config->unit_mask & 0xFF) << 8; counter_config->extra &= (ARCH_PERFMON_EVENTSEL_INV | ARCH_PERFMON_EVENTSEL_EDGE | ARCH_PERFMON_EVENTSEL_CMASK); val |= counter_config->extra; event &= model->event_mask ? model->event_mask : 0xFF; val |= event & 0xFF; val |= (event & 0x0F00) << 24; Loading Loading @@ -440,6 +444,7 @@ static int nmi_create_files(struct super_block *sb, struct dentry *root) oprofilefs_create_ulong(sb, dir, "unit_mask", &counter_config[i].unit_mask); oprofilefs_create_ulong(sb, dir, "kernel", &counter_config[i].kernel); oprofilefs_create_ulong(sb, dir, "user", &counter_config[i].user); oprofilefs_create_ulong(sb, dir, "extra", &counter_config[i].extra); } return 0; Loading arch/x86/oprofile/op_counter.h +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ struct op_counter_config { unsigned long kernel; unsigned long user; unsigned long unit_mask; unsigned long extra; }; extern struct op_counter_config counter_config[]; Loading Loading
arch/x86/oprofile/nmi_int.c +5 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ u64 op_x86_get_ctrl(struct op_x86_model_spec const *model, val |= counter_config->user ? ARCH_PERFMON_EVENTSEL_USR : 0; val |= counter_config->kernel ? ARCH_PERFMON_EVENTSEL_OS : 0; val |= (counter_config->unit_mask & 0xFF) << 8; counter_config->extra &= (ARCH_PERFMON_EVENTSEL_INV | ARCH_PERFMON_EVENTSEL_EDGE | ARCH_PERFMON_EVENTSEL_CMASK); val |= counter_config->extra; event &= model->event_mask ? model->event_mask : 0xFF; val |= event & 0xFF; val |= (event & 0x0F00) << 24; Loading Loading @@ -440,6 +444,7 @@ static int nmi_create_files(struct super_block *sb, struct dentry *root) oprofilefs_create_ulong(sb, dir, "unit_mask", &counter_config[i].unit_mask); oprofilefs_create_ulong(sb, dir, "kernel", &counter_config[i].kernel); oprofilefs_create_ulong(sb, dir, "user", &counter_config[i].user); oprofilefs_create_ulong(sb, dir, "extra", &counter_config[i].extra); } return 0; Loading
arch/x86/oprofile/op_counter.h +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ struct op_counter_config { unsigned long kernel; unsigned long user; unsigned long unit_mask; unsigned long extra; }; extern struct op_counter_config counter_config[]; Loading