diff options
-rw-r--r-- | arch/x86/events/intel/core.c | 2 | ||||
-rw-r--r-- | arch/x86/events/intel/uncore_snbep.c | 7 | ||||
-rw-r--r-- | arch/x86/events/msr.c | 2 |
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 | ||
188 | static void msr_event_start(struct perf_event *event, int flags) | 188 | static void msr_event_start(struct perf_event *event, int flags) |