diff options
author | Alexander Motin <mav@FreeBSD.org> | 2022-06-15 15:39:37 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2022-07-04 17:48:10 +0000 |
commit | 5c55abaf0851b3334d3c2a4b9e6cf1ededbac3c8 (patch) | |
tree | f7fc5d288a3eaf3cda6e632c214a602460261095 | |
parent | 194796b3869449a0eb6f8b4eb525bdd3768baa7d (diff) | |
download | src-5c55abaf0851b3334d3c2a4b9e6cf1ededbac3c8.tar.gz src-5c55abaf0851b3334d3c2a4b9e6cf1ededbac3c8.zip |
hwpmc: Reenable PME before reenabling counters.
Doing otherwise may lead to lost interrupts, that in combination
with hardware PMCs freezing may leave them frozen forever. It may
also slightly improve profiling accuracy.
MFC after: 2 weeks
(cherry picked from commit f9e62419f6daf226a7116be2601842f8f07b1928)
-rw-r--r-- | sys/dev/hwpmc/hwpmc_core.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/hwpmc/hwpmc_core.c b/sys/dev/hwpmc/hwpmc_core.c index 7c2a5bcd2a1b..692d7fcd52d9 100644 --- a/sys/dev/hwpmc/hwpmc_core.c +++ b/sys/dev/hwpmc/hwpmc_core.c @@ -1208,6 +1208,9 @@ core2_intr(struct trapframe *tf) else counter_u64_add(pmc_stats.pm_intr_ignored, 1); + if (found_interrupt) + lapic_reenable_pmc(); + /* * Reenable all non-stalled PMCs. */ @@ -1228,9 +1231,6 @@ core2_intr(struct trapframe *tf) (uintmax_t) rdmsr(IA_GLOBAL_CTRL), (uintmax_t) rdmsr(IA_GLOBAL_STATUS)); - if (found_interrupt) - lapic_reenable_pmc(); - return (found_interrupt); } |