This series replaces the NCR 53C710 model so HP-UX 10.20 (including the
Ignite/16700A media) installs and boots on the HP 715 (-M 715), while
keeping the Linux lasi700 and NetBSD osiop drivers working.
I first tried to fix the existing model, but it took about a dozen fixes
just to get the kernel's own driver to negotiate its first command, and
the real problems were structural. It's connected-only and runs SCRIPTS
synchronously inside the guest register write, so it can't do the
disconnect/reselect or async completion HP-UX needs. Fixing that meant
rewriting the interpreter, so the new engine is derived from lsi53c895a.c
and adapted to the 710: big-endian SCRIPTS and table-indirect fetch,
24-bit DMA, the 710 register map, and the single-byte interrupt model.
v1 was one big rewrite patch; v2 splits it:
1 hw/misc/lasi: independent LASI IRR fix (unchanged from v1).
2 hw/scsi/lasi_ncr710: drop dead defines from the glue (no behaviour change).
3 hw/scsi/ncr53c710: the base engine, enough to install and boot Debian
(53c700) and boot NetBSD (osiop).
4 hw/scsi/ncr53c710: the HP-UX bits on top (overlapped tagged
disconnect/reselect, async completion, and the ATN message-reject tail).
Patch 3 is still the large one. It's a from-scratch rewrite on lsi53c895a.c
rather than an edit of the old model, so it doesn't diff usefully against
it, and splitting the engine itself would leave non-building intermediate
states.
On factoring a shared core out of lsi53c895a.c (raised in review of v1):
only ~14% of the 710 is shared code, and the interrupt model and
reselection differ in the interpreter's hot path, so the win is small
while the regression and testing risk lands on lsi53c895a.c and its
guests. I've kept them as sibling models.
Tested on -M 715: HP-UX 10.20 install and reboot (Ignite and an
overlapping tagged software install), Debian install and boot, NetBSD 9.4
and 10.1 boot and device enumeration.
v1 -> v2: split the rewrite into reviewable pieces; no functional change.
Keith Monahan (4):
hw/misc/lasi: derive IRR from pending and unmasked requests
hw/scsi/lasi_ncr710: remove dead and shadowing defines
hw/scsi/ncr53c710: rewrite the SCRIPTS engine
hw/scsi/ncr53c710: support HP-UX overlapped tagged commands
hw/misc/lasi.c | 25 +-
hw/scsi/lasi_ncr710.c | 118 +-
hw/scsi/lasi_ncr710.h | 28 +-
hw/scsi/ncr53c710.c | 3042 +++++++++++++++++------------------------
hw/scsi/ncr53c710.h | 295 ++--
hw/scsi/trace-events | 43 +-
6 files changed, 1481 insertions(+), 2070 deletions(-)
--
2.43.0