[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 7/9] libqos/ahci: Add ATAPI tray macros
From: |
John Snow |
Subject: |
[Qemu-devel] [PULL v2 7/9] libqos/ahci: Add ATAPI tray macros |
Date: |
Mon, 14 Nov 2016 11:25:44 -0500 |
(1) Add START_STOP_UNIT command to ahci-test suite
(2) Add eject/start macro commands; this is not a data transfer
command so it is not well-served by the existing generic pipeline.
Signed-off-by: John Snow <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-id: address@hidden
Signed-off-by: John Snow <address@hidden>
---
tests/libqos/ahci.c | 30 ++++++++++++++++++++++++++++++
tests/libqos/ahci.h | 7 +++++--
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/tests/libqos/ahci.c b/tests/libqos/ahci.c
index 99e85d5..79398b4 100644
--- a/tests/libqos/ahci.c
+++ b/tests/libqos/ahci.c
@@ -882,6 +882,30 @@ AHCICommand *ahci_atapi_command_create(uint8_t scsi_cmd,
uint16_t bcl)
return cmd;
}
+void ahci_atapi_eject(AHCIQState *ahci, uint8_t port)
+{
+ AHCICommand *cmd = ahci_atapi_command_create(CMD_ATAPI_START_STOP_UNIT, 0);
+ ahci_command_set_size(cmd, 0);
+
+ cmd->atapi_cmd[4] = 0x02; /* loej = true */
+ ahci_command_commit(ahci, cmd, port);
+ ahci_command_issue(ahci, cmd);
+ ahci_command_verify(ahci, cmd);
+ ahci_command_free(cmd);
+}
+
+void ahci_atapi_load(AHCIQState *ahci, uint8_t port)
+{
+ AHCICommand *cmd = ahci_atapi_command_create(CMD_ATAPI_START_STOP_UNIT, 0);
+ ahci_command_set_size(cmd, 0);
+
+ cmd->atapi_cmd[4] = 0x03; /* loej,start = true */
+ ahci_command_commit(ahci, cmd, port);
+ ahci_command_issue(ahci, cmd);
+ ahci_command_verify(ahci, cmd);
+ ahci_command_free(cmd);
+}
+
void ahci_command_free(AHCICommand *cmd)
{
g_free(cmd->atapi_cmd);
@@ -910,6 +934,9 @@ static void ahci_atapi_command_set_offset(AHCICommand *cmd,
uint64_t lba)
g_assert_cmpuint(lba, <=, UINT32_MAX);
stl_be_p(&cbd[2], lba);
break;
+ case CMD_ATAPI_START_STOP_UNIT:
+ g_assert_cmpuint(lba, ==, 0x00);
+ break;
default:
/* SCSI doesn't have uniform packet formats,
* so you have to add support for it manually. Sorry! */
@@ -977,6 +1004,9 @@ static void ahci_atapi_set_size(AHCICommand *cmd, uint64_t
xbytes)
cbd[7] = (tmp & 0xFF00) >> 8;
cbd[8] = (tmp & 0xFF);
break;
+ case CMD_ATAPI_START_STOP_UNIT:
+ g_assert_cmpuint(xbytes, ==, 0);
+ break;
default:
/* SCSI doesn't have uniform packet formats,
* so you have to add support for it manually. Sorry! */
diff --git a/tests/libqos/ahci.h b/tests/libqos/ahci.h
index bbe04f8..05ce3de 100644
--- a/tests/libqos/ahci.h
+++ b/tests/libqos/ahci.h
@@ -287,8 +287,9 @@ enum {
/* ATAPI Commands */
enum {
- CMD_ATAPI_READ_10 = 0x28,
- CMD_ATAPI_READ_CD = 0xbe,
+ CMD_ATAPI_START_STOP_UNIT = 0x1b,
+ CMD_ATAPI_READ_10 = 0x28,
+ CMD_ATAPI_READ_CD = 0xbe,
};
/* AHCI Command Header Flags & Masks*/
@@ -600,6 +601,8 @@ void ahci_io(AHCIQState *ahci, uint8_t port, uint8_t
ide_cmd,
void *buffer, size_t bufsize, uint64_t sector);
void ahci_exec(AHCIQState *ahci, uint8_t port,
uint8_t op, const AHCIOpts *opts);
+void ahci_atapi_eject(AHCIQState *ahci, uint8_t port);
+void ahci_atapi_load(AHCIQState *ahci, uint8_t port);
/* Command: Fine-grained lifecycle */
AHCICommand *ahci_command_create(uint8_t command_name);
--
2.7.4
- [Qemu-devel] [PULL v2 0/9] Ide patches, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 6/9] libqos/ahci: Support expected errors, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 2/9] ahci-test: Create smaller test ISO images, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 4/9] block-backend: Always notify on blk_eject, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 7/9] libqos/ahci: Add ATAPI tray macros,
John Snow <=
- [Qemu-devel] [PULL v2 1/9] atapi: classify read_cd as conditionally returning data, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 5/9] libqtest: add qmp_eventwait_ref, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 3/9] ahci-test: test atapi read_cd with bcl, nb_sectors = 0, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 8/9] libqos/ahci: Add get_sense and test_ready, John Snow, 2016/11/14
- [Qemu-devel] [PULL v2 9/9] ahci-test: add QMP tray test for ATAPI, John Snow, 2016/11/14
- Re: [Qemu-devel] [PULL v2 0/9] Ide patches, no-reply, 2016/11/14
- Re: [Qemu-devel] [PULL v2 0/9] Ide patches, Stefan Hajnoczi, 2016/11/14