linux grundler

Grant Grundler grundler@puffin.external.hp.com
Thu, 18 Jan 2001 11:25:24 -0700


CVSROOT:	/home/cvs/parisc
Module name:	linux
Changes by:	grundler	01/01/18 11:25:24

Modified files:
	arch/parisc/kernel: Makefile head.S irq.c pdc.c setup.c time.c 
	                    traps.c 
	arch/parisc    : config.in 
	arch/parisc64  : config.in 
	include/asm-parisc: atomic.h hardirq.h pdc.h processor.h smp.h 
	                    smplock.h spinlock.h system.h 
	include/linux  : smp.h 
Added files:
	arch/parisc/kernel: smp.c irq_smp.c 

Log message:
First cut of CONFIG_SMP support. Default is disabled and my C3k
still boots/works that way. With CONFIG_SMP=y, hangs after kswapd
msg. Willy tells me that's the first place semaphores are used.

TODO:
o build 64-bit kernel w/CONFIG_SMP=n. Haven't tried this on current sources.
o build 64-bit kernel w/CONFIG_SMP=y - compiler crashed last night.
I haven't retried since CVS updating.
o Fix 32-bit boot w/CONFIG_SMP=y

Notes on major changes:
head.S   restructured to share code between monarch and slave CPUs
initialization path. Monarch starts at stext and slaves
start off at smp_stext.

irq.c    added spinlock around accesses to regions/action lists

pdc.c/setup.c minor restructing of cpu_driver_callback() and start_parisc().
moved coprocessor initialization to "init_coproc()" - which
uses PDC_COPROC_CFG to determine if FP is present, working,
and should be enabled. Not sure how this impacts 712/80i
and similarly crippled boxes.
Also removed "If this is the LAST MESSAGE..." code since
I hope the libmilli.a problem is resolved now for __LP64__.

time.c   Was definitely NOT SMP safe. Fixed (I hope).

traps.c  trap_init() Moved CR initialization to respective places
(eg eirr/eiem to init_IRQ().)
Moved ipi* code to smp.c - other ports seem to expect it there.

processor.h added lots of fields to cpuinfo_parisc (aka cpu_data[])
REVISIT - add ifdef CONFIG_SMP for fields we don't otherwise use

smp.h/smp.c have "ifdef ENTRY_SYS_CPUS" in them for future per CPU mgt.
Code is still broken in several places - but it would be a
cool feature to standardize in 2.5.
Note #define STATE_HALTED collides with sim700 and a few
of our other SCSI drivers. Our name should be "SMP_STATE_XXX"
or "CPU_STATE_XXX".

system.h Added a long comment for *mb() macros.
However, it's not clear if mb() needs to be asm("sync") for
future platforms or not.

include/linux/smp.h   Removed "smp_callin()" prototype since this is
a per arch defined interface. ie generic code never calls this.
I had the opportunity to pass on data that PDC is kind enough
to put in arg25/26.