Home | History | Annotate | Download | only in uba
History log of /src/sys/arch/vax/uba/uba_mainbus.c
RevisionDateAuthorComments
 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

RSS XML Feed