From 9eff5331a9b4cac3bda1b328ed9ecc8b9bdba51e Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 16 Apr 2014 02:17:33 -0700 Subject: [PATCH] PDP10: Fixed UBA reset logic to only reset the devices which are connected to the UBA being reset (reported by R. Voorhorst) --- PDP10/pdp10_ksio.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/PDP10/pdp10_ksio.c b/PDP10/pdp10_ksio.c index 6d92e90d..52fc77d6 100644 --- a/PDP10/pdp10_ksio.c +++ b/PDP10/pdp10_ksio.c @@ -1620,7 +1620,23 @@ int32 n = iocmap[GET_IOUBA (pa)]; if (n < 0) ABORT (STOP_ILLIOC); if (val & UBCS_INI) { - reset_all (5); /* start after UBA */ + DEVICE *dptr; + int i; + + for (i=0; (dptr = sim_devices[i]) != NULL; i++) { + if (dptr == &uba_dev) { + ++i; /* start after UBA */ + break; + } + } + /* Now find the devices which are attached to this UBA and reset them */ + for (; (dptr = sim_devices[i]) != NULL; i++) { + DIB *dibp = (DIB *)dptr->ctxt; + + if ((n == iocmap[GET_IOUBA (dibp->ba)]) && + (dptr->reset != NULL)) + dptr->reset (dptr); + } ubcs[n] = val & UBCS_DXF; } else ubcs[n] = val & UBCS_RDW;