svn commit: r297730 - head/sys/dev/hwpmc

Justin Hibbits jhibbits at FreeBSD.org
Sat Apr 9 01:02:19 UTC 2016


Author: jhibbits
Date: Sat Apr  9 01:02:17 2016
New Revision: 297730
URL: https://svnweb.freebsd.org/changeset/base/297730

Log:
  Fix a masking bug for e500 PMC.
  
  No idea how this slipped through my regression testing.  pe_code is the event to
  count, pe_cpu is the CPU family mask.

Modified:
  head/sys/dev/hwpmc/hwpmc_e500.c

Modified: head/sys/dev/hwpmc/hwpmc_e500.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_e500.c	Sat Apr  9 00:58:38 2016	(r297729)
+++ head/sys/dev/hwpmc/hwpmc_e500.c	Sat Apr  9 01:02:17 2016	(r297730)
@@ -507,6 +507,7 @@ e500_allocate_pmc(int cpu, int ri, struc
 	pe = a->pm_ev;
 	config = PMLCax_FCS | PMLCax_FCU |
 	    PMLCax_FCM1 | PMLCax_FCM1;
+
 	if (pe < PMC_EV_E500_FIRST || pe > PMC_EV_E500_LAST)
 		return (EINVAL);
 
@@ -517,14 +518,14 @@ e500_allocate_pmc(int cpu, int ri, struc
 	vers = mfpvr() >> 16;
 	switch (vers) {
 	case FSL_E500v1:
-		pe_cpu_mask = ev->pe_code & PMC_PPC_E500V1;
+		pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V1;
 		break;
 	case FSL_E500v2:
-		pe_cpu_mask = ev->pe_code & PMC_PPC_E500V2;
+		pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V2;
 		break;
 	case FSL_E500mc:
 	case FSL_E5500:
-		pe_cpu_mask = ev->pe_code & PMC_PPC_E500MC;
+		pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500MC;
 		break;
 	}
 	if (pe_cpu_mask == 0)


More information about the svn-src-head mailing list