[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-ide
Subject:    [PATCH] [libata]Send SRST to disks behind Sil3726 PMP.
From:       Gwendal Grignou <gwendal () google ! com>
Date:       2011-10-20 0:35:52
Message-ID: 1319070953-24391-1-git-send-email-gwendal () google ! com
[Download RAW message or body]

By issuing SRST,
. We re enable staggered spin up
. We allow slow disks to spin up while we are still in initial error handler

However, some controller fails sending SRST while the disk is spinning up
behind the port multiplier.
To avoid slow disk to be ignored, or link to be downgraded unnecessarily,
wait for the reset deadline if SRST fails before resetting the ATA port.

With a Sil3132.
Before the patch:
[  236.184036] ata4.15: hard resetting link
[  236.184038] ata4: controller in dubious state, performing PORT_RST
[  238.338048] ata4.15: SATA link up 1.5 Gbps (SStatus 113 SControl 10)
[  239.549102] ata4.00: hard resetting link
[  239.854315] ata4.00: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  239.854344] ata4.01: hard resetting link
[  240.159316] ata4.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  240.159344] ata4.02: hard resetting link
[  240.464316] ata4.02: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  240.464343] ata4.03: hard resetting link
[  240.769314] ata4.03: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  240.769342] ata4.04: hard resetting link
[  241.074316] ata4.04: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  241.074344] ata4.05: hard resetting link
[  241.379314] ata4.05: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  241.382672] ata4.00: configured for UDMA/100 
[  241.492027] ata4.01: failed to IDENTIFY (I/O error, err_mask=0x11)
[  241.492030] ata4.01: revalidation failed (errno=-5)
[  241.492033] ata4.15: hard resetting link

After the patch:
[   19.436422] ata4.15: Port Multiplier 1.1, 0x1095:0x3726 r23, 6 ports, feat 0x1/0x9
[   19.454715] ata4.00: hard resetting link
[   19.880032] ata4.00: softreset failed (SRST command error)
[   19.880048] ata4.00: failed to read SCR 0 (Emask=0x40)
[   19.880051] ata4.00: reset failed (errno=-85), retrying in 10 secs 
[   29.454092] ata4.00: reset failed, giving up
[   29.454099] ata4.15: hard resetting link
[   29.454102] ata4: controller in dubious state, performing PORT_RST 
[   31.608046] ata4.15: SATA link up 3.0 Gbps (SStatus 123 SControl 0)
[   31.608431] ata4.00: hard resetting link
[   31.924284] ata4.00: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   31.924335] ata4.01: hard resetting link 
[   32.350029] ata4.01: softreset failed (SRST command error)
[   32.460032] ata4.01: failed to read SCR 0 (Emask=0x1)
[   32.460036] ata4.01: reset failed (errno=-85), retrying in 10 secs 
[   41.924139] ata4.01: reset failed, giving up 
[   41.924146] ata4.15: hard resetting link
[   41.924148] ata4: controller in dubious state, performing PORT_RST
[   44.078047] ata4.15: SATA link up 3.0 Gbps (SStatus 123 SControl 0)
[   44.078384] ata4.00: hard resetting link

Patch also tested with Marvel 7042 and Sil3726.

Gwendal Grignou (1):
  [libata]Issue SRST to Sil3726 PMP

 drivers/ata/libata-eh.c  |   12 +++++++++++-
 drivers/ata/libata-pmp.c |    7 ++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

-- 
1.7.3.1
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic