Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/arch/vax/boot/boot
Module Name: src
Committed By: hans
Date: Mon Jul 14 12:39:35 UTC 2025
Modified Files:
src/sys/arch/vax/boot/boot: conf.c ra.c vaxstand.h
Log Message:
vax/boot: fix detection of CMD CQD-22x MSCP controllers
Certain models of CMD MSCP controllers fail to be detected by uda(4) if
they have been booted from. This failure mode has been introduced in
revision 1.11 of uba_mainbus.c, when scanning for Qbus/Unibus memories
was added. They are deteced fine when NetBSD is booted from any other
device such as over the network.
When NetBSD is booted from a MSCP controller, the boot loader sets up
the Qbus map to provide the controller with a small command/response
ring in memory to be used for I/O. Once the kernel is loaded and uba(4)
is attaching, the Qbus map is cleared while scanning for memories. It
appears that sudden loss of access to the command/response ring causes
the firmware of these CMD controllers to drop dead.
As a result, these controllers don't react in a reasonable time (100ms
by the spec) when their IP register is written to re-initialze the
controller. Even though uda(4)'s udamatch() waits up to 10s for a sign
of life from the controller, that's usually not enough for it to wake
up and it is assumed to be absent. Which, of course, causes the kernel
to fail booting as the boot device can't be found.
This needs to be addressed both in the kernel and the bootloader.
To fix this properly, the standalone ra.c driver in the boot loader
should provide a close() entry point which clears the IP register to
issue a controller reset. Thus when the kernel is loaded, the firmware
of the MSCP controller is again in reset state and can't get confused
anymore by the initialization of the Qbus map in uba(4).
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/vax/boot/boot/conf.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/vax/boot/boot/ra.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/vax/boot/boot/vaxstand.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index