[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 10/45] ide/atapi: Track tray open/close state
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v2 10/45] ide/atapi: Track tray open/close state |
Date: |
Fri, 02 Sep 2011 16:51:43 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) |
Kevin Wolf <address@hidden> writes:
> Am 03.08.2011 15:07, schrieb Markus Armbruster:
>> 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 <address@hidden>
>> ---
>> 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 17fbef8..96f7c31 100644
>> --- a/hw/ide/atapi.c
>> +++ b/hw/ide/atapi.c
>> @@ -510,7 +510,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;
>> @@ -915,6 +915,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 46e84fa..cd8e977 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;
>
> Probably needs to be migrated.
Correct, but I chose to fix that separately, in PATCH 27/45. Note that
this patch neither breaks nor fixes anything. It just prepares the
ground for fixes.