diff options
author | Roman Kagan <rkagan@virtuozzo.com> | 2017-06-08 12:58:08 +0300 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-06-12 15:01:31 -0400 |
commit | 58953eb793b7f43f9cbb72bd7802922746235266 (patch) | |
tree | 0425c92f9b356aa7da76a287ccc55b51bf5ca625 | |
parent | 6345621ded7fe999084501ba9382913b079acc9c (diff) | |
download | seabios-58953eb793b7f43f9cbb72bd7802922746235266.tar.gz |
Revert "lsi-scsi: reset in case of a serious problem"
This reverts commit 11277846e819b9eef3db5ac833a6a47f95f5ef15.
It was originally introduced to deal with the case when REPORT_LUNS
caused an error in QEMU implementation of lsi53c895a and left it in a
"confused" state making further interaction impossible.
However the remedy was worse than the disease: the reset was
controller-wide causing all luns to reset, losing all in-flight requests;
upon that all luns lit up unit_attention condition, so that any
non-informational request would fail with check_condition status. As a
result, the lun enumeration succeeded and I saw the respective entries
in the boot menu during my testing, but the read from those luns ended
with an error and booting failed, which I didn't bother to test.
So this reverts to the original error handling behavior. The problem
with the failing REPORT_LUNS is addressed in the preceding patch, by
making it unlikely to fail.
Reported-by: Maciej Józefczyk <maciej.jozefczyk@corp.ovh.com>
Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
-rw-r--r-- | src/hw/lsi-scsi.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/src/hw/lsi-scsi.c b/src/hw/lsi-scsi.c index 846bb0b4..52332518 100644 --- a/src/hw/lsi-scsi.c +++ b/src/hw/lsi-scsi.c @@ -116,8 +116,6 @@ lsi_scsi_process_op(struct disk_op_s *op) u8 sist0 = inb(iobase + LSI_REG_SIST0); u8 sist1 = inb(iobase + LSI_REG_SIST1); if (sist0 || sist1) { - /* serious problem, can't continue w/o reset */ - outb(LSI_ISTAT0_SRST, iobase + LSI_REG_ISTAT0); goto fail; } if (dstat & 0x04) { |