mirror of
https://github.com/opnsense/src.git
synced 2026-02-23 01:46:42 -05:00
When hwpmc stops sampling it will set the pm_state to something other than PMC_STATE_RUNNING. This means the following sequence can happen: CPU 0: Enter the interrupt handler CPU 0: Set the thread TDP_CALLCHAIN pflag CPU 1: Stop sampling CPU 0: Call pmc_process_samples, sampling is stopped so clears ps_nsamples CPU 0: Finishes interrupt processing with the TDP_CALLCHAIN flag set CPU 0: Call pmc_capture_user_callchain to capture the user call chain CPU 0: Find all the pmc sample are free so no call chains need to be captured CPU 0: KASSERT because of this This fixes the issue by checking if any of the samples have been stopped and including this in te KASSERT. PR: 204273 Reviewed by: bz, gnn Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D6581 |
||
|---|---|---|
| .. | ||
| hwpmc_amd.c | ||
| hwpmc_amd.h | ||
| hwpmc_arm.c | ||
| hwpmc_arm64.c | ||
| hwpmc_arm64.h | ||
| hwpmc_arm64_md.c | ||
| hwpmc_armv7.c | ||
| hwpmc_armv7.h | ||
| hwpmc_core.c | ||
| hwpmc_core.h | ||
| hwpmc_e500.c | ||
| hwpmc_intel.c | ||
| hwpmc_logging.c | ||
| hwpmc_mips.c | ||
| hwpmc_mips24k.c | ||
| hwpmc_mips74k.c | ||
| hwpmc_mod.c | ||
| hwpmc_mpc7xxx.c | ||
| hwpmc_octeon.c | ||
| hwpmc_pentium.c | ||
| hwpmc_pentium.h | ||
| hwpmc_piv.c | ||
| hwpmc_piv.h | ||
| hwpmc_powerpc.c | ||
| hwpmc_powerpc.h | ||
| hwpmc_ppc970.c | ||
| hwpmc_ppro.c | ||
| hwpmc_ppro.h | ||
| hwpmc_riscv.h | ||
| hwpmc_soft.c | ||
| hwpmc_soft.h | ||
| hwpmc_sparc64.c | ||
| hwpmc_tsc.c | ||
| hwpmc_tsc.h | ||
| hwpmc_uncore.c | ||
| hwpmc_uncore.h | ||
| hwpmc_x86.c | ||
| hwpmc_xscale.c | ||
| hwpmc_xscale.h | ||
| pmc_events.h | ||