aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/events/intel/core.c2
-rw-r--r--arch/x86/events/intel/uncore_snbep.c7
-rw-r--r--arch/x86/events/msr.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index cd319400dc10..7c666958a625 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -3866,7 +3866,7 @@ __init int intel_pmu_init(void)
3866 c->idxmsk64 |= (1ULL << x86_pmu.num_counters) - 1; 3866 c->idxmsk64 |= (1ULL << x86_pmu.num_counters) - 1;
3867 } 3867 }
3868 c->idxmsk64 &= 3868 c->idxmsk64 &=
3869 ~(~0UL << (INTEL_PMC_IDX_FIXED + x86_pmu.num_counters_fixed)); 3869 ~(~0ULL << (INTEL_PMC_IDX_FIXED + x86_pmu.num_counters_fixed));
3870 c->weight = hweight64(c->idxmsk64); 3870 c->weight = hweight64(c->idxmsk64);
3871 } 3871 }
3872 } 3872 }
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index ab2bcaaebe38..b2625867ebd1 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -219,6 +219,9 @@
219#define KNL_CHA_MSR_PMON_BOX_FILTER_TID 0x1ff 219#define KNL_CHA_MSR_PMON_BOX_FILTER_TID 0x1ff
220#define KNL_CHA_MSR_PMON_BOX_FILTER_STATE (7 << 18) 220#define KNL_CHA_MSR_PMON_BOX_FILTER_STATE (7 << 18)
221#define KNL_CHA_MSR_PMON_BOX_FILTER_OP (0xfffffe2aULL << 32) 221#define KNL_CHA_MSR_PMON_BOX_FILTER_OP (0xfffffe2aULL << 32)
222#define KNL_CHA_MSR_PMON_BOX_FILTER_REMOTE_NODE (0x1ULL << 32)
223#define KNL_CHA_MSR_PMON_BOX_FILTER_LOCAL_NODE (0x1ULL << 33)
224#define KNL_CHA_MSR_PMON_BOX_FILTER_NNC (0x1ULL << 37)
222 225
223/* KNL EDC/MC UCLK */ 226/* KNL EDC/MC UCLK */
224#define KNL_UCLK_MSR_PMON_CTR0_LOW 0x400 227#define KNL_UCLK_MSR_PMON_CTR0_LOW 0x400
@@ -1902,6 +1905,10 @@ static int knl_cha_hw_config(struct intel_uncore_box *box,
1902 reg1->reg = HSWEP_C0_MSR_PMON_BOX_FILTER0 + 1905 reg1->reg = HSWEP_C0_MSR_PMON_BOX_FILTER0 +
1903 KNL_CHA_MSR_OFFSET * box->pmu->pmu_idx; 1906 KNL_CHA_MSR_OFFSET * box->pmu->pmu_idx;
1904 reg1->config = event->attr.config1 & knl_cha_filter_mask(idx); 1907 reg1->config = event->attr.config1 & knl_cha_filter_mask(idx);
1908
1909 reg1->config |= KNL_CHA_MSR_PMON_BOX_FILTER_REMOTE_NODE;
1910 reg1->config |= KNL_CHA_MSR_PMON_BOX_FILTER_LOCAL_NODE;
1911 reg1->config |= KNL_CHA_MSR_PMON_BOX_FILTER_NNC;
1905 reg1->idx = idx; 1912 reg1->idx = idx;
1906 } 1913 }
1907 return 0; 1914 return 0;
diff --git a/arch/x86/events/msr.c b/arch/x86/events/msr.c
index 7111400a1f9a..85ef3c2e80e0 100644
--- a/arch/x86/events/msr.c
+++ b/arch/x86/events/msr.c
@@ -182,7 +182,7 @@ again:
182 if (unlikely(event->hw.event_base == MSR_SMI_COUNT)) 182 if (unlikely(event->hw.event_base == MSR_SMI_COUNT))
183 delta = sign_extend64(delta, 31); 183 delta = sign_extend64(delta, 31);
184 184
185 local64_add(now - prev, &event->count); 185 local64_add(delta, &event->count);
186} 186}
187 187
188static void msr_event_start(struct perf_event *event, int flags) 188static void msr_event_start(struct perf_event *event, int flags)