Re: [PATCH] libata: fix read log timeout value

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

 



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>

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



[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