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 <arm...@redhat.com> --- hw/ide/atapi.c | 4 ++++ hw/ide/internal.h | 1 + 2 files changed, 5 insertions(+), 0 deletions(-) diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c index 17fbef8..fee567b 100644 --- a/hw/ide/atapi.c +++ b/hw/ide/atapi.c @@ -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 1f807d4..5cf95c0 100644 --- a/hw/ide/internal.h +++ b/hw/ide/internal.h @@ -440,6 +440,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.2.3