From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:47459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SxCuE-0000TQ-8Y for qemu-devel@nongnu.org; Fri, 03 Aug 2012 04:06:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SxCu5-0006kZ-Rv for qemu-devel@nongnu.org; Fri, 03 Aug 2012 04:06:46 -0400 Received: from mail-gh0-f173.google.com ([209.85.160.173]:61078) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SxCu5-0006kT-GT for qemu-devel@nongnu.org; Fri, 03 Aug 2012 04:06:37 -0400 Received: by ghrr14 with SMTP id r14so497947ghr.4 for ; Fri, 03 Aug 2012 01:06:37 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 3 Aug 2012 10:06:12 +0200 Message-Id: <1343981180-23817-3-git-send-email-pbonzini@redhat.com> In-Reply-To: <1343981180-23817-1-git-send-email-pbonzini@redhat.com> References: <1343981180-23817-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 02/10] SCSI: STARTSTOPUNIT only eject/load media if powercondition is 0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Ronnie Sahlberg From: Ronnie Sahlberg The START STOP UNIT command will only eject/load media if power condition is zero. If power condition is !0 then LOEJ and START will be ignored. >>From MMC (sbc contains similar wordings too) The Power Conditions field requests the block device to be placed in the power condition defined in Table 558. If this field has a value other than 0h then the Start and LoEj bits shall be ignored. Signed-off-by: Ronnie Sahlberg Signed-off-by: Paolo Bonzini --- hw/scsi-disk.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index 84b63ff..e2ec177 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -1247,6 +1247,12 @@ static int scsi_disk_emulate_start_stop(SCSIDiskReq *r) SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, req->dev); bool start = req->cmd.buf[4] & 1; bool loej = req->cmd.buf[4] & 2; /* load on start, eject on !start */ + int pwrcnd = req->cmd.buf[4] & 0xf0; + + if (pwrcnd) { + /* eject/load only happens for power condition == 0 */ + return 0; + } if ((s->features & (1 << SCSI_DISK_F_REMOVABLE)) && loej) { if (!start && !s->tray_open && s->tray_locked) { -- 1.7.10.4