git: af3929c5152b - main - hwpmc: fix false callchain assertion on the PMC_UR ring

Mitchell Horne <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.src,gmane.os.freebsd.current.scm
Message-ID <[email protected]>
The branch main has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=af3929c5152b47278c0b6ea66efbb782b9637495

commit af3929c5152b47278c0b6ea66efbb782b9637495
Author:     Andre Silva <[email protected]>
AuthorDate: 2026-08-11 16:17:57 +0000
Commit:     Mitchell Horne <[email protected]>
CommitDate: 2026-08-11 16:22:01 +0000

    hwpmc: fix false callchain assertion on the PMC_UR ring
    
    pmc_capture_user_callchain() asserts that TDP_CALLCHAIN is set on the
    current thread, but PMC_UR samples never set that flag -- only PMC_HR
    and PMC_SR do. That makes the assertion always fail for PMC_UR,
    panicking INVARIANTS kernels as soon as pmcstat -U is used.
    
    Skip the assertion for PMC_UR. No functional change on kernels built
    without INVARIANTS.
    
    Signed-off-by:  Andre Silva <[email protected]>
    Reviewed by:    mhorne
    MFC after:      1 week
    Sponsored by:   AMD
    Differential Revision:  https://reviews.freebsd.org/D58572
---
 sys/dev/hwpmc/hwpmc_mod.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c
index e2d5a044e0b8..bfa8a217235e 100644
--- a/sys/dev/hwpmc/hwpmc_mod.c
+++ b/sys/dev/hwpmc/hwpmc_mod.c
@@ -4983,7 +4983,7 @@ pmc_capture_user_callchain(int cpu, int ring, struct trapframe *tf)
 	pass = 0;
 	start_ticks = ticks;
 
-	KASSERT(td->td_pflags & TDP_CALLCHAIN,
+	KASSERT(ring == PMC_UR || (td->td_pflags & TDP_CALLCHAIN) != 0,
 	    ("[pmc,%d] Retrieving callchain for thread that doesn't want it",
 	    __LINE__));
 restart:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.