Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 May 2011 19:56:59 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r221857 - in projects/largeSMP/sys/mips: cavium include mips rmi sibyte
Message-ID:  <201105131956.p4DJuxnk081014@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Fri May 13 19:56:58 2011
New Revision: 221857
URL: http://svn.freebsd.org/changeset/base/221857

Log:
  Fix a brain-o in platform_cpu_mask() by just specifying a possible
  cpuset_t to be copied, rather than return the array.
  I can't rely anymore on this being a simple int/long object.
  
  Reported by:	art

Modified:
  projects/largeSMP/sys/mips/cavium/octeon_mp.c
  projects/largeSMP/sys/mips/include/hwfunc.h
  projects/largeSMP/sys/mips/mips/mp_machdep.c
  projects/largeSMP/sys/mips/rmi/xlr_machdep.c
  projects/largeSMP/sys/mips/sibyte/sb_scd.c

Modified: projects/largeSMP/sys/mips/cavium/octeon_mp.c
==============================================================================
--- projects/largeSMP/sys/mips/cavium/octeon_mp.c	Fri May 13 19:40:02 2011	(r221856)
+++ projects/largeSMP/sys/mips/cavium/octeon_mp.c	Fri May 13 19:56:58 2011	(r221857)
@@ -102,20 +102,18 @@ platform_init_ap(int cpuid)
 	mips_wbflush();
 }
 
-cpuset_t
-platform_cpu_mask(void)
+void
+platform_cpu_mask(cpuset_t *mask)
 {
-	cpuset_t cpumask;
 
-	CPU_ZERO(&cpumask);
+	CPU_ZERO(mask);
 
 	/*
 	 * XXX: hack in order to simplify CPU set building, assuming that
 	 * core_mask is 32-bits.
 	 */
-	memcpy(&cpumask, &octeon_bootinfo->core_mask,
+	memcpy(mask, &octeon_bootinfo->core_mask,
 	    sizeof(octeon_bootinfo->core_mask));
-	return (cpumask);
 }
 
 struct cpu_group *

Modified: projects/largeSMP/sys/mips/include/hwfunc.h
==============================================================================
--- projects/largeSMP/sys/mips/include/hwfunc.h	Fri May 13 19:40:02 2011	(r221856)
+++ projects/largeSMP/sys/mips/include/hwfunc.h	Fri May 13 19:56:58 2011	(r221857)
@@ -93,7 +93,7 @@ extern int platform_processor_id(void);
 /*
  * Return the cpumask of available processors.
  */
-extern cpuset_t platform_cpu_mask(void);
+extern void platform_cpu_mask(cpuset_t *mask);
 
 /*
  * Return the topology of processors on this platform

Modified: projects/largeSMP/sys/mips/mips/mp_machdep.c
==============================================================================
--- projects/largeSMP/sys/mips/mips/mp_machdep.c	Fri May 13 19:40:02 2011	(r221856)
+++ projects/largeSMP/sys/mips/mips/mp_machdep.c	Fri May 13 19:56:58 2011	(r221857)
@@ -205,7 +205,7 @@ cpu_mp_setmaxid(void)
 	cpuset_t cpumask;
 	int cpu, last;
 
-	cpumask = platform_cpu_mask();
+	platform_cpu_mask(&cpumask);
 	mp_ncpus = 0;
 	last = 1;
 	while ((cpu = cpusetobj_ffs(&cpumask)) != 0) {
@@ -247,7 +247,7 @@ cpu_mp_start(void)
 	mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
 
 	CPU_ZERO(&all_cpus);
-	cpumask = platform_cpu_mask();
+	platform_cpu_mask(&cpumask);
 
 	while (!CPU_EMPTY(&cpumask)) {
 		cpuid = cpusetobj_ffs(&cpumask) - 1;

Modified: projects/largeSMP/sys/mips/rmi/xlr_machdep.c
==============================================================================
--- projects/largeSMP/sys/mips/rmi/xlr_machdep.c	Fri May 13 19:40:02 2011	(r221856)
+++ projects/largeSMP/sys/mips/rmi/xlr_machdep.c	Fri May 13 19:56:58 2011	(r221857)
@@ -614,17 +614,15 @@ platform_processor_id(void)
 	return (xlr_hwtid_to_cpuid[xlr_cpu_id()]);
 }
 
-cpuset_t
-platform_cpu_mask(void)
+void
+platform_cpu_mask(cpuset_t *mask)
 {
-	cpuset_t cpumask;
 	int i, s;
 
-	CPU_ZERO(&cpumask);
+	CPU_ZERO(mask);
 	s = xlr_ncores * xlr_threads_per_core;
 	for (i = 0; i < s; i++)
-		CPU_SET(i, &cpumask);
-	return (cpumask);
+		CPU_SET(i, mask);
 }
 
 struct cpu_group *

Modified: projects/largeSMP/sys/mips/sibyte/sb_scd.c
==============================================================================
--- projects/largeSMP/sys/mips/sibyte/sb_scd.c	Fri May 13 19:40:02 2011	(r221856)
+++ projects/largeSMP/sys/mips/sibyte/sb_scd.c	Fri May 13 19:56:58 2011	(r221857)
@@ -243,17 +243,15 @@ sb_clear_mailbox(int cpu, uint64_t val)
 	sb_store64(regaddr, val);
 }
 
-cpuset_t
-platform_cpu_mask(void)
+void
+platform_cpu_mask(cpuset_t *mask)
 {
-	cpuset_t cpumask;
 	int i, s;
 
-	CPU_ZERO(&cpumask);
+	CPU_ZERO(mask);
 	s = SYSREV_NUM_PROCESSORS(sb_read_sysrev());
 	for (i = 0; i < s; i++)
-		CPU_SET(i, &cpumask);
-	return (cpumask);
+		CPU_SET(i, mask);
 }
 #endif	/* SMP */
 



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