From: Roman Kagan Date: Thu, 8 Jun 2017 09:58:08 +0000 (+0300) Subject: Revert "lsi-scsi: reset in case of a serious problem" X-Git-Tag: rel-1.11.0~31 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=58953eb793b7f43f9cbb72bd7802922746235266;p=seabios.git 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 Signed-off-by: Roman Kagan --- 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) {