From: Soumyajyotii Ssarkar <[email protected]> Add multi LUN support by scanning all 8 LUNs when ANT bit is set.
Signed-off-by: Soumyajyotii Ssarkar <[email protected]> Tested-by: Helge Deller <[email protected]> Signed-off-by: Helge Deller <[email protected]> --- hw/scsi/ncr53c710.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/scsi/ncr53c710.c b/hw/scsi/ncr53c710.c index 3d7318c12e..277aa2c3d3 100644 --- a/hw/scsi/ncr53c710.c +++ b/hw/scsi/ncr53c710.c @@ -1422,8 +1422,30 @@ again: s->dsp = s->dnad; break; } - } else if (!scsi_device_find(&s->bus, 0, idbitstonum(id), 0)) { + } + bool device_exists = false; + if (insn & (1 << 24)) { + /* ATN set - scan all LUNs for this target */ + for (int lun = 0; lun < 8; lun++) { + SCSIDevice *dev = scsi_device_find(&s->bus, 0, + idbitstonum(id), + lun); + if (dev) { + device_exists = true; + break; + } + } + } else { + /* No ATN - check only LUN 0 */ + SCSIDevice *dev = scsi_device_find(&s->bus, 0, + idbitstonum(id), 0); + device_exists = dev != NULL; + } + if (!device_exists) { ncr710_bad_selection(s, id); + if (!(insn & (1 << 24)) && addr != 0) { + s->dsp = addr; + } break; } else { /* -- 2.52.0
