From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
To: marius@psihoexpert.ro
Cc: linux-ide@vger.kernel.org
Subject: Re: Bug report for ahci-mvebu driver
Date: Mon, 23 Jan 2023 16:02:06 +0900 [thread overview]
Message-ID: <cf5d33e3-995f-4346-b02a-b203ed94d9e3@opensource.wdc.com> (raw)
In-Reply-To: <45337bf4a17c9c879f9439c1138bc443@psihoexpert.ro>
On 1/20/23 03:46, marius@psihoexpert.ro wrote:
> January 19, 2023 2:29 AM, "Damien Le Moal" <damien.lemoal@opensource.wdc.com> wrote:
>
>> On 2023/01/19 4:43, marius@psihoexpert.ro wrote:
>>
>>> [ 73.075849][ T112] hardreset, Online=>Offline
>>> [ 73.075856][ T112] sata_set_spd_needed, scontrol=0x300
>>> [ 73.080328][ T112] __sata_set_spd_needed, initial limit=0xFFFFFFFF
>>> [ 73.085601][ T112] __sata_set_spd_needed, corrected limit=0xFFFFFFFF
>>> [ 73.091900][ T112] __sata_set_spd_needed, target=0x0
>>> [ 73.098386][ T112] __sata_set_spd_needed, spd=0x0
>>> [ 73.103475][ T112] __sata_set_spd_needed, final *scontrol=0x300
>>
>> Can you share the patch/diff printing these ? Just to be sure I look at the
>> right place :)
>
> --- a/drivers/ata/libata-sata.c
> +++ b/drivers/ata/libata-sata.c
> @@ -427,6 +430,7 @@ static int __sata_set_spd_needed(struct ata_link *link, u32 *scontrol)
> u32 limit, target, spd;
>
> limit = link->sata_spd_limit;
> + printk(KERN_DEBUG "__sata_set_spd_needed, initial limit=0x%X",limit);
>
> /* Don't configure downstream link faster than upstream link.
> * It doesn't speed up anything and some PMPs choke on such
> @@ -435,14 +439,18 @@ static int __sata_set_spd_needed(struct ata_link *link, u32 *scontrol)
> if (!ata_is_host_link(link) && host_link->sata_spd)
> limit &= (1 << host_link->sata_spd) - 1;
>
> + printk(KERN_DEBUG "__sata_set_spd_needed, corrected limit=0x%X",limit);
> if (limit == UINT_MAX)
> target = 0;
> else
> target = fls(limit);
>
> + printk(KERN_DEBUG "__sata_set_spd_needed, target=0x%X",target);
> spd = (*scontrol >> 4) & 0xf;
> *scontrol = (*scontrol & ~0xf0) | ((target & 0xf) << 4);
>
> + printk(KERN_DEBUG "__sata_set_spd_needed, spd=0x%X",spd);
> + printk(KERN_DEBUG "__sata_set_spd_needed, final *scontrol=0x%X",*scontrol);
> return spd != target;
> }
>
> @@ -467,6 +475,7 @@ static int sata_set_spd_needed(struct ata_link *link)
>
> if (sata_scr_read(link, SCR_CONTROL, &scontrol))
> return 1;
> + printk(KERN_DEBUG "sata_set_spd_needed, scontrol=0x%X",scontrol);
>
> return __sata_set_spd_needed(link, &scontrol);
> }
Thanks for that. Unfortunately, my PMP box is currently disconnected from
my test machine in the lab. Need to get there to reconnect it :)
But I think I got an idea of what is wrong here. Can you try this patch:
diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c
index 18ef14e749a0..cb12054c733f 100644
--- a/drivers/ata/libata-sata.c
+++ b/drivers/ata/libata-sata.c
@@ -436,7 +436,8 @@ static int __sata_set_spd_needed(struct ata_link
*link, u32 *scontrol)
limit &= (1 << host_link->sata_spd) - 1;
if (limit == UINT_MAX)
- target = 0;
+ /* Try highest gen 3 limit */
+ target = 3;
else
target = fls(limit);
Note that with further digging, it seems that even for a working system
with all drives detected, we always end-up with something like:
cat
/sys/devices/pci0000:00/0000:00:17.0/ata6/link6/ata_link/link6/sata_spd_limit
<unknown>
And same for hw_sata_spd_limit.
So the UINT_MAX blind initialization of the speed limit before probing
seems to never be corrected and set to the actual limit of the
link/device. That needs further correction. But for your case, the above
should fix the issue I think.
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2023-01-23 7:02 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-01 19:21 Bug report for ahci-mvebu driver Dinu Marius
2022-11-06 7:05 ` Damien Le Moal
2022-11-07 9:22 ` marius
2022-11-08 6:27 ` Damien Le Moal
2022-11-09 19:52 ` marius
2022-11-09 19:55 ` marius
2022-11-10 2:05 ` Damien Le Moal
2022-11-11 22:32 ` marius
2022-11-12 1:57 ` Damien Le Moal
2022-11-14 20:52 ` marius
2022-11-15 3:02 ` Damien Le Moal
2022-11-15 7:28 ` marius
2022-11-15 8:10 ` Damien Le Moal
2022-11-18 18:24 ` Dinu Marius
2022-11-24 2:40 ` Damien Le Moal
2022-12-04 1:41 ` marius
2022-12-04 10:22 ` Pali Rohár
2022-12-04 21:14 ` marius
2022-12-04 21:46 ` Pali Rohár
2022-12-05 2:02 ` Damien Le Moal
2022-12-06 6:08 ` Damien Le Moal
2022-12-07 18:27 ` marius
2022-12-07 21:54 ` Damien Le Moal
2022-12-07 22:51 ` Damien Le Moal
2022-12-08 18:06 ` marius
2022-12-09 0:34 ` Damien Le Moal
2022-12-09 2:58 ` Damien Le Moal
2022-12-09 7:31 ` marius
2022-12-09 9:28 ` Damien Le Moal
2022-12-09 18:30 ` marius
2023-01-14 18:01 ` marius
2023-01-15 23:37 ` Damien Le Moal
2023-01-17 8:26 ` Damien Le Moal
2023-01-18 19:43 ` marius
2023-01-19 0:29 ` Damien Le Moal
2023-01-19 18:46 ` marius
2023-01-23 7:02 ` Damien Le Moal [this message]
2023-01-23 20:00 ` marius
2023-01-23 23:00 ` Damien Le Moal
2023-01-24 8:04 ` marius
2023-01-24 9:53 ` Damien Le Moal
2023-01-24 17:02 ` marius
2023-01-27 5:13 ` Damien Le Moal
2023-01-27 6:28 ` Damien Le Moal
2023-01-28 17:08 ` marius
2023-01-29 2:23 ` Damien Le Moal
2023-01-29 10:24 ` marius
2023-01-30 1:16 ` Damien Le Moal
2023-01-30 2:38 ` Damien Le Moal
2023-01-30 7:23 ` marius
2023-01-30 7:37 ` Damien Le Moal
2023-01-30 23:22 ` Damien Le Moal
2023-01-31 7:20 ` marius
2023-01-31 7:28 ` Damien Le Moal
2023-02-07 18:40 ` marius
2023-02-07 23:39 ` Damien Le Moal
2023-02-08 12:17 ` marius
2023-02-08 23:00 ` Damien Le Moal
2023-02-12 13:14 ` marius
2023-02-12 23:11 ` Damien Le Moal
2023-01-24 17:06 ` Bug report for sata_via driver marius
2023-01-25 1:26 ` Damien Le Moal
2022-12-08 21:26 ` Bug report for ahci-mvebu driver Pali Rohár
2022-12-09 1:54 ` Damien Le Moal
2022-11-26 14:26 ` Pali Rohár
2023-01-23 9:10 ` Hajo Noerenberg
2023-01-23 12:13 ` Damien Le Moal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cf5d33e3-995f-4346-b02a-b203ed94d9e3@opensource.wdc.com \
--to=damien.lemoal@opensource.wdc.com \
--cc=linux-ide@vger.kernel.org \
--cc=marius@psihoexpert.ro \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox