From: Paolo Bonzini <[email protected]> Instead of simply ORing the message byte, clear what was there before.
Cc: [email protected] Signed-off-by: Paolo Bonzini <[email protected]> (cherry picked from commit 4494dec8c2bfd8a5d9b1eabe4a26ab850a4f6700) Signed-off-by: Michael Tokarev <[email protected]> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index 0843d325ab..1b7f02fc7c 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -1041,16 +1041,19 @@ static void lsi_do_msgout(LSIState *s) } break; case 0x20: /* SIMPLE queue */ + s->select_tag &= ~0xff; s->select_tag |= lsi_get_msgbyte(s) | LSI_TAG_VALID; trace_lsi_do_msgout_simplequeue(s->select_tag & 0xff); break; case 0x21: /* HEAD of queue */ qemu_log_mask(LOG_UNIMP, "lsi_scsi: HEAD queue not implemented\n"); + s->select_tag &= ~0xff; s->select_tag |= lsi_get_msgbyte(s) | LSI_TAG_VALID; break; case 0x22: /* ORDERED queue */ qemu_log_mask(LOG_UNIMP, "lsi_scsi: ORDERED queue not implemented\n"); + s->select_tag &= ~0xff; s->select_tag |= lsi_get_msgbyte(s) | LSI_TAG_VALID; break; case 0x0d: -- 2.47.3
