svn commit: r221857 - in projects/largeSMP/sys/mips: cavium include
mips rmi sibyte
Attilio Rao
attilio at FreeBSD.org
Fri May 13 19:56:59 UTC 2011
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 */
More information about the svn-src-projects
mailing list