msmith [Wed, 9 Jan 2002 03:39:04 +0000 (03:39 +0000)]
Define the kern.cam sysctl in the cam layer, rather than multiply in several
peripheral drivers. Remove Ken's comment to the effect that this needed
to be done.
imp [Tue, 8 Jan 2002 20:52:23 +0000 (20:52 +0000)]
Catch up to NetBSD:
1.156 pooka; Socket Low-Power CF WLAN
1.155 ichiro; IBM Smart Capture Card II
1.152-154 ichiro; Fujitsu CF EtherCard and FMV-181,182,182A
1.151 christos; Symbol Spectrum24
jhb [Tue, 8 Jan 2002 18:05:03 +0000 (18:05 +0000)]
Fix some 32/64-bit bugs. IPv4 addresses are 32-bits, not longs. On the
alpha these bugs didn't cause any problems because it was little endian,
but on sparc64, we ended up with garbage for the IP address when we tried
to contact the server. (Usually 3.253.0.0)
jake [Tue, 8 Jan 2002 05:50:26 +0000 (05:50 +0000)]
Add initial smp support. This gets as far as allowing the secondary
cpu(s) into the kernel, and sync-ing them up to "kernel" mode so we can
send them ipis, which also work.
Thanks to John Baldwin for providing me with access to the hardware
that made this possible.
jake [Tue, 8 Jan 2002 05:37:52 +0000 (05:37 +0000)]
Setup the normal global pcb register as well on entry from user land.
Call critical_enter/critical_exit around (fast) interrupt handlers. All
non-threaded interrupts are fast, and the threaded interrupt scheduler is
itself a fast interrupt.
Assert that an interrupt handler we are about to call is non-zero.
Be paranoid about restoring the users global registers. Do it as the
last thing before switching to alternate globals (when we magically get
our preloaded registers back), and do it with interrupts disabled. Any
kind of kernel trap when the globals are not setup properly is bad news.
Don't save and restore the kernel g6, it invariably points to the current
pcb now.
jake [Tue, 8 Jan 2002 05:27:13 +0000 (05:27 +0000)]
Adapt the vectored interrupt handler for receiving ipis. If the second
data word in an interrupt packet is non-zero, it points to code to execute
to handle the ipi, so jump to it instead of enqueueing the packet. It
is unclear if we will need queued ipis.
Interrupt g7 now points to pcpu, instead of to the per-cpu interrupt queue
itself, so use that instead. Interrupt g6 is no longer reserved.
jake [Tue, 8 Jan 2002 05:02:13 +0000 (05:02 +0000)]
Update comments about _start, the kernel entry point, to reflect new
parameters needed for smp support.
If we are not the boot processor, jump to the smp startup code instead.
Implement a per-cpu panic stack, which is used for bootstrapping both
primary and secondary processors and during faults on the kernel stack.
Arrange the per-cpu page like the pcb, with the struct pcpu at the end
of the page and the panic stack before it.
Use the boot processor's panic stack for calling sparc64_init.
Split the code to set preloaded global registers and to map the kernel
tsb out into functions, which non-boot processors can call.
Allocate the kstack for thread0 dynamically in pmap_bootstrap, and give
it a guard page too.
jake [Tue, 8 Jan 2002 04:40:13 +0000 (04:40 +0000)]
Add a md field to pcpu for the upa module id.
Remove the alt_stack field.
Use the defines for the register variables declared in C, so that they
don't get out of sync with the assembler.
jake [Tue, 8 Jan 2002 04:34:20 +0000 (04:34 +0000)]
Update comments and defines to reflect that normal and alternate g6 point
to the current pcb.
Remove interrupt global defines; they use PCPU_REG now.
Move ATOMIC_INC_INT here from exception.s, add ATOMIC_DEC_INT.
Add a KASSERT macro for use in assembler.
jhb [Mon, 7 Jan 2002 23:53:34 +0000 (23:53 +0000)]
Populate etc.sparc64:
- The disktab was taken from etc.alpha.
- rc.sparc64 doesn't do anything right now.
- The ttys file has all the vty's commented out since we don't know how
those will work yet. Also, an entry is added for the Openfirmware
console device.
bmah [Mon, 7 Jan 2002 19:27:53 +0000 (19:27 +0000)]
New release note: On the alpha, sysinstall overrides the newfs block/frag
defaults for new filesystems it creates, to meet a boot1 assumption
about the block size of /.
sheldonh [Mon, 7 Jan 2002 12:25:30 +0000 (12:25 +0000)]
According to jhb, the alpha bootstrap code depends on the root
filesystem using a block size of 8192. Since this seems unlikely to
be fixed soon (specifically in time for 4.5-RELEASE on the RELENG_4
branch), fall back to the old default block and frag sizes of 8192 and
1024 in sysinstall on the alpha.