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