Subject: CVS commit: syssrc
To: None <source-changes@netbsd.org>
From: Jason R Thorpe <thorpej@netbsd.org>
List: source-changes
Date: 05/27/2000 22:49:07
Module Name:	syssrc
Committed By:	thorpej
Date:		Sun May 28 05:49:07 UTC 2000

Modified Files:
	syssrc/sys/arch/alpha/alpha: vm_machdep.c
	syssrc/sys/arch/amiga/amiga: vm_machdep.c
	syssrc/sys/arch/arm26/arm26: except.c vm_machdep.c
	syssrc/sys/arch/arm32/arm32: vm_machdep.c
	syssrc/sys/arch/atari/atari: vm_machdep.c
	syssrc/sys/arch/hp300/hp300: vm_machdep.c
	syssrc/sys/arch/i386/i386: vm_machdep.c
	syssrc/sys/arch/luna68k/luna68k: vm_machdep.c
	syssrc/sys/arch/mac68k/mac68k: vm_machdep.c
	syssrc/sys/arch/mips/mips: vm_machdep.c
	syssrc/sys/arch/mvme68k/mvme68k: vm_machdep.c
	syssrc/sys/arch/news68k/news68k: vm_machdep.c
	syssrc/sys/arch/next68k/next68k: vm_machdep.c
	syssrc/sys/arch/pc532/pc532: vm_machdep.c
	syssrc/sys/arch/powerpc/powerpc: vm_machdep.c
	syssrc/sys/arch/sh3/sh3: vm_machdep.c
	syssrc/sys/arch/sparc/sparc: vm_machdep.c
	syssrc/sys/arch/sparc64/sparc64: vm_machdep.c
	syssrc/sys/arch/sun3/sun3: vm_machdep.c
	syssrc/sys/arch/vax/vax: vm_machdep.c
	syssrc/sys/arch/x68k/x68k: vm_machdep.c
	syssrc/sys/compat/linux/common: linux_sched.c
	syssrc/sys/compat/svr4: svr4_lwp.c
	syssrc/sys/kern: init_main.c kern_fork.c kern_kthread.c
	syssrc/sys/sys: proc.h systm.h
	syssrc/sys/uvm: uvm_extern.h uvm_glue.c
	syssrc/sys/vm: vm_extern.h

Log Message:
Rather than starting init and creating kthreads by forking and then
doing a cpu_set_kpc(), just pass the entry point and argument all
the way down the fork path starting with fork1().  In order to
avoid special-casing the normal fork in every cpu_fork(), MI code
passes down child_return() and the child process pointer explicitly.

This fixes a race condition on multiprocessor systems; a CPU could
grab the newly created processes (which has been placed on a run queue)
before cpu_set_kpc() would be performed.


To generate a diff of this commit:
cvs rdiff -r1.56 -r1.57 syssrc/sys/arch/alpha/alpha/vm_machdep.c
cvs rdiff -r1.53 -r1.54 syssrc/sys/arch/amiga/amiga/vm_machdep.c
cvs rdiff -r1.5 -r1.6 syssrc/sys/arch/arm26/arm26/except.c
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/arm26/arm26/vm_machdep.c
cvs rdiff -r1.49 -r1.50 syssrc/sys/arch/arm32/arm32/vm_machdep.c
cvs rdiff -r1.31 -r1.32 syssrc/sys/arch/atari/atari/vm_machdep.c
cvs rdiff -r1.54 -r1.55 syssrc/sys/arch/hp300/hp300/vm_machdep.c
cvs rdiff -r1.88 -r1.89 syssrc/sys/arch/i386/i386/vm_machdep.c
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/luna68k/luna68k/vm_machdep.c
cvs rdiff -r1.45 -r1.46 syssrc/sys/arch/mac68k/mac68k/vm_machdep.c
cvs rdiff -r1.58 -r1.59 syssrc/sys/arch/mips/mips/vm_machdep.c
cvs rdiff -r1.29 -r1.30 syssrc/sys/arch/mvme68k/mvme68k/vm_machdep.c
cvs rdiff -r1.2 -r1.3 syssrc/sys/arch/news68k/news68k/vm_machdep.c
cvs rdiff -r1.16 -r1.17 syssrc/sys/arch/next68k/next68k/vm_machdep.c
cvs rdiff -r1.41 -r1.42 syssrc/sys/arch/pc532/pc532/vm_machdep.c
cvs rdiff -r1.16 -r1.17 syssrc/sys/arch/powerpc/powerpc/vm_machdep.c
cvs rdiff -r1.8 -r1.9 syssrc/sys/arch/sh3/sh3/vm_machdep.c
cvs rdiff -r1.53 -r1.54 syssrc/sys/arch/sparc/sparc/vm_machdep.c
cvs rdiff -r1.26 -r1.27 syssrc/sys/arch/sparc64/sparc64/vm_machdep.c
cvs rdiff -r1.57 -r1.58 syssrc/sys/arch/sun3/sun3/vm_machdep.c
cvs rdiff -r1.61 -r1.62 syssrc/sys/arch/vax/vax/vm_machdep.c
cvs rdiff -r1.29 -r1.30 syssrc/sys/arch/x68k/x68k/vm_machdep.c
cvs rdiff -r1.5 -r1.6 syssrc/sys/compat/linux/common/linux_sched.c
cvs rdiff -r1.2 -r1.3 syssrc/sys/compat/svr4/svr4_lwp.c
cvs rdiff -r1.168 -r1.169 syssrc/sys/kern/init_main.c
cvs rdiff -r1.64 -r1.65 syssrc/sys/kern/kern_fork.c
cvs rdiff -r1.9 -r1.10 syssrc/sys/kern/kern_kthread.c
cvs rdiff -r1.95 -r1.96 syssrc/sys/sys/proc.h
cvs rdiff -r1.109 -r1.110 syssrc/sys/sys/systm.h
cvs rdiff -r1.40 -r1.41 syssrc/sys/uvm/uvm_extern.h
cvs rdiff -r1.33 -r1.34 syssrc/sys/uvm/uvm_glue.c
cvs rdiff -r1.47 -r1.48 syssrc/sys/vm/vm_extern.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.