git: f9e62419f6da - main - hwpmc: Reenable PME before reenabling counters.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 15 Jun 2022 15:48:45 UTC
The branch main has been updated by mav:
URL: https://cgit.FreeBSD.org/src/commit/?id=f9e62419f6daf226a7116be2601842f8f07b1928
commit f9e62419f6daf226a7116be2601842f8f07b1928
Author: Alexander Motin <mav@FreeBSD.org>
AuthorDate: 2022-06-15 15:39:37 +0000
Commit: Alexander Motin <mav@FreeBSD.org>
CommitDate: 2022-06-15 15:48:38 +0000
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
---
sys/dev/hwpmc/hwpmc_core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sys/dev/hwpmc/hwpmc_core.c b/sys/dev/hwpmc/hwpmc_core.c
index 8575abdea214..7ec22c36019c 100644
--- a/sys/dev/hwpmc/hwpmc_core.c
+++ b/sys/dev/hwpmc/hwpmc_core.c
@@ -1204,6 +1204,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.
*/
@@ -1224,9 +1227,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);
}