From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38103) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R0yzO-0005c8-KG for qemu-devel@nongnu.org; Tue, 06 Sep 2011 12:59:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R0yzK-0004Yv-H7 for qemu-devel@nongnu.org; Tue, 06 Sep 2011 12:59:10 -0400 Received: from oxygen.pond.sub.org ([78.46.104.156]:55973) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R0yzK-0004YO-4p for qemu-devel@nongnu.org; Tue, 06 Sep 2011 12:59:06 -0400 From: Markus Armbruster Date: Tue, 6 Sep 2011 18:58:38 +0200 Message-Id: <1315328340-6192-6-git-send-email-armbru@redhat.com> In-Reply-To: <1315328340-6192-1-git-send-email-armbru@redhat.com> References: <1315328340-6192-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH v3 05/27] ide/atapi: Track tray open/close state List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefano.stabellini@eu.citrix.com, lcapitulino@redhat.com, hare@suse.de, amit.shah@redhat.com, pbonzini@redhat.com, hch@lst.de We already track it in BlockDriverState since commit 4be9762a. As discussed in that commit's message, we should track it in the device device models instead, because it's device state. Signed-off-by: Markus Armbruster --- hw/ide/atapi.c | 6 +++++- hw/ide/internal.h | 1 + 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c index cb0cdac..713b1fd 100644 --- a/hw/ide/atapi.c +++ b/hw/ide/atapi.c @@ -521,7 +521,7 @@ static unsigned int event_status_media(IDEState *s, uint8_t event_code, media_status; media_status = 0; - if (s->bs->tray_open) { + if (s->tray_open) { media_status = MS_TRAY_OPEN; } else if (bdrv_is_inserted(s->bs)) { media_status = MS_MEDIA_PRESENT; @@ -926,6 +926,10 @@ static void cmd_start_stop_unit(IDEState *s, uint8_t* buf) ide_atapi_cmd_error(s, SENSE_NOT_READY, ASC_MEDIUM_NOT_PRESENT); break; } + + if (loej && !err) { + s->tray_open = !start; + } } static void cmd_mechanism_status(IDEState *s, uint8_t* buf) diff --git a/hw/ide/internal.h b/hw/ide/internal.h index 1117852..8a9052e 100644 --- a/hw/ide/internal.h +++ b/hw/ide/internal.h @@ -442,6 +442,7 @@ struct IDEState { struct unreported_events events; uint8_t sense_key; uint8_t asc; + bool tray_open; uint8_t cdrom_changed; int packet_transfer_size; int elementary_transfer_size; -- 1.7.6