summaryrefslogtreecommitdiff
path: root/hw/scsi
diff options
context:
space:
mode:
authorSven Schnelle <svens@stackframe.org>2019-02-17 12:37:17 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2019-03-11 16:33:49 +0100
commit2265e98b72df477a38271787485e2cd33df212b4 (patch)
treef20e1b22f2c9b1cf9141dd07538a0d5877e98d84 /hw/scsi
parent12dd89f7006dc1208f6310600d98621e8e1ac0e6 (diff)
downloadqemu-2265e98b72df477a38271787485e2cd33df212b4.zip
lsi: check if SIGP bit is already set in Wait reselect
If SIGP is set, the 'Wait for Reselection' command should jump immediately to the address stored in the second DWORD of the instruction. This fixes spurious hangs in the HP-UX 11.11 installer when the SIGP bit gets set by the kernel before the 'Wait for Reselection' command is executed by SCRIPTS. Signed-off-by: Sven Schnelle <svens@stackframe.org> Tested-by: Helge Deller <deller@gmx.de> Message-Id: <20190217113717.7077-1-svens@stackframe.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/scsi')
-rw-r--r--hw/scsi/lsi53c895a.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 8ba07f8756..bcff859bac 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -1297,8 +1297,10 @@ again:
}
break;
case 2: /* Wait Reselect */
- if (!lsi_irq_on_rsl(s)) {
- lsi_wait_reselect(s);
+ if (s->istat0 & LSI_ISTAT0_SIGP) {
+ s->dsp = s->dnad;
+ } else if (!lsi_irq_on_rsl(s)) {
+ lsi_wait_reselect(s);
}
break;
case 3: /* Set */