Sunday, June 13, 2004
OpenBSD 3.5 on SIMH/Vax
Another obsolete topic…
Like the previous version(s), OpenBSD 3.5 will run with a kernel patch to /sys/arch/vax/mscp/mscp_disk.c. This patch, a pre-compiled generic kernel, and (soon) a prebuilt disk image can be found in the downloads section.
Here is the patch to /sys/arch/vax/mscp/mscp_disk.c:
--- mscp_disk.c.orig Sun May 16 15:15:51 2004
+++ mscp_disk.c Sun May 16 15:19:13 2004
@@ -610,8 +610,16 @@
/* Poll away */
i = bus_space_read_2(mi->mi_iot, mi->mi_iph, 0);
- if (tsleep(&rx->ra_dev.dv_unit, PRIBIO, "rxonline", 100*100))
- rx->ra_state = DK_CLOSED;
+ if (tsleep(&rx->ra_dev.dv_unit, PRIBIO, "rxonline", 100*100)) {
+ if (rx->ra_state != DK_OPEN)
+ rx->ra_state = DK_CLOSED;
+ }
+ if (rx->ra_state == DK_CLOSED) {
+ if (tsleep(&rx->ra_dev.dv_unit, PRIBIO, "rxonline", 100*100)) {
+ if (rx->ra_state != DK_OPEN)
+ rx->ra_state = DK_CLOSED;
+ }
+ }
if (rx->ra_state == DK_CLOSED)
return MSCP_FAILED;
@@ -872,7 +880,6 @@
struct rx_softc *rx = (struct rx_softc *)usc;
struct disklabel *dl;
- wakeup((caddr_t)&usc->dv_unit);
if ((mp->mscp_status & M_ST_MASK) != M_ST_SUCCESS) {
printf("%s: attempt to bring on line failed: ", usc->dv_xname);
mscp_printevent(mp);
@@ -893,6 +900,7 @@
dl->d_rpm = 300;
}
rrmakelabel(dl, rx->ra_mediaid);
+ wakeup((caddr_t)&usc->dv_unit);
return (MSCP_DONE);
}
