[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 23/24] IDE: Fill the IDENTIFY request consistently
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 23/24] IDE: Fill the IDENTIFY request consistently |
Date: |
Mon, 8 Sep 2014 11:51:48 +0100 |
From: John Snow <address@hidden>
IDE-HD, IDE-ATAPI and IDE-CFATA all fill the
identify buffer in slightly different ways,
this is a relatively minor patch to make them
uniform, to emphasize that:
(1) We build the s->identify_data cache first, then
(2) We copy it to s->io_buffer to fulfill the request.
Signed-off-by: John Snow <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
hw/ide/core.c | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/hw/ide/core.c b/hw/ide/core.c
index de0e5e9..e0232d4 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -81,13 +81,12 @@ static void ide_identify(IDEState *s)
unsigned int oldsize;
IDEDevice *dev = s->unit ? s->bus->slave : s->bus->master;
+ p = (uint16_t *)s->identify_data;
if (s->identify_set) {
- memcpy(s->io_buffer, s->identify_data, sizeof(s->identify_data));
- return;
+ goto fill_buffer;
}
+ memset(p, 0, sizeof(s->identify_data));
- memset(s->io_buffer, 0, 512);
- p = (uint16_t *)s->io_buffer;
put_le16(p + 0, 0x0040);
put_le16(p + 1, s->cylinders);
put_le16(p + 3, s->heads);
@@ -180,21 +179,22 @@ static void ide_identify(IDEState *s)
put_le16(p + 169, 1); /* TRIM support */
}
- memcpy(s->identify_data, p, sizeof(s->identify_data));
s->identify_set = 1;
+
+fill_buffer:
+ memcpy(s->io_buffer, p, sizeof(s->identify_data));
}
static void ide_atapi_identify(IDEState *s)
{
uint16_t *p;
+ p = (uint16_t *)s->identify_data;
if (s->identify_set) {
- memcpy(s->io_buffer, s->identify_data, sizeof(s->identify_data));
- return;
+ goto fill_buffer;
}
+ memset(p, 0, sizeof(s->identify_data));
- memset(s->io_buffer, 0, 512);
- p = (uint16_t *)s->io_buffer;
/* Removable CDROM, 50us response, 12 byte packets */
put_le16(p + 0, (2 << 14) | (5 << 8) | (1 << 7) | (2 << 5) | (0 << 0));
padstr((char *)(p + 10), s->drive_serial_str, 20); /* serial number */
@@ -247,8 +247,10 @@ static void ide_atapi_identify(IDEState *s)
put_le16(p + 111, s->wwn);
}
- memcpy(s->identify_data, p, sizeof(s->identify_data));
s->identify_set = 1;
+
+fill_buffer:
+ memcpy(s->io_buffer, p, sizeof(s->identify_data));
}
static void ide_cfata_identify(IDEState *s)
@@ -256,10 +258,10 @@ static void ide_cfata_identify(IDEState *s)
uint16_t *p;
uint32_t cur_sec;
- p = (uint16_t *) s->identify_data;
- if (s->identify_set)
+ p = (uint16_t *)s->identify_data;
+ if (s->identify_set) {
goto fill_buffer;
-
+ }
memset(p, 0, sizeof(s->identify_data));
cur_sec = s->cylinders * s->heads * s->sectors;
--
1.9.3
- [Qemu-devel] [PULL 17/24] MAINTAINERS: update sheepdog maintainer, (continued)
- [Qemu-devel] [PULL 17/24] MAINTAINERS: update sheepdog maintainer, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 16/24] qemu-nbd: fix indentation and coding style, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 13/24] block/archipelago: Use QEMU atomic builtins, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 15/24] qemu-nbd: add option to set detect-zeroes mode, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 18/24] libqos: add a simple first-fit memory allocator, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 14/24] rename parse_enum_option to qapi_enum_parse and make it public, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 19/24] qtest/ide: Uninitialize PC allocator, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 20/24] ide: Add wwn support to IDE-ATAPI drive, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 21/24] vmdk: fix vmdk_parse_extents() extent_file leaks, Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 22/24] vmdk: fix buf leak in vmdk_parse_extents(), Stefan Hajnoczi, 2014/09/08
- [Qemu-devel] [PULL 23/24] IDE: Fill the IDENTIFY request consistently,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 24/24] ide: Add resize callback to ide/core, Stefan Hajnoczi, 2014/09/08
- Re: [Qemu-devel] [PULL v2 00/24] Block patches, Peter Maydell, 2014/09/08