|
@@ -1431,6 +1431,24 @@ static void core_pmu_enable_all(int added)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+PMU_FORMAT_ATTR(event, "config:0-7" );
|
|
|
+PMU_FORMAT_ATTR(umask, "config:8-15" );
|
|
|
+PMU_FORMAT_ATTR(edge, "config:18" );
|
|
|
+PMU_FORMAT_ATTR(pc, "config:19" );
|
|
|
+PMU_FORMAT_ATTR(any, "config:21" ); /* v3 + */
|
|
|
+PMU_FORMAT_ATTR(inv, "config:23" );
|
|
|
+PMU_FORMAT_ATTR(cmask, "config:24-31" );
|
|
|
+
|
|
|
+static struct attribute *intel_arch_formats_attr[] = {
|
|
|
+ &format_attr_event.attr,
|
|
|
+ &format_attr_umask.attr,
|
|
|
+ &format_attr_edge.attr,
|
|
|
+ &format_attr_pc.attr,
|
|
|
+ &format_attr_inv.attr,
|
|
|
+ &format_attr_cmask.attr,
|
|
|
+ NULL,
|
|
|
+};
|
|
|
+
|
|
|
static __initconst const struct x86_pmu core_pmu = {
|
|
|
.name = "core",
|
|
|
.handle_irq = x86_pmu_handle_irq,
|
|
@@ -1455,6 +1473,7 @@ static __initconst const struct x86_pmu core_pmu = {
|
|
|
.put_event_constraints = intel_put_event_constraints,
|
|
|
.event_constraints = intel_core_event_constraints,
|
|
|
.guest_get_msrs = core_guest_get_msrs,
|
|
|
+ .format_attrs = intel_arch_formats_attr,
|
|
|
};
|
|
|
|
|
|
struct intel_shared_regs *allocate_shared_regs(int cpu)
|
|
@@ -1553,6 +1572,21 @@ static void intel_pmu_flush_branch_stack(void)
|
|
|
intel_pmu_lbr_reset();
|
|
|
}
|
|
|
|
|
|
+PMU_FORMAT_ATTR(offcore_rsp, "config1:0-63");
|
|
|
+
|
|
|
+static struct attribute *intel_arch3_formats_attr[] = {
|
|
|
+ &format_attr_event.attr,
|
|
|
+ &format_attr_umask.attr,
|
|
|
+ &format_attr_edge.attr,
|
|
|
+ &format_attr_pc.attr,
|
|
|
+ &format_attr_any.attr,
|
|
|
+ &format_attr_inv.attr,
|
|
|
+ &format_attr_cmask.attr,
|
|
|
+
|
|
|
+ &format_attr_offcore_rsp.attr, /* XXX do NHM/WSM + SNB breakout */
|
|
|
+ NULL,
|
|
|
+};
|
|
|
+
|
|
|
static __initconst const struct x86_pmu intel_pmu = {
|
|
|
.name = "Intel",
|
|
|
.handle_irq = intel_pmu_handle_irq,
|
|
@@ -1576,6 +1610,8 @@ static __initconst const struct x86_pmu intel_pmu = {
|
|
|
.get_event_constraints = intel_get_event_constraints,
|
|
|
.put_event_constraints = intel_put_event_constraints,
|
|
|
|
|
|
+ .format_attrs = intel_arch3_formats_attr,
|
|
|
+
|
|
|
.cpu_prepare = intel_pmu_cpu_prepare,
|
|
|
.cpu_starting = intel_pmu_cpu_starting,
|
|
|
.cpu_dying = intel_pmu_cpu_dying,
|