pmc_process_csw_out: ignore deleted counters
I see the fllowing panic on AMD when exiting pmcstat: panic: [pmc,1473] pp_pmcval outside of expected range cpu=2 ri=17 pp_pmcval=fffffffffa529f5b pm_reloadcount=10000 It seems that at least on AMD a performance counter keeps counting after overflowing. When pmcstat exits it sets counters that it used to PMC_STATE_DELETED and waits until their use count goes to zero. amd_intr() wouldn't reload a counter in that state and, thus, a counter would be allowed to overflow. That means that the counter's value would be allowed to go outside the expected range. MFC after: 2 weeks
This commit is contained in:
parent
42837ed746
commit
959e19a84a
@ -1431,8 +1431,8 @@ pmc_process_csw_out(struct thread *td)
|
||||
* save the reading.
|
||||
*/
|
||||
|
||||
if (pp != NULL && pp->pp_pmcs[ri].pp_pmc != NULL) {
|
||||
|
||||
if (pm->pm_state != PMC_STATE_DELETED && pp != NULL &&
|
||||
pp->pp_pmcs[ri].pp_pmc != NULL) {
|
||||
KASSERT(pm == pp->pp_pmcs[ri].pp_pmc,
|
||||
("[pmc,%d] pm %p != pp_pmcs[%d] %p", __LINE__,
|
||||
pm, ri, pp->pp_pmcs[ri].pp_pmc));
|
||||
|
Loading…
x
Reference in New Issue
Block a user