mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 19:07:52 +00:00
perf/x86/intel/uncore: Fix uncore num_counters
Some uncore boxes' num_counters value for Haswell server and Broadwell server are not correct (too large, off by one). This issue was found by comparing the code with the document. Although there is no bug report from users yet, accessing non-existent counters is dangerous and the behavior is undefined: it may cause miscounting or even crashes. This patch makes them consistent with the uncore document. Reported-by: Lukasz Odzioba <lukasz.odzioba@intel.com> Signed-off-by: Kan Liang <kan.liang@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vince Weaver <vincent.weaver@maine.edu> Cc: <stable@vger.kernel.org> Link: http://lkml.kernel.org/r/1470925820-59847-1-git-send-email-kan.liang@intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
68187872c7
commit
10e9e7bd59
1 changed files with 5 additions and 5 deletions
|
@ -2626,7 +2626,7 @@ void hswep_uncore_cpu_init(void)
|
||||||
|
|
||||||
static struct intel_uncore_type hswep_uncore_ha = {
|
static struct intel_uncore_type hswep_uncore_ha = {
|
||||||
.name = "ha",
|
.name = "ha",
|
||||||
.num_counters = 5,
|
.num_counters = 4,
|
||||||
.num_boxes = 2,
|
.num_boxes = 2,
|
||||||
.perf_ctr_bits = 48,
|
.perf_ctr_bits = 48,
|
||||||
SNBEP_UNCORE_PCI_COMMON_INIT(),
|
SNBEP_UNCORE_PCI_COMMON_INIT(),
|
||||||
|
@ -2645,7 +2645,7 @@ static struct uncore_event_desc hswep_uncore_imc_events[] = {
|
||||||
|
|
||||||
static struct intel_uncore_type hswep_uncore_imc = {
|
static struct intel_uncore_type hswep_uncore_imc = {
|
||||||
.name = "imc",
|
.name = "imc",
|
||||||
.num_counters = 5,
|
.num_counters = 4,
|
||||||
.num_boxes = 8,
|
.num_boxes = 8,
|
||||||
.perf_ctr_bits = 48,
|
.perf_ctr_bits = 48,
|
||||||
.fixed_ctr_bits = 48,
|
.fixed_ctr_bits = 48,
|
||||||
|
@ -2691,7 +2691,7 @@ static struct intel_uncore_type hswep_uncore_irp = {
|
||||||
|
|
||||||
static struct intel_uncore_type hswep_uncore_qpi = {
|
static struct intel_uncore_type hswep_uncore_qpi = {
|
||||||
.name = "qpi",
|
.name = "qpi",
|
||||||
.num_counters = 5,
|
.num_counters = 4,
|
||||||
.num_boxes = 3,
|
.num_boxes = 3,
|
||||||
.perf_ctr_bits = 48,
|
.perf_ctr_bits = 48,
|
||||||
.perf_ctr = SNBEP_PCI_PMON_CTR0,
|
.perf_ctr = SNBEP_PCI_PMON_CTR0,
|
||||||
|
@ -2773,7 +2773,7 @@ static struct event_constraint hswep_uncore_r3qpi_constraints[] = {
|
||||||
|
|
||||||
static struct intel_uncore_type hswep_uncore_r3qpi = {
|
static struct intel_uncore_type hswep_uncore_r3qpi = {
|
||||||
.name = "r3qpi",
|
.name = "r3qpi",
|
||||||
.num_counters = 4,
|
.num_counters = 3,
|
||||||
.num_boxes = 3,
|
.num_boxes = 3,
|
||||||
.perf_ctr_bits = 44,
|
.perf_ctr_bits = 44,
|
||||||
.constraints = hswep_uncore_r3qpi_constraints,
|
.constraints = hswep_uncore_r3qpi_constraints,
|
||||||
|
@ -2972,7 +2972,7 @@ static struct intel_uncore_type bdx_uncore_ha = {
|
||||||
|
|
||||||
static struct intel_uncore_type bdx_uncore_imc = {
|
static struct intel_uncore_type bdx_uncore_imc = {
|
||||||
.name = "imc",
|
.name = "imc",
|
||||||
.num_counters = 5,
|
.num_counters = 4,
|
||||||
.num_boxes = 8,
|
.num_boxes = 8,
|
||||||
.perf_ctr_bits = 48,
|
.perf_ctr_bits = 48,
|
||||||
.fixed_ctr_bits = 48,
|
.fixed_ctr_bits = 48,
|
||||||
|
|
Loading…
Reference in a new issue