aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/perf_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event.c')
-rw-r--r--arch/x86/kernel/cpu/perf_event.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 3eb88ebcec5..29557aa06dd 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -379,7 +379,7 @@ int x86_pmu_hw_config(struct perf_event *event)
379 int precise = 0; 379 int precise = 0;
380 380
381 /* Support for constant skid */ 381 /* Support for constant skid */
382 if (x86_pmu.pebs_active) { 382 if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {
383 precise++; 383 precise++;
384 384
385 /* Support for IP fixup */ 385 /* Support for IP fixup */
@@ -1650,13 +1650,20 @@ static void x86_pmu_flush_branch_stack(void)
1650 x86_pmu.flush_branch_stack(); 1650 x86_pmu.flush_branch_stack();
1651} 1651}
1652 1652
1653void perf_check_microcode(void)
1654{
1655 if (x86_pmu.check_microcode)
1656 x86_pmu.check_microcode();
1657}
1658EXPORT_SYMBOL_GPL(perf_check_microcode);
1659
1653static struct pmu pmu = { 1660static struct pmu pmu = {
1654 .pmu_enable = x86_pmu_enable, 1661 .pmu_enable = x86_pmu_enable,
1655 .pmu_disable = x86_pmu_disable, 1662 .pmu_disable = x86_pmu_disable,
1656 1663
1657 .attr_groups = x86_pmu_attr_groups, 1664 .attr_groups = x86_pmu_attr_groups,
1658 1665
1659 .event_init = x86_pmu_event_init, 1666 .event_init = x86_pmu_event_init,
1660 1667
1661 .add = x86_pmu_add, 1668 .add = x86_pmu_add,
1662 .del = x86_pmu_del, 1669 .del = x86_pmu_del,
@@ -1664,11 +1671,11 @@ static struct pmu pmu = {
1664 .stop = x86_pmu_stop, 1671 .stop = x86_pmu_stop,
1665 .read = x86_pmu_read, 1672 .read = x86_pmu_read,
1666 1673
1667 .start_txn = x86_pmu_start_txn, 1674 .start_txn = x86_pmu_start_txn,
1668 .cancel_txn = x86_pmu_cancel_txn, 1675 .cancel_txn = x86_pmu_cancel_txn,
1669 .commit_txn = x86_pmu_commit_txn, 1676 .commit_txn = x86_pmu_commit_txn,
1670 1677
1671 .event_idx = x86_pmu_event_idx, 1678 .event_idx = x86_pmu_event_idx,
1672 .flush_branch_stack = x86_pmu_flush_branch_stack, 1679 .flush_branch_stack = x86_pmu_flush_branch_stack,
1673}; 1680};
1674 1681