On 04/12/2011 06:06 PM, Amit Shah wrote:
The GET_EVENT_STATUS_NOTIFICATION ATAPI command is listed as a
mandatory command in the spec but we don't really implement it any of
its sub-commands.
The commit message for the last commit explains why implementing just
the media subcommand is helpful and how it goes a long way in getting
guests to behave as expected.
The difference from the RFC series sent earlier is:
- Split into more patches
- Add tray open/close notification (from Markus)
There certainly is much more work to be done for the other commands
and also for state change handling (tray open / close / new media)
overall for the block layer, but this is a good first step in being
spec-compliant and at the same time making guests work.
v5:
- re-add initialisation of gesn_event_header->notification_class; it
is a bug to not init it; add comment.
- remove max_len param from call to event_status_media()
- convert enums to upper case.
v4:
- gesn_event_header should point to buf
- compile fix for patch 3/5
- remove initialisation without effect of a variable.
v3:
- Add gesn_event_header struct, further removing a few constants used
- Set reserved bits to 0 for the media subcommand
- Remove the function handling NEA, move to generic code
- Re-do patch series to reflect above change
- Merge vmstate patches with patch introducing new fields
- Merge fixes for other comments by Kevin
v2:
- Update comments
- Use struct instead of enum for cdb packet
- Add a new subsection to vmstate for new fields for save/restore
v1:
- Split into more patches
- Add tray open/close notification (from Markus)
RFC:
- Orig. series
Amit Shah (5):
atapi: Allow GET_EVENT_STATUS_NOTIFICATION after media change
atapi: Move GET_EVENT_STATUS_NOTIFICATION command handling to its own
function
atapi: GESN: Use structs for commonly-used field types
atapi: GESN: Standardise event response handling for future additions
atapi: GESN: implement 'media' subcommand
hw/ide/core.c | 187 +++++++++++++++++++++++++++++++++++++++++++++++------
hw/ide/internal.h | 6 ++
2 files changed, 174 insertions(+), 19 deletions(-)
ACK
Please consider moving structs and enums to a common header file (mmc.h
or atapi.h) and naming them to avoid void* casts in a followup.
Paolo