Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Feb 2016 11:59:33 +0000 (UTC)
From:      Zbigniew Bodek <zbb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295516 - head/sys/arm64/arm64
Message-ID:  <201602111159.u1BBxXj5050394@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: zbb
Date: Thu Feb 11 11:59:32 2016
New Revision: 295516
URL: https://svnweb.freebsd.org/changeset/base/295516

Log:
  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

Modified:
  head/sys/arm64/arm64/intr_machdep.c

Modified: head/sys/arm64/arm64/intr_machdep.c
==============================================================================
--- head/sys/arm64/arm64/intr_machdep.c	Thu Feb 11 11:58:27 2016	(r295515)
+++ head/sys/arm64/arm64/intr_machdep.c	Thu Feb 11 11:59:32 2016	(r295516)
@@ -473,10 +473,6 @@ stray:
 
 	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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602111159.u1BBxXj5050394>