On 02/08/2023 10:48, Mark Cave-Ayland wrote:

Whilst trying to improve QEMU's ESP SCSI implementation with regard to the
NCR datasheet, I noticed that SeaBIOS would fail to boot one of my Debian
test images with my patches applied.

Further investigation revealed that the SeaBIOS esp-scsi driver inadvertently
relies on existing bugs in QEMU's ESP SCSI emulation to work correctly, so this
series changes the driver to work as described in the NCR datasheet.

With this series applied it is possible for the updated SeaBIOS to boot both
QEMU current git HEAD as well as my local WIP branch containing various fixes
and improvements to QEMU's ESP SCSI emulation.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk>

v2:
- Fix typo in patch 2 commit message
- Add reference to datasheet in patch 2 commit message as requested by Paul


Mark Cave-Ayland (2):
   esp-scsi: flush FIFO before sending SCSI command
   esp-scsi: check for INTR_BS/INTR_FC instead of STAT_TC for command
     completion

  src/hw/esp-scsi.c | 38 +++++++++++++++++++++++++-------------
  1 file changed, 25 insertions(+), 13 deletions(-)

With a bit more time poking at QEMU's ESP emulation at the weekend, I found one more problem in that QEMU currently always sets STAT_TC after issuing every SCSI request.

Hence we need an extra fix to the esp-scsi state machine to handle the case where there is no DATA phase e.g. Test Unit Ready with a non-DMA SELATN command for when this is eventually fixed in QEMU.


ATB,

Mark.

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to