diff options
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 21 |
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 | ||
1653 | void perf_check_microcode(void) | ||
1654 | { | ||
1655 | if (x86_pmu.check_microcode) | ||
1656 | x86_pmu.check_microcode(); | ||
1657 | } | ||
1658 | EXPORT_SYMBOL_GPL(perf_check_microcode); | ||
1659 | |||
1653 | static struct pmu pmu = { | 1660 | static 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 | ||