qtest/ahci: simple ncq data test
Test the NCQ pathways for a simple IO RW test. Also, test that libqos doesn't explode when running NCQ commands :) Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1435016308-6150-16-git-send-email-jsnow@redhat.com
This commit is contained in:
parent
e38cc93aca
commit
26ad004585
@ -1401,6 +1401,17 @@ static void test_reset(void)
|
||||
ahci_shutdown(ahci);
|
||||
}
|
||||
|
||||
static void test_ncq_simple(void)
|
||||
{
|
||||
AHCIQState *ahci;
|
||||
|
||||
ahci = ahci_boot_and_enable(NULL);
|
||||
ahci_test_io_rw_simple(ahci, 4096, 0,
|
||||
READ_FPDMA_QUEUED,
|
||||
WRITE_FPDMA_QUEUED);
|
||||
ahci_shutdown(ahci);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* AHCI I/O Test Matrix Definitions */
|
||||
|
||||
@ -1654,6 +1665,8 @@ int main(int argc, char **argv)
|
||||
qtest_add_func("/ahci/max", test_max);
|
||||
qtest_add_func("/ahci/reset", test_reset);
|
||||
|
||||
qtest_add_func("/ahci/io/ncq/simple", test_ncq_simple);
|
||||
|
||||
ret = g_test_run();
|
||||
|
||||
/* Cleanup */
|
||||
|
@ -50,27 +50,31 @@ typedef struct AHCICommandProp {
|
||||
} AHCICommandProp;
|
||||
|
||||
AHCICommandProp ahci_command_properties[] = {
|
||||
{ .cmd = CMD_READ_PIO, .data = true, .pio = true,
|
||||
.lba28 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_PIO, .data = true, .pio = true,
|
||||
.lba28 = true, .write = true },
|
||||
{ .cmd = CMD_READ_PIO_EXT, .data = true, .pio = true,
|
||||
.lba48 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_PIO_EXT, .data = true, .pio = true,
|
||||
.lba48 = true, .write = true },
|
||||
{ .cmd = CMD_READ_DMA, .data = true, .dma = true,
|
||||
.lba28 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_DMA, .data = true, .dma = true,
|
||||
.lba28 = true, .write = true },
|
||||
{ .cmd = CMD_READ_DMA_EXT, .data = true, .dma = true,
|
||||
.lba48 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_DMA_EXT, .data = true, .dma = true,
|
||||
.lba48 = true, .write = true },
|
||||
{ .cmd = CMD_IDENTIFY, .data = true, .pio = true,
|
||||
.size = 512, .read = true },
|
||||
{ .cmd = CMD_READ_MAX, .lba28 = true },
|
||||
{ .cmd = CMD_READ_MAX_EXT, .lba48 = true },
|
||||
{ .cmd = CMD_FLUSH_CACHE, .data = false }
|
||||
{ .cmd = CMD_READ_PIO, .data = true, .pio = true,
|
||||
.lba28 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_PIO, .data = true, .pio = true,
|
||||
.lba28 = true, .write = true },
|
||||
{ .cmd = CMD_READ_PIO_EXT, .data = true, .pio = true,
|
||||
.lba48 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_PIO_EXT, .data = true, .pio = true,
|
||||
.lba48 = true, .write = true },
|
||||
{ .cmd = CMD_READ_DMA, .data = true, .dma = true,
|
||||
.lba28 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_DMA, .data = true, .dma = true,
|
||||
.lba28 = true, .write = true },
|
||||
{ .cmd = CMD_READ_DMA_EXT, .data = true, .dma = true,
|
||||
.lba48 = true, .read = true },
|
||||
{ .cmd = CMD_WRITE_DMA_EXT, .data = true, .dma = true,
|
||||
.lba48 = true, .write = true },
|
||||
{ .cmd = CMD_IDENTIFY, .data = true, .pio = true,
|
||||
.size = 512, .read = true },
|
||||
{ .cmd = READ_FPDMA_QUEUED, .data = true, .dma = true,
|
||||
.lba48 = true, .read = true, .ncq = true },
|
||||
{ .cmd = WRITE_FPDMA_QUEUED, .data = true, .dma = true,
|
||||
.lba48 = true, .write = true, .ncq = true },
|
||||
{ .cmd = CMD_READ_MAX, .lba28 = true },
|
||||
{ .cmd = CMD_READ_MAX_EXT, .lba48 = true },
|
||||
{ .cmd = CMD_FLUSH_CACHE, .data = false }
|
||||
};
|
||||
|
||||
struct AHCICommand {
|
||||
|
@ -263,20 +263,23 @@ enum {
|
||||
/* ATA Commands */
|
||||
enum {
|
||||
/* DMA */
|
||||
CMD_READ_DMA = 0xC8,
|
||||
CMD_READ_DMA_EXT = 0x25,
|
||||
CMD_WRITE_DMA = 0xCA,
|
||||
CMD_WRITE_DMA_EXT = 0x35,
|
||||
CMD_READ_DMA = 0xC8,
|
||||
CMD_READ_DMA_EXT = 0x25,
|
||||
CMD_WRITE_DMA = 0xCA,
|
||||
CMD_WRITE_DMA_EXT = 0x35,
|
||||
/* PIO */
|
||||
CMD_READ_PIO = 0x20,
|
||||
CMD_READ_PIO_EXT = 0x24,
|
||||
CMD_WRITE_PIO = 0x30,
|
||||
CMD_WRITE_PIO_EXT = 0x34,
|
||||
CMD_READ_PIO = 0x20,
|
||||
CMD_READ_PIO_EXT = 0x24,
|
||||
CMD_WRITE_PIO = 0x30,
|
||||
CMD_WRITE_PIO_EXT = 0x34,
|
||||
/* Misc */
|
||||
CMD_READ_MAX = 0xF8,
|
||||
CMD_READ_MAX_EXT = 0x27,
|
||||
CMD_FLUSH_CACHE = 0xE7,
|
||||
CMD_IDENTIFY = 0xEC
|
||||
CMD_READ_MAX = 0xF8,
|
||||
CMD_READ_MAX_EXT = 0x27,
|
||||
CMD_FLUSH_CACHE = 0xE7,
|
||||
CMD_IDENTIFY = 0xEC,
|
||||
/* NCQ */
|
||||
READ_FPDMA_QUEUED = 0x60,
|
||||
WRITE_FPDMA_QUEUED = 0x61,
|
||||
};
|
||||
|
||||
/* AHCI Command Header Flags & Masks*/
|
||||
|
Loading…
Reference in New Issue
Block a user