Skip to content

Commit 3125929

Browse files
committed
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Ingo Molnar: "Misc fixes" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/x86: Fix offcore_rsp valid mask for SNB/IVB perf: Treat attr.config as u64 in perf_swevent_init()
2 parents 12c71c4 + f192382 commit 3125929

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

arch/x86/kernel/cpu/perf_event_intel.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,14 @@ static struct event_constraint intel_gen_event_constraints[] __read_mostly =
153153
};
154154

155155
static struct extra_reg intel_snb_extra_regs[] __read_mostly = {
156-
INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3fffffffffull, RSP_0),
157-
INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3fffffffffull, RSP_1),
156+
INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3f807f8fffull, RSP_0),
157+
INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3f807f8fffull, RSP_1),
158+
EVENT_EXTRA_END
159+
};
160+
161+
static struct extra_reg intel_snbep_extra_regs[] __read_mostly = {
162+
INTEL_EVENT_EXTRA_REG(0xb7, MSR_OFFCORE_RSP_0, 0x3fffff8fffull, RSP_0),
163+
INTEL_EVENT_EXTRA_REG(0xbb, MSR_OFFCORE_RSP_1, 0x3fffff8fffull, RSP_1),
158164
EVENT_EXTRA_END
159165
};
160166

@@ -2097,7 +2103,10 @@ __init int intel_pmu_init(void)
20972103
x86_pmu.event_constraints = intel_snb_event_constraints;
20982104
x86_pmu.pebs_constraints = intel_snb_pebs_event_constraints;
20992105
x86_pmu.pebs_aliases = intel_pebs_aliases_snb;
2100-
x86_pmu.extra_regs = intel_snb_extra_regs;
2106+
if (boot_cpu_data.x86_model == 45)
2107+
x86_pmu.extra_regs = intel_snbep_extra_regs;
2108+
else
2109+
x86_pmu.extra_regs = intel_snb_extra_regs;
21012110
/* all extra regs are per-cpu when HT is on */
21022111
x86_pmu.er_flags |= ERF_HAS_RSP_1;
21032112
x86_pmu.er_flags |= ERF_NO_HT_SHARING;
@@ -2123,7 +2132,10 @@ __init int intel_pmu_init(void)
21232132
x86_pmu.event_constraints = intel_ivb_event_constraints;
21242133
x86_pmu.pebs_constraints = intel_ivb_pebs_event_constraints;
21252134
x86_pmu.pebs_aliases = intel_pebs_aliases_snb;
2126-
x86_pmu.extra_regs = intel_snb_extra_regs;
2135+
if (boot_cpu_data.x86_model == 62)
2136+
x86_pmu.extra_regs = intel_snbep_extra_regs;
2137+
else
2138+
x86_pmu.extra_regs = intel_snb_extra_regs;
21272139
/* all extra regs are per-cpu when HT is on */
21282140
x86_pmu.er_flags |= ERF_HAS_RSP_1;
21292141
x86_pmu.er_flags |= ERF_NO_HT_SHARING;

kernel/events/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5331,7 +5331,7 @@ static void sw_perf_event_destroy(struct perf_event *event)
53315331

53325332
static int perf_swevent_init(struct perf_event *event)
53335333
{
5334-
int event_id = event->attr.config;
5334+
u64 event_id = event->attr.config;
53355335

53365336
if (event->attr.type != PERF_TYPE_SOFTWARE)
53375337
return -ENOENT;

0 commit comments

Comments
 (0)