From patchwork Sat Jul 28 01:14:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ronnie sahlberg X-Patchwork-Id: 173822 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id D84DE2C0092 for ; Sat, 28 Jul 2012 11:15:39 +1000 (EST) Received: from localhost ([::1]:38530 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Suvd3-0001LJ-SB for incoming@patchwork.ozlabs.org; Fri, 27 Jul 2012 21:15:37 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Suvcu-00018Y-L1 for qemu-devel@nongnu.org; Fri, 27 Jul 2012 21:15:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Suvcq-0008Gx-V0 for qemu-devel@nongnu.org; Fri, 27 Jul 2012 21:15:28 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:49684) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Suvcq-0008FO-Pc for qemu-devel@nongnu.org; Fri, 27 Jul 2012 21:15:24 -0400 Received: by mail-pb0-f45.google.com with SMTP id ro12so5676720pbb.4 for ; Fri, 27 Jul 2012 18:15:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=hF3U91cn837kXhPV0ekn4t8wCF6NeORQYO5Mbdmyzzc=; b=Ty9O7nQ0MrFtd4n+aj80XpSzfEnxVUSSWl5sDFiK0aqKqMQ92Mc5kFFklxI92NY836 9mU57KxfXFDwqRGkQKqu+ou4CqbAt4A4QvUdCYrvs9h56dzIJ8uKmyihvAXkN/z1YXq8 SFObEevGSTcyJsKr++bABvPdnlp1WXLqSah48+7soTuhNohPst6XB8RLhjx/iUK0OxL8 gmsg+dz75z/2jEPTajFFOS/fFdMTB2CHToPHf6FMeQRWWOiIBSeM4iWQQvH5yNL92Ff0 ebzHhPx6oTbs6GKIlgBOYqGXfifjXaFM3ndBcqQyz9I+rUdFWRs+I5o6pokOnmbFPCHM tqZg== Received: by 10.68.221.74 with SMTP id qc10mr17974408pbc.31.1343438124450; Fri, 27 Jul 2012 18:15:24 -0700 (PDT) Received: from ronniesahlberg@gmail.com (CPE-124-179-22-22.lns5.ken.bigpond.net.au. [124.179.22.22]) by mx.google.com with ESMTPS id pf8sm2914548pbc.44.2012.07.27.18.15.20 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 27 Jul 2012 18:15:23 -0700 (PDT) Received: by ronniesahlberg@gmail.com (sSMTP sendmail emulation); Sat, 28 Jul 2012 11:15:11 +1000 From: Ronnie Sahlberg To: qemu-devel@nongnu.org, pbonzini@redhat.com Date: Sat, 28 Jul 2012 11:14:53 +1000 Message-Id: <1343438093-13151-2-git-send-email-ronniesahlberg@gmail.com> X-Mailer: git-send-email 1.7.3.1 In-Reply-To: <1343438093-13151-1-git-send-email-ronniesahlberg@gmail.com> References: <1343438093-13151-1-git-send-email-ronniesahlberg@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.45 Cc: Ronnie Sahlberg Subject: [Qemu-devel] [PATCH] SCSI: STARTSTOPUNIT only eject/load media if powercondition is 0 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- hw/scsi-disk.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index 525816c..5426990 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -1244,6 +1244,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->qdev.type == TYPE_ROM && loej) { if (!start && !s->tray_open && s->tray_locked) {