[SeaBIOS] [PATCH 2/2] Revert "lsi-scsi: reset in case of a serious problem"

Roman Kagan rkagan at virtuozzo.com
Thu Jun 8 11:58:08 CEST 2017


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 at corp.ovh.com>
Signed-off-by: Roman Kagan <rkagan at virtuozzo.com>
---
 src/hw/lsi-scsi.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/hw/lsi-scsi.c b/src/hw/lsi-scsi.c
index 846bb0b..5233251 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) {
-- 
2.9.4




More information about the SeaBIOS mailing list