|
|
958e1b |
From e67d424de7c9f4ab359757195e8d3319c03b70a0 Mon Sep 17 00:00:00 2001
|
|
|
958e1b |
From: John Snow <jsnow@redhat.com>
|
|
|
958e1b |
Date: Mon, 8 Sep 2014 22:34:25 +0200
|
|
|
958e1b |
Subject: [PATCH 01/20] ide: Add wwn support to IDE-ATAPI drive
|
|
|
958e1b |
|
|
|
958e1b |
Message-id: <1410215665-27240-2-git-send-email-jsnow@redhat.com>
|
|
|
958e1b |
Patchwork-id: 60913
|
|
|
958e1b |
O-Subject: [RHEL7.1 qemu-kvm PATCH] ide: Add wwn support to IDE-ATAPI drive
|
|
|
958e1b |
Bugzilla: 1131316
|
|
|
958e1b |
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Fam Zheng <famz@redhat.com>
|
|
|
958e1b |
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
958e1b |
|
|
|
958e1b |
Although it is possible to specify the wwn
|
|
|
958e1b |
property for cdrom devices on the command line,
|
|
|
958e1b |
the underlying driver fails to relay this information
|
|
|
958e1b |
to the guest operating system via IDENTIFY.
|
|
|
958e1b |
|
|
|
958e1b |
This is a simple patch to correct that.
|
|
|
958e1b |
|
|
|
958e1b |
See ATA8-ACS, Table 22 parts 5, 6, and 9.
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
|
958e1b |
Reviewed-by: Fam Zheng <famz@redhat.com>
|
|
|
958e1b |
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
958e1b |
(cherry picked from commit c5fe97e359bf03db9a005433092f25d27d57398f)
|
|
|
958e1b |
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
|
958e1b |
---
|
|
|
958e1b |
hw/ide/core.c | 14 ++++++++++++++
|
|
|
958e1b |
1 file changed, 14 insertions(+)
|
|
|
958e1b |
|
|
|
958e1b |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
958e1b |
---
|
|
|
958e1b |
hw/ide/core.c | 14 ++++++++++++++
|
|
|
958e1b |
1 files changed, 14 insertions(+), 0 deletions(-)
|
|
|
958e1b |
|
|
|
958e1b |
diff --git a/hw/ide/core.c b/hw/ide/core.c
|
|
|
958e1b |
index a2947a9..98128fb 100644
|
|
|
958e1b |
--- a/hw/ide/core.c
|
|
|
958e1b |
+++ b/hw/ide/core.c
|
|
|
958e1b |
@@ -230,9 +230,23 @@ static void ide_atapi_identify(IDEState *s)
|
|
|
958e1b |
}
|
|
|
958e1b |
|
|
|
958e1b |
put_le16(p + 80, 0x1e); /* support up to ATA/ATAPI-4 */
|
|
|
958e1b |
+ if (s->wwn) {
|
|
|
958e1b |
+ put_le16(p + 84, (1 << 8)); /* supports WWN for words 108-111 */
|
|
|
958e1b |
+ put_le16(p + 87, (1 << 8)); /* WWN enabled */
|
|
|
958e1b |
+ }
|
|
|
958e1b |
+
|
|
|
958e1b |
#ifdef USE_DMA_CDROM
|
|
|
958e1b |
put_le16(p + 88, 0x3f | (1 << 13)); /* udma5 set and supported */
|
|
|
958e1b |
#endif
|
|
|
958e1b |
+
|
|
|
958e1b |
+ if (s->wwn) {
|
|
|
958e1b |
+ /* LE 16-bit words 111-108 contain 64-bit World Wide Name */
|
|
|
958e1b |
+ put_le16(p + 108, s->wwn >> 48);
|
|
|
958e1b |
+ put_le16(p + 109, s->wwn >> 32);
|
|
|
958e1b |
+ put_le16(p + 110, s->wwn >> 16);
|
|
|
958e1b |
+ put_le16(p + 111, s->wwn);
|
|
|
958e1b |
+ }
|
|
|
958e1b |
+
|
|
|
958e1b |
memcpy(s->identify_data, p, sizeof(s->identify_data));
|
|
|
958e1b |
s->identify_set = 1;
|
|
|
958e1b |
}
|
|
|
958e1b |
--
|
|
|
958e1b |
1.7.1
|
|
|
958e1b |
|