Call pmc_hook() correctly in the ARM64 interrupt handler
pmc_hook() was called only in case of the stray interrupt but should rather be called on each interrupt. Move in to the arm_cpu_intr() handler, out of the critical section too. Reviewed by: br Obtained from: Semihalf Sponsored by: Cavium Differential Revision: https://reviews.freebsd.org/D5161
This commit is contained in:
parent
be7aab76ec
commit
55bdcadded
@ -473,10 +473,6 @@ arm_dispatch_intr(u_int hw_irq, struct trapframe *tf)
|
||||
|
||||
if (intr != NULL)
|
||||
PIC_MASK(root_pic, intr->i_hw_irq);
|
||||
#ifdef HWPMC_HOOKS
|
||||
if (pmc_hook && (PCPU_GET(curthread)->td_pflags & TDP_CALLCHAIN))
|
||||
pmc_hook(PCPU_GET(curthread), PMC_FN_USER_CALLCHAIN, tf);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
@ -486,6 +482,10 @@ arm_cpu_intr(struct trapframe *tf)
|
||||
critical_enter();
|
||||
PIC_DISPATCH(root_pic, tf);
|
||||
critical_exit();
|
||||
#ifdef HWPMC_HOOKS
|
||||
if (pmc_hook && (PCPU_GET(curthread)->td_pflags & TDP_CALLCHAIN))
|
||||
pmc_hook(PCPU_GET(curthread), PMC_FN_USER_CALLCHAIN, tf);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SMP
|
||||
|
Loading…
Reference in New Issue
Block a user