ds.c (50501936288d6a29d7ef78f25d00e33240fad45f) ds.c (a430021faad6b4fa86c820fc3e7f8dbfc2f14fb4)
1// SPDX-License-Identifier: GPL-2.0
2#include <linux/bitops.h>
3#include <linux/types.h>
4#include <linux/slab.h>
5#include <linux/sched/clock.h>
6
7#include <asm/cpu_entry_area.h>
8#include <asm/perf_event.h>

--- 130 unchanged lines hidden (view full) ---

139 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
140 __intel_pmu_pebs_data_source_skl(false, data_source);
141
142 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_ATOM_IDX].pebs_data_source;
143 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
144 __intel_pmu_pebs_data_source_grt(data_source);
145}
146
1// SPDX-License-Identifier: GPL-2.0
2#include <linux/bitops.h>
3#include <linux/types.h>
4#include <linux/slab.h>
5#include <linux/sched/clock.h>
6
7#include <asm/cpu_entry_area.h>
8#include <asm/perf_event.h>

--- 130 unchanged lines hidden (view full) ---

139 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
140 __intel_pmu_pebs_data_source_skl(false, data_source);
141
142 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_ATOM_IDX].pebs_data_source;
143 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
144 __intel_pmu_pebs_data_source_grt(data_source);
145}
146
147static void __init intel_pmu_pebs_data_source_cmt(u64 *data_source)
147static void __init __intel_pmu_pebs_data_source_cmt(u64 *data_source)
148{
149 data_source[0x07] = OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOPX, FWD);
150 data_source[0x08] = OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HITM);
151 data_source[0x0a] = OP_LH | P(LVL, LOC_RAM) | LEVEL(RAM) | P(SNOOP, NONE);
152 data_source[0x0b] = OP_LH | LEVEL(RAM) | REM | P(SNOOP, NONE);
153 data_source[0x0c] = OP_LH | LEVEL(RAM) | REM | P(SNOOPX, FWD);
154 data_source[0x0d] = OP_LH | LEVEL(RAM) | REM | P(SNOOP, HITM);
155}
156
157void __init intel_pmu_pebs_data_source_mtl(void)
158{
159 u64 *data_source;
160
161 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_CORE_IDX].pebs_data_source;
162 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
163 __intel_pmu_pebs_data_source_skl(false, data_source);
164
165 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_ATOM_IDX].pebs_data_source;
166 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
148{
149 data_source[0x07] = OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOPX, FWD);
150 data_source[0x08] = OP_LH | P(LVL, L3) | LEVEL(L3) | P(SNOOP, HITM);
151 data_source[0x0a] = OP_LH | P(LVL, LOC_RAM) | LEVEL(RAM) | P(SNOOP, NONE);
152 data_source[0x0b] = OP_LH | LEVEL(RAM) | REM | P(SNOOP, NONE);
153 data_source[0x0c] = OP_LH | LEVEL(RAM) | REM | P(SNOOPX, FWD);
154 data_source[0x0d] = OP_LH | LEVEL(RAM) | REM | P(SNOOP, HITM);
155}
156
157void __init intel_pmu_pebs_data_source_mtl(void)
158{
159 u64 *data_source;
160
161 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_CORE_IDX].pebs_data_source;
162 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
163 __intel_pmu_pebs_data_source_skl(false, data_source);
164
165 data_source = x86_pmu.hybrid_pmu[X86_HYBRID_PMU_ATOM_IDX].pebs_data_source;
166 memcpy(data_source, pebs_data_source, sizeof(pebs_data_source));
167 intel_pmu_pebs_data_source_cmt(data_source);
167 __intel_pmu_pebs_data_source_cmt(data_source);
168}
169
168}
169
170void __init intel_pmu_pebs_data_source_cmt(void)
171{
172 __intel_pmu_pebs_data_source_cmt(pebs_data_source);
173}
174
170static u64 precise_store_data(u64 status)
171{
172 union intel_x86_pebs_dse dse;
173 u64 val = P(OP, STORE) | P(SNOOP, NA) | P(LVL, L1) | P(TLB, L2);
174
175 dse.val = status;
176
177 /*

--- 2248 unchanged lines hidden ---
175static u64 precise_store_data(u64 status)
176{
177 union intel_x86_pebs_dse dse;
178 u64 val = P(OP, STORE) | P(SNOOP, NA) | P(LVL, L1) | P(TLB, L2);
179
180 dse.val = status;
181
182 /*

--- 2248 unchanged lines hidden ---