Patchwork Improve ATA IDENTIFY word 64 contents.

login
register
mail settings
Submitter Jonathan A. Kollasch
Date Sept. 2, 2010, 11:38 p.m.
Message ID <1283470724-26262-1-git-send-email-jakllsch@kollasch.net>
Download mbox | patch
Permalink /patch/63584/
State New
Headers show

Comments

Jonathan A. Kollasch - Sept. 2, 2010, 11:38 p.m.
Fill in word 64 of IDENTIFY data to indicate support for PIO modes 3 and 4.
This allows NetBSD guests to use UltraDMA modes instead of just PIO mode 0.
---
 hw/ide/core.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
Kevin Wolf - Sept. 3, 2010, 12:26 p.m.
Am 03.09.2010 01:38, schrieb Jonathan A. Kollasch:
> Fill in word 64 of IDENTIFY data to indicate support for PIO modes 3 and 4.
> This allows NetBSD guests to use UltraDMA modes instead of just PIO mode 0.

The Signed-off-by line is missing.

> ---
>  hw/ide/core.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/ide/core.c b/hw/ide/core.c
> index 3651d2b..2fa26f4 100644
> --- a/hw/ide/core.c
> +++ b/hw/ide/core.c
> @@ -139,6 +139,7 @@ static void ide_identify(IDEState *s)
>      put_le16(p + 61, s->nb_sectors >> 16);
>      put_le16(p + 62, 0x07); /* single word dma0-2 supported */
>      put_le16(p + 63, 0x07); /* mdma0-2 supported */
> +    put_le16(p + 64, 0x03); /* pio3-4 supported */
>      put_le16(p + 65, 120);
>      put_le16(p + 66, 120);
>      put_le16(p + 67, 120);
> @@ -199,12 +200,12 @@ static void ide_atapi_identify(IDEState *s)
>      put_le16(p + 53, 7); /* words 64-70, 54-58, 88 valid */
>      put_le16(p + 62, 7);  /* single word dma0-2 supported */
>      put_le16(p + 63, 7);  /* mdma0-2 supported */
> -    put_le16(p + 64, 0x3f); /* PIO modes supported */
> +    put_le16(p + 64, 3); /* pio3-4 supported */
>  #else
>      put_le16(p + 49, 1 << 9); /* LBA supported, no DMA */
>      put_le16(p + 53, 3); /* words 64-70, 54-58 valid */
>      put_le16(p + 63, 0x103); /* DMA modes XXX: may be incorrect */
> -    put_le16(p + 64, 1); /* PIO modes */
> +    put_le16(p + 64, 3); /* pio3-4 supported */
>  #endif
>      put_le16(p + 65, 0xb4); /* minimum DMA multiword tx cycle time */
>      put_le16(p + 66, 0xb4); /* recommended DMA multiword tx cycle time */

The two lines for byte 64 in ide_atapi_identify are now the same, so
they could be moved outside the #ifdef.

Kevin

Patch

diff --git a/hw/ide/core.c b/hw/ide/core.c
index 3651d2b..2fa26f4 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -139,6 +139,7 @@  static void ide_identify(IDEState *s)
     put_le16(p + 61, s->nb_sectors >> 16);
     put_le16(p + 62, 0x07); /* single word dma0-2 supported */
     put_le16(p + 63, 0x07); /* mdma0-2 supported */
+    put_le16(p + 64, 0x03); /* pio3-4 supported */
     put_le16(p + 65, 120);
     put_le16(p + 66, 120);
     put_le16(p + 67, 120);
@@ -199,12 +200,12 @@  static void ide_atapi_identify(IDEState *s)
     put_le16(p + 53, 7); /* words 64-70, 54-58, 88 valid */
     put_le16(p + 62, 7);  /* single word dma0-2 supported */
     put_le16(p + 63, 7);  /* mdma0-2 supported */
-    put_le16(p + 64, 0x3f); /* PIO modes supported */
+    put_le16(p + 64, 3); /* pio3-4 supported */
 #else
     put_le16(p + 49, 1 << 9); /* LBA supported, no DMA */
     put_le16(p + 53, 3); /* words 64-70, 54-58 valid */
     put_le16(p + 63, 0x103); /* DMA modes XXX: may be incorrect */
-    put_le16(p + 64, 1); /* PIO modes */
+    put_le16(p + 64, 3); /* pio3-4 supported */
 #endif
     put_le16(p + 65, 0xb4); /* minimum DMA multiword tx cycle time */
     put_le16(p + 66, 0xb4); /* recommended DMA multiword tx cycle time */