From patchwork Tue Jul 31 01:28:26 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ronnie sahlberg X-Patchwork-Id: 174128 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 A70CB2C0089 for ; Tue, 31 Jul 2012 11:29:00 +1000 (EST) Received: from localhost ([::1]:32831 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sw1Gc-00084z-Ng for incoming@patchwork.ozlabs.org; Mon, 30 Jul 2012 21:28:58 -0400 Received: from eggs.gnu.org ([208.118.235.92]:40009) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sw1GU-0007xn-UF for qemu-devel@nongnu.org; Mon, 30 Jul 2012 21:28:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sw1GT-0005Tl-WD for qemu-devel@nongnu.org; Mon, 30 Jul 2012 21:28:50 -0400 Received: from mail-yw0-f45.google.com ([209.85.213.45]:54553) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sw1GT-0005PO-Pa for qemu-devel@nongnu.org; Mon, 30 Jul 2012 21:28:49 -0400 Received: by mail-yw0-f45.google.com with SMTP id p34so5360083yhp.4 for ; Mon, 30 Jul 2012 18:28:49 -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=/Hz1v9z6+KRBCrSXORzyw4s/Ff2/LbXzQoNVwksTvhQ=; b=W8VVe+eAl0H7xNkFSmwAZP7bfDOSNkO8UmxUyzHC3JvriStOZY+WH5iHqkCalxPzv0 6joKlHYPULQSshBLZvvcKhNQsQjz1So6LjgRyNNYU7uk7ODA5Lnra9oemO2ai+S4DWLu q5OvfICEyMilnc8mGLl3Zg6rP6sUSFu/X7Za1K3LnD3S5nSoGHtcXxkH2Wm/LoPHlKXE q6A2FPJ2T+k/7+pvuVxVfwdhsYkIkO5RcnlOyweMF/+5rCcThO3mdZbMnlXzhFgmETOY AAXW7o2xfbDsQO3sLCs0UVIUUlZGbZFMOEgYfAqXaO9jhahimP3g0Idm/Bmngad1jx4x U6kg== Received: by 10.66.73.202 with SMTP id n10mr28354381pav.80.1343698129218; Mon, 30 Jul 2012 18:28:49 -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 nh8sm8963043pbc.60.2012.07.30.18.28.46 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 30 Jul 2012 18:28:48 -0700 (PDT) Received: by ronniesahlberg@gmail.com (sSMTP sendmail emulation); Tue, 31 Jul 2012 11:28:43 +1000 From: Ronnie Sahlberg To: kwolf@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org Date: Tue, 31 Jul 2012 11:28:26 +1000 Message-Id: <1343698106-24287-2-git-send-email-ronniesahlberg@gmail.com> X-Mailer: git-send-email 1.7.3.1 In-Reply-To: <1343698106-24287-1-git-send-email-ronniesahlberg@gmail.com> References: <1343698106-24287-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.213.45 Cc: Ronnie Sahlberg Subject: [Qemu-devel] [PATCH] ATAPI: 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/ide/atapi.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c index f7f714c..685cbaa 100644 --- a/hw/ide/atapi.c +++ b/hw/ide/atapi.c @@ -875,6 +875,12 @@ static void cmd_start_stop_unit(IDEState *s, uint8_t* buf) int sense; bool start = buf[4] & 1; bool loej = buf[4] & 2; /* load on start, eject on !start */ + int pwrcnd = buf[4] & 0xf0; + + if (pwrcnd) { + /* eject/load only happens for power condition == 0 */ + return; + } if (loej) { if (!start && !s->tray_open && s->tray_locked) {