diff options
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_intel.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 6a84e7f28f05..26b3e2fef104 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c | |||
@@ -1431,6 +1431,24 @@ static void core_pmu_enable_all(int added) | |||
1431 | } | 1431 | } |
1432 | } | 1432 | } |
1433 | 1433 | ||
1434 | PMU_FORMAT_ATTR(event, "config:0-7" ); | ||
1435 | PMU_FORMAT_ATTR(umask, "config:8-15" ); | ||
1436 | PMU_FORMAT_ATTR(edge, "config:18" ); | ||
1437 | PMU_FORMAT_ATTR(pc, "config:19" ); | ||
1438 | PMU_FORMAT_ATTR(any, "config:21" ); /* v3 + */ | ||
1439 | PMU_FORMAT_ATTR(inv, "config:23" ); | ||
1440 | PMU_FORMAT_ATTR(cmask, "config:24-31" ); | ||
1441 | |||
1442 | static struct attribute *intel_arch_formats_attr[] = { | ||
1443 | &format_attr_event.attr, | ||
1444 | &format_attr_umask.attr, | ||
1445 | &format_attr_edge.attr, | ||
1446 | &format_attr_pc.attr, | ||
1447 | &format_attr_inv.attr, | ||
1448 | &format_attr_cmask.attr, | ||
1449 | NULL, | ||
1450 | }; | ||
1451 | |||
1434 | static __initconst const struct x86_pmu core_pmu = { | 1452 | static __initconst const struct x86_pmu core_pmu = { |
1435 | .name = "core", | 1453 | .name = "core", |
1436 | .handle_irq = x86_pmu_handle_irq, | 1454 | .handle_irq = x86_pmu_handle_irq, |
@@ -1455,6 +1473,7 @@ static __initconst const struct x86_pmu core_pmu = { | |||
1455 | .put_event_constraints = intel_put_event_constraints, | 1473 | .put_event_constraints = intel_put_event_constraints, |
1456 | .event_constraints = intel_core_event_constraints, | 1474 | .event_constraints = intel_core_event_constraints, |
1457 | .guest_get_msrs = core_guest_get_msrs, | 1475 | .guest_get_msrs = core_guest_get_msrs, |
1476 | .format_attrs = intel_arch_formats_attr, | ||
1458 | }; | 1477 | }; |
1459 | 1478 | ||
1460 | struct intel_shared_regs *allocate_shared_regs(int cpu) | 1479 | struct intel_shared_regs *allocate_shared_regs(int cpu) |
@@ -1553,6 +1572,21 @@ static void intel_pmu_flush_branch_stack(void) | |||
1553 | intel_pmu_lbr_reset(); | 1572 | intel_pmu_lbr_reset(); |
1554 | } | 1573 | } |
1555 | 1574 | ||
1575 | PMU_FORMAT_ATTR(offcore_rsp, "config1:0-63"); | ||
1576 | |||
1577 | static struct attribute *intel_arch3_formats_attr[] = { | ||
1578 | &format_attr_event.attr, | ||
1579 | &format_attr_umask.attr, | ||
1580 | &format_attr_edge.attr, | ||
1581 | &format_attr_pc.attr, | ||
1582 | &format_attr_any.attr, | ||
1583 | &format_attr_inv.attr, | ||
1584 | &format_attr_cmask.attr, | ||
1585 | |||
1586 | &format_attr_offcore_rsp.attr, /* XXX do NHM/WSM + SNB breakout */ | ||
1587 | NULL, | ||
1588 | }; | ||
1589 | |||
1556 | static __initconst const struct x86_pmu intel_pmu = { | 1590 | static __initconst const struct x86_pmu intel_pmu = { |
1557 | .name = "Intel", | 1591 | .name = "Intel", |
1558 | .handle_irq = intel_pmu_handle_irq, | 1592 | .handle_irq = intel_pmu_handle_irq, |
@@ -1576,6 +1610,8 @@ static __initconst const struct x86_pmu intel_pmu = { | |||
1576 | .get_event_constraints = intel_get_event_constraints, | 1610 | .get_event_constraints = intel_get_event_constraints, |
1577 | .put_event_constraints = intel_put_event_constraints, | 1611 | .put_event_constraints = intel_put_event_constraints, |
1578 | 1612 | ||
1613 | .format_attrs = intel_arch3_formats_attr, | ||
1614 | |||
1579 | .cpu_prepare = intel_pmu_cpu_prepare, | 1615 | .cpu_prepare = intel_pmu_cpu_prepare, |
1580 | .cpu_starting = intel_pmu_cpu_starting, | 1616 | .cpu_starting = intel_pmu_cpu_starting, |
1581 | .cpu_dying = intel_pmu_cpu_dying, | 1617 | .cpu_dying = intel_pmu_cpu_dying, |