On 2021/11/08 18:47, Geert Uytterhoeven wrote: > Hi Damien, > > On Fri, Nov 5, 2021 at 8:31 AM Damien Le Moal > <damien.lemoal@xxxxxxxxxxxxxxxxxx> wrote: >> Some ATA drives are very slow to respond to READ_LOG_EXT and >> READ_LOG_DMA_EXT commands issued from ata_dev_configure() when the >> device is revalidated right after resuming a system or inserting the >> ATA adapter driver (e.g. ahci). The default 5s timeout >> (ATA_EH_CMD_DFL_TIMEOUT) used for these commands is too short, causing >> errors during the device configuration. Ex: >> >> ... >> ata9: SATA max UDMA/133 abar m524288@0x9d200000 port 0x9d200400 irq 209 >> ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300) >> ata9.00: ATA-9: XXX XXXXXXXXXXXXXXX, XXXXXXXX, max UDMA/133 >> ata9.00: qc timeout (cmd 0x2f) >> ata9.00: Read log page 0x00 failed, Emask 0x4 >> ata9.00: Read log page 0x00 failed, Emask 0x40 >> ata9.00: NCQ Send/Recv Log not supported >> ata9.00: Read log page 0x08 failed, Emask 0x40 >> ata9.00: 27344764928 sectors, multi 16: LBA48 NCQ (depth 32), AA >> ata9.00: Read log page 0x00 failed, Emask 0x40 >> ata9.00: ATA Identify Device Log not supported >> ata9.00: failed to set xfermode (err_mask=0x40) >> ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300) >> ata9.00: configured for UDMA/133 >> ... >> >> The timeoutout error causes a soft reset of the drive link, followed in > > timeout > >> most cases by a successful revalidation as that give enough time to the >> drive to become fully ready to quickly process the read log commands. >> However, in some cases, this also fails resulting in the device being >> dropped. >> >> Fix this by using adding the ata_eh_revalidate_timeouts entries for the >> READ_LOG_EXT and READ_LOG_DMA_EXT commands. This defines a timeout >> increased to 15s, retriable one time. >> >> Reported-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> >> Cc: stable@xxxxxxxxxxxxxxx >> Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > > Thanks for your patch! Impact on system resume on Salvator-XS: > > s2idle: > > ata1: link resume succeeded after 1 retries > ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) > -ata1.00: qc timeout (cmd 0x2f) > -ata1.00: Read log page 0x00 failed, Emask 0x4 > -ata1.00: ATA Identify Device Log not supported > -ata1.00: failed to set xfermode (err_mask=0x40) > -ata1: link resume succeeded after 1 retries > -ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) > ata1.00: ATA Identify Device Log not supported > ata1.00: ATA Identify Device Log not supported > ata1.00: configured for UDMA/133 > > s2ram: > > ata1: link resume succeeded after 1 retries > ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) > -ata1.00: qc timeout (cmd 0x2f) > -ata1.00: Read log page 0x00 failed, Emask 0x4 > -ata1.00: ATA Identify Device Log not supported > -ata1.00: failed to set xfermode (err_mask=0x40) > -ata1: link resume succeeded after 1 retries > -ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) > -ata1.00: NODEV after polling detection > -ata1.00: revalidation failed (errno=-2) > -ata1: link resume succeeded after 1 retries > -ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) > ata1.00: ATA Identify Device Log not supported > ata1.00: ATA Identify Device Log not supported > ata1.00: configured for UDMA/133 > > Tested-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Great ! Thanks for testing. > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds > -- Damien Le Moal Western Digital Research