Module Name: src Committed By: snj Date: Mon Feb 26 00:19:44 UTC 2018
Modified Files: src/sys/arch/arm/include [netbsd-8]: cpu.h src/sys/arch/mips/include [netbsd-8]: cpu.h src/sys/arch/powerpc/include [netbsd-8]: cpu.h src/sys/sys [netbsd-8]: cpu.h Log Message: Pull up following revision(s) (requested by skrll in ticket #566): sys/arch/arm/include/cpu.h: 1.94 sys/arch/mips/include/cpu.h: 1.122 sys/arch/powerpc/include/cpu.h: 1.103 sys/sys/cpu.h: 1.42 CPU_INFO_FOREACH() must always iterate at least the boot cpu. document this in sys/cpu.h and fix the arm and mips versions to check ncpu is non zero before using it as an iterator max. this should fix the new assert in init_main.c. -- apply the same change for powerpc as mrg did for arm and mips: CPU_INFO_FOREACH() must always iterate at least the boot cpu. document this in sys/cpu.h and fix the arm and mips versions to check ncpu is non zero before using it as an iterator max. this should fix the new assert in init_main.c. To generate a diff of this commit: cvs rdiff -u -r1.93 -r1.93.6.1 src/sys/arch/arm/include/cpu.h cvs rdiff -u -r1.121 -r1.121.8.1 src/sys/arch/mips/include/cpu.h cvs rdiff -u -r1.102 -r1.102.8.1 src/sys/arch/powerpc/include/cpu.h cvs rdiff -u -r1.41 -r1.41.20.1 src/sys/sys/cpu.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/include/cpu.h diff -u src/sys/arch/arm/include/cpu.h:1.93 src/sys/arch/arm/include/cpu.h:1.93.6.1 --- src/sys/arch/arm/include/cpu.h:1.93 Tue Apr 4 09:26:32 2017 +++ src/sys/arch/arm/include/cpu.h Mon Feb 26 00:19:44 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.93 2017/04/04 09:26:32 sevan Exp $ */ +/* $NetBSD: cpu.h,v 1.93.6.1 2018/02/26 00:19:44 snj Exp $ */ /* * Copyright (c) 1994-1996 Mark Brinicombe. @@ -235,7 +235,7 @@ extern struct cpu_info *cpu_info[]; #define cpu_number() (curcpu()->ci_index) #define CPU_IS_PRIMARY(ci) ((ci)->ci_index == 0) #define CPU_INFO_FOREACH(cii, ci) \ - cii = 0, ci = cpu_info[0]; cii < ncpu && (ci = cpu_info[cii]) != NULL; cii++ + cii = 0, ci = cpu_info[0]; cii < (ncpu ? ncpu : 1) && (ci = cpu_info[cii]) != NULL; cii++ #else #define cpu_number() 0 Index: src/sys/arch/mips/include/cpu.h diff -u src/sys/arch/mips/include/cpu.h:1.121 src/sys/arch/mips/include/cpu.h:1.121.8.1 --- src/sys/arch/mips/include/cpu.h:1.121 Mon Oct 31 12:49:04 2016 +++ src/sys/arch/mips/include/cpu.h Mon Feb 26 00:19:44 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.121 2016/10/31 12:49:04 skrll Exp $ */ +/* $NetBSD: cpu.h,v 1.121.8.1 2018/02/26 00:19:44 snj Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -160,7 +160,7 @@ struct cpu_info { #ifdef MULTIPROCESSOR #define CPU_INFO_ITERATOR int #define CPU_INFO_FOREACH(cii, ci) \ - cii = 0, ci = cpu_infos[0]; cii < ncpu && (ci = cpu_infos[cii]) != NULL; cii++ + cii = 0, ci = cpu_infos[0]; cii < (ncpu ? ncpu : 1) && (ci = cpu_infos[cii]) != NULL; cii++ #else #define CPU_INFO_ITERATOR int __unused #define CPU_INFO_FOREACH(cii, ci) \ Index: src/sys/arch/powerpc/include/cpu.h diff -u src/sys/arch/powerpc/include/cpu.h:1.102 src/sys/arch/powerpc/include/cpu.h:1.102.8.1 --- src/sys/arch/powerpc/include/cpu.h:1.102 Wed Oct 19 00:08:42 2016 +++ src/sys/arch/powerpc/include/cpu.h Mon Feb 26 00:19:44 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.102 2016/10/19 00:08:42 nonaka Exp $ */ +/* $NetBSD: cpu.h,v 1.102.8.1 2018/02/26 00:19:44 snj Exp $ */ /* * Copyright (C) 1999 Wolfgang Solfrank. @@ -32,6 +32,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + #ifndef _POWERPC_CPU_H_ #define _POWERPC_CPU_H_ @@ -54,6 +55,8 @@ struct cache_info { #include <sys/intr.h> #include <sys/device_if.h> #include <sys/evcnt.h> +#include <sys/param.h> +#include <sys/kernel.h> #endif #include <sys/cpu_data.h> @@ -191,7 +194,7 @@ extern struct cpuset_info cpuset_info; #define CPU_IS_PRIMARY(ci) ((ci)->ci_cpuid == 0) #define CPU_INFO_ITERATOR int #define CPU_INFO_FOREACH(cii, ci) \ - cii = 0, ci = &cpu_info[0]; cii < ncpu; cii++, ci++ + cii = 0, ci = &cpu_info[0]; cii < (ncpu ? ncpu : 1); cii++, ci++ #else #define cpu_number() 0 Index: src/sys/sys/cpu.h diff -u src/sys/sys/cpu.h:1.41 src/sys/sys/cpu.h:1.41.20.1 --- src/sys/sys/cpu.h:1.41 Mon May 19 20:39:23 2014 +++ src/sys/sys/cpu.h Mon Feb 26 00:19:44 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.41 2014/05/19 20:39:23 rmind Exp $ */ +/* $NetBSD: cpu.h,v 1.41.20.1 2018/02/26 00:19:44 snj Exp $ */ /*- * Copyright (c) 2007 YAMAMOTO Takashi, @@ -63,6 +63,14 @@ void cpu_need_resched(struct cpu_info *, #define cpu_did_resched(l) /* nothing */ #endif +/* + * CPU_INFO_ITERATOR() may be supplied by machine dependent code as it + * controls how the cpu_info structures are allocated. + * + * This macro must always iterate just the boot-CPU when the system has + * not attached any cpus via mi_cpu_attach() yet, and the "ncpu" variable + * is zero. + */ #ifndef CPU_INFO_ITERATOR #define CPU_INFO_ITERATOR int #define CPU_INFO_FOREACH(cii, ci) \