From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hannes Reinecke <hare@suse.de>
Subject: [Qemu-devel] [PULL 10/35] megasas: Clear unit attention on initial reset
Date: Fri, 31 Oct 2014 18:25:48 +0100 [thread overview]
Message-ID: <1414776373-9704-11-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1414776373-9704-1-git-send-email-pbonzini@redhat.com>
From: Hannes Reinecke <hare@suse.de>
The EFI firmware doesn't handle unit attentions properly,
so we need to clear the Power On/Reset unit attention upon
initial reset.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/scsi/megasas.c | 18 +++++++++++++++++-
hw/scsi/scsi-bus.c | 2 +-
include/hw/scsi/scsi.h | 1 +
trace-events | 2 +-
4 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 58e29ae..57d5288 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2202,11 +2202,26 @@ static void megasas_soft_reset(MegasasState *s)
int i;
MegasasCmd *cmd;
- trace_megasas_reset();
+ trace_megasas_reset(s->fw_state);
for (i = 0; i < s->fw_cmds; i++) {
cmd = &s->frames[i];
megasas_abort_command(cmd);
}
+ if (s->fw_state == MFI_FWSTATE_READY) {
+ BusChild *kid;
+
+ /*
+ * The EFI firmware doesn't handle UA,
+ * so we need to clear the Power On/Reset UA
+ * after the initial reset.
+ */
+ QTAILQ_FOREACH(kid, &s->bus.qbus.children, sibling) {
+ SCSIDevice *sdev = DO_UPCAST(SCSIDevice, qdev, kid->child);
+
+ sdev->unit_attention = SENSE_CODE(NO_SENSE);
+ scsi_device_unit_attention_reported(sdev);
+ }
+ }
megasas_reset_frames(s);
s->reply_queue_len = s->fw_cmds;
s->reply_queue_pa = 0;
@@ -2334,6 +2349,7 @@ static int megasas_scsi_init(PCIDevice *dev)
msix_vector_use(dev, 0);
}
+ s->fw_state = MFI_FWSTATE_READY;
if (!s->sas_addr) {
s->sas_addr = ((NAA_LOCALLY_ASSIGNED_ID << 24) |
IEEE_COMPANY_LOCALLY_ASSIGNED) << 36;
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index 6fce847..6376b88 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -84,7 +84,7 @@ static SCSIRequest *scsi_device_alloc_req(SCSIDevice *s, uint32_t tag, uint32_t
return NULL;
}
-static void scsi_device_unit_attention_reported(SCSIDevice *s)
+void scsi_device_unit_attention_reported(SCSIDevice *s)
{
SCSIDeviceClass *sc = SCSI_DEVICE_GET_CLASS(s);
if (sc->unit_attention_reported) {
diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index fd48177..f4aabfd 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -272,6 +272,7 @@ void scsi_req_retry(SCSIRequest *req);
void scsi_device_purge_requests(SCSIDevice *sdev, SCSISense sense);
void scsi_device_set_ua(SCSIDevice *sdev, SCSISense sense);
void scsi_device_report_change(SCSIDevice *dev, SCSISense sense);
+void scsi_device_unit_attention_reported(SCSIDevice *dev);
int scsi_device_get_sense(SCSIDevice *dev, uint8_t *buf, int len, bool fixed);
SCSIDevice *scsi_device_find(SCSIBus *bus, int channel, int target, int lun);
diff --git a/trace-events b/trace-events
index cd149cb..2ceb8e4 100644
--- a/trace-events
+++ b/trace-events
@@ -754,7 +754,7 @@ megasas_dcmd_unsupported(int cmd, unsigned long size) "scmd %d: set properties l
megasas_abort_frame(int cmd, int abort_cmd) "scmd %d: frame %x"
megasas_abort_no_cmd(int cmd, uint64_t context) "scmd %d: no active command for frame context %" PRIx64 ""
megasas_abort_invalid_context(int cmd, uint64_t context, int abort_cmd) "scmd %d: invalid frame context %" PRIx64 " for abort frame %x"
-megasas_reset(void) "Reset"
+megasas_reset(int fw_state) "firmware state %x"
megasas_init(int sges, int cmds, const char *mode) "Using %d sges, %d cmds, %s mode"
megasas_msix_raise(int vector) "vector %d"
megasas_msi_raise(int vector) "vector %d"
--
1.8.3.1
next prev parent reply other threads:[~2014-10-31 17:26 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-31 17:25 [Qemu-devel] [PULL 00/35] Last batch of SCSI, KVM, ivshmem patches before soft freeze Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 01/35] rules.mak: Allow .mo-objs and .mo-cflags in -y variables Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 02/35] ui: Use the new ".mo-cflags" rule syntax for SDL_CFLAGS Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 03/35] scsi: Rename scsi_*_length() to scsi_*_xfer(), add scsi_cdb_length() Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 04/35] megasas: fixup MFI_DCMD_LD_LIST_QUERY Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 05/35] megasas: simplify trace event messages Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 06/35] megasas: fixup device mapping Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 07/35] megasas: add MegaRAID SAS 2108 emulation Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 08/35] megasas: Fix typo in megasas_dcmd_ld_get_list() Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 09/35] megasas: Decode register names Paolo Bonzini
2014-10-31 17:25 ` Paolo Bonzini [this message]
2014-10-31 17:25 ` [Qemu-devel] [PULL 11/35] megasas: Ignore duplicate init_firmware commands Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 12/35] megasas: Implement DCMD_CLUSTER_RESET_LD Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 13/35] megasas: Update queue logging Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 14/35] megasas: Rework frame queueing algorithm Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 15/35] megasas: Fixup MSI-X handling Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 16/35] -machine vmport=off: Allow disabling of VMWare ioport emulation Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 17/35] Add skip_dump flag to ignore memory region during dump Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 18/35] vl.c: Fix Coverity complaining for vmstate_dump_file Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 19/35] kvmvapic: patch_instruction fix Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 20/35] iscsi: Refuse to open as writable if the LUN is write protected Paolo Bonzini
2014-10-31 17:25 ` [Qemu-devel] [PULL 21/35] virtio-scsi: Fix memory leak when realize failed Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 22/35] scsi: devirtualize unrealize of SCSI devices Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 23/35] virtio-scsi: Fix num_queue input validation Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 24/35] kvm_stat: Only consider online cpus Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 25/35] kvm_stat: Fix the non-x86 exit reasons Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 26/35] kvm_stat: Rework platform detection Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 27/35] kvm_stat: Abstract ioctl numbers Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 28/35] kvm_stat: Add powerpc support Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 29/35] i386: fix breakpoints handling in icount mode Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 30/35] ivshmem: Check ivshmem_read() size argument Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 31/35] ivshmem: validate incoming_posn value from server Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 32/35] ivshmem: Fix potential OOB r/w access Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 33/35] ivshmem: Fix fd leak on error Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 34/35] ivshmem: use error_report Paolo Bonzini
2014-10-31 17:26 ` [Qemu-devel] [PULL 35/35] virtio-scsi: fix dataplane Paolo Bonzini
2014-11-03 14:54 ` [Qemu-devel] [PULL 00/35] Last batch of SCSI, KVM, ivshmem patches before soft freeze Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1414776373-9704-11-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=hare@suse.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).