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>