History log of /src/sys/arch/vax/uba/uba_mainbus.c |
Revision | | Date | Author | Comments |
1.15 |
| 14-Jul-2025 |
hans | vax/uba: 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.
We can work around this issue in the kernel by restoring the Qbus map registers to their original values after we've used them for detecting Qbus memories. The code to do that is already there but commented out, it just needs uncommenting.
|
1.14 |
| 22-May-2017 |
ragge | branches: 1.14.46; Update copyright notice for Ludd (remove clause 3 & 4).
|
1.13 |
| 22-Apr-2016 |
christos | Use the right variable (Felix Deichmann)
|
1.12 |
| 05-Jul-2015 |
matt | Typo fxi.
|
1.11 |
| 05-Jul-2015 |
matt | Add code to probe the Q-bus/Unibus for memory. (From Charles Dickman)
|
1.10 |
| 14-Dec-2010 |
matt | branches: 1.10.18; 1.10.36; Cleanup includes. Change <machine/XXX.h> to <sys/XXX.h> for bus, cpu, intr. Remove unneeded includes.
|
1.9 |
| 11-Mar-2008 |
matt | branches: 1.9.26; Rototill the vax code. Switch to devicet/PRIV_ALLOC. Cleanup vax autoconf code. Move to prototype definitions. staticfy, constify, avoid casting. Use device_* accessors.
|
1.8 |
| 11-Dec-2005 |
christos | branches: 1.8.50; 1.8.70; 1.8.74; merge ktrace-lwp.
|
1.7 |
| 07-Aug-2003 |
agc | branches: 1.7.16; Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
1.6 |
| 15-Jul-2003 |
lukem | __KERNEL_RCSID()
|
1.5 |
| 02-Oct-2002 |
thorpej | branches: 1.5.6; Add trailing ; to CFATTACH_DECL.
|
1.4 |
| 01-Oct-2002 |
thorpej | Use CFATTACH_DECL().
|
1.3 |
| 27-Sep-2002 |
thorpej | Declare all cfattach structures const.
|
1.2 |
| 06-Jun-1999 |
ragge | branches: 1.2.2; 1.2.18; 1.2.22; Added support for Qbus DMA.
|
1.1 |
| 24-May-1999 |
ragge | bus.h'ify more of the vax code.
|
1.2.22.1 |
| 18-Oct-2002 |
nathanw | Catch up to -current.
|
1.2.18.1 |
| 10-Oct-2002 |
jdolecek | sync kqueue with -current; this includes merge of gehenna-devsw branch, merge of i386 MP branch, and part of autoconf rototil work
|
1.2.2.1 |
| 21-Jun-1999 |
thorpej | Sync w/ -current.
|
1.5.6.3 |
| 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.5.6.2 |
| 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.5.6.1 |
| 03-Aug-2004 |
skrll | Sync with HEAD
|
1.7.16.1 |
| 17-Mar-2008 |
yamt | sync with head.
|
1.8.74.1 |
| 03-Apr-2008 |
mjf | Sync with HEAD.
|
1.8.70.1 |
| 24-Mar-2008 |
keiichi | sync with head.
|
1.8.50.1 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.9.26.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.10.36.3 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.10.36.2 |
| 29-May-2016 |
skrll | Sync with HEAD
|
1.10.36.1 |
| 22-Sep-2015 |
skrll | Sync with HEAD
|
1.10.18.1 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.14.46.1 |
| 02-Aug-2025 |
perseant | Sync with HEAD
|