Author: ian
Date: Sun Mar  2 19:46:03 2014
New Revision: 262695
URL: http://svnweb.freebsd.org/changeset/base/262695

Log:
  Add a tunable to set the number of active cores, and enable SMP by default.

Modified:
  head/sys/arm/conf/IMX6
  head/sys/arm/freescale/imx/imx6_mp.c

Modified: head/sys/arm/conf/IMX6
==============================================================================
--- head/sys/arm/conf/IMX6      Sun Mar  2 17:19:19 2014        (r262694)
+++ head/sys/arm/conf/IMX6      Sun Mar  2 19:46:03 2014        (r262695)
@@ -143,7 +143,7 @@ options     ROOTDEVNAME=\"ufs:mmcsd0s2a\"
 
 # ARM and SoC-specific options
 options        FDT                     # Configure using FDT/DTB data.
-#options       SMP                     # Enable multiple cores
+options        SMP                     # Enable multiple cores
 options        VFP                     # Enable floating point hardware support
 options        FREEBSD_BOOT_LOADER     # Process metadata passed from loader(8)
 

Modified: head/sys/arm/freescale/imx/imx6_mp.c
==============================================================================
--- head/sys/arm/freescale/imx/imx6_mp.c        Sun Mar  2 17:19:19 2014        
(r262694)
+++ head/sys/arm/freescale/imx/imx6_mp.c        Sun Mar  2 19:46:03 2014        
(r262695)
@@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
+#include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/smp.h>
@@ -72,6 +73,7 @@ void
 platform_mp_setmaxid(void)
 {
        bus_space_handle_t scu;
+       int hwcpu, ncpu;
        uint32_t val;
 
        /* If we've already set the global vars don't bother to do it again. */
@@ -81,10 +83,16 @@ platform_mp_setmaxid(void)
        if (bus_space_map(fdtbus_bs_tag, SCU_PHYSBASE, SCU_SIZE, 0, &scu) != 0)
                panic("Couldn't map the SCU\n");
        val = bus_space_read_4(fdtbus_bs_tag, scu, SCU_CONFIG_REG);
+       hwcpu = (val & SCU_CONFIG_REG_NCPU_MASK) + 1;
        bus_space_unmap(fdtbus_bs_tag, scu, SCU_SIZE);
 
-       mp_maxid = (val & SCU_CONFIG_REG_NCPU_MASK);
-       mp_ncpus = mp_maxid + 1;
+       ncpu = hwcpu;
+       TUNABLE_INT_FETCH("hw.ncpu", &ncpu);
+       if (ncpu < 1 || ncpu > hwcpu)
+               ncpu = hwcpu;
+
+       mp_ncpus = ncpu;
+       mp_maxid = ncpu - 1;
 }
 
 int
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to