Re: Marvel 88SE6121 fails with SATA-2/3 HDDs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/1/23 19:02, Hajo Noerenberg wrote:
> Am 31.01.2023 um 03:34 schrieb Damien Le Moal:
>> On 1/30/23 22:40, Hajo Noerenberg wrote
>>> Summary: With U-Boot and kernels <3.16 the drives work, even without jumper.
>>> I wonder if there is a way to get the drives working with up to date kernels.
>>> This would have the benefit of a.) no need to set jumpers and b.) getting
>>> bigger/newer drives like the WD30EFRX to work which probably do not have a
>>> downgrade-jumper.
>>
> 
> I forgot to mention the main benefit: Without the "downgrade-jumper" the drives are able to run at SATA-2 speed (the 88SE6121 is a SATA-2 controller). At least with kernel 2.6.x (ahci module) one can see the ST3500418AS running at 3Gbps:
> 
> [  151.957573] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [  151.958713] ata1.00: ATA-8: ST3500418AS, CC38, max UDMA/133
> [  151.958726] ata1.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 0/32)
> [  151.960062] ata1.00: configured for UDMA/133
> [  151.960397] scsi 0:0:0:0: Direct-Access     ATA      ST3500418AS      CC38 PQ: 0 ANSI: 5
> 
> And with kernel 2.6.x even the SATA-3 WD30EFRX runs at 3Gbps as well (no jumper, no kernel option) and has full 3TB accessible:
> 
> [  100.497589] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [  100.498145] ata1.00: HPA detected: current 5860531055, native 5860533168
> [  100.498165] ata1.00: ATA-9: WDC WD30EFRX-68EUZN0, 80.00A80, max UDMA/133
> [  100.498177] ata1.00: 5860531055 sectors, multi 0: LBA48 NCQ (depth 0/32)
> [  100.498853] ata1.00: configured for UDMA/133
> [  100.499187] scsi 0:0:0:0: Direct-Access     ATA      WDC WD30EFRX-68E 80.0 PQ: 0 ANSI: 5
> 
> 
> 
>> Can you try with libata.force=nolpm ? A lot of old WD drives have broken LPM.
>>
> 
> libata.force=nolpm slightly changes the kernel log: the drive is basically detected (the model name and drive geometry show up), but in the end it fails:
> 
> [   64.796687] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

The max 3gbps speed of the adapter is being detected/negotiated as can be
seen here.

> [   69.857963] ata3.00: qc timeout after 5000 msecs (cmd 0xec)
> [   69.863648] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
> [   70.184453] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [   70.191202] ata3.00: FORCE: horkage modified (nolpm)
> [   70.196248] ata3.00: LPM support broken, forcing max_power
> [   70.204387] ata3.00: HPA detected: current 5860531055, native 5860533168
> [   70.211203] ata3.00: ATA-9: WDC WD30EFRX-68EUZN0, 80.00A80, max UDMA/133

So this means that after forcing max power (nolpm), IDENTIFY works.

> [   70.218000] ata3.00: 5860531055 sectors, multi 0: LBA48 NCQ (depth 0/32)
> [   80.354002] ata3.00: qc timeout after 10000 msecs (cmd 0xec)
> [   80.359772] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
> [   80.365924] ata3.00: revalidation failed (errno=-5)

But then fails again here on a timeout, so the drive seems to be stuck
again... Given that this drive has HPA, can you try this patch:

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 36c1aca310e9..27ccb765e464 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3985,6 +3985,7 @@ static const struct ata_blacklist_entry
ata_device_blacklist [] = {
        { "HDS724040KLSA80",    "KFAOA20N",     ATA_HORKAGE_BROKEN_HPA },
        { "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA },
        { "WDC WD2500JD-00HBB0", "WD-WMAL71490727", ATA_HORKAGE_BROKEN_HPA },
+       { "WDC WD30EFRX-68EUZN0", NULL, ATA_HORKAGE_BROKEN_HPA |
ATA_HORKAGE_NOLPM},
        { "MAXTOR 6L080L4",     "A93.0500",     ATA_HORKAGE_BROKEN_HPA },

        /* this one allows HPA unlocking but fails IOs on the area */

Just to check if it is another drive with a broken HPA. You can also try
with libata.ignore_hpa=0 together with nolpm option.

> [   80.370851] ata3: limiting SATA link speed to 1.5 Gbps
> [   80.376037] ata3.00: limiting speed to UDMA/133:PIO3
> [   80.696310] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> [  111.586110] ata3.00: qc timeout after 30000 msecs (cmd 0xec)
> [  111.591884] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
> [  111.598028] ata3.00: revalidation failed (errno=-5)
> [  111.602961] ata3.00: disable device
> 
> Without libata.force=nolpm the model name does not show up, only "failed to IDENTIFY":
> 
> [  121.877545] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [  127.063106] ata3.00: qc timeout after 5000 msecs (cmd 0xec)
> [  127.068801] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
> [  127.389453] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [  137.558996] ata3.00: qc timeout after 10000 msecs (cmd 0xec)
> [  137.564772] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
> [  137.570930] ata3: limiting SATA link speed to 1.5 Gbps
> [  137.889346] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> 
> 
> I also checked with another drive, a WD5000AADS. With this drive the "nolpm" flag does not change the kernel log at all.
> 
>> Also, did you try with the pata_marvell driver instead of AHCI driver ?
>>
> 
> Yes, but no disks show up. Please see https://marc.info/?l=linux-ide&m=167474771722812&w=2
> 
> Hajo
> 
> 

-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux