Re: [PATCH] ahci: Extend ASM1061 43-bit DMA address quirk to other ASM106x parts

From: Damien Le Moal
Date: Tue Jan 30 2024 - 07:26:51 EST


On 1/30/24 20:59, Lennert Buytenhek wrote:
> On Tue, Jan 30, 2024 at 08:46:23PM +0900, Damien Le Moal wrote:
>
>>> ASMedia have confirmed that all ASM106x parts currently listed in
>>> ahci_pci_tbl[] suffer from the 43-bit DMA address limitation that we ran
>>> into on the ASM1061, and therefore, we need to apply the quirk added by
>>> commit 20730e9b2778 to the other supported ASM106x parts as well.
>>>
>>> Signed-off-by: Lennert Buytenhek <kernel@xxxxxxxxxxxxxx>
>>
>> I think this needs a cc: stable tag.
>
> The commit that is likely responsible for surfacing this issue is
> 791c2b17fb40 which went into v6.6 -- so would this then be appropriate,
> or do you think this should be backported to older versions as well?

Hmmm... given this is a hardware "bug", it seems safer to backport to all stable
& lts. From what I understand, the device may be doing bad DMA, regardless of
what the iommu is doing. Niklas ? you followed this more carefully than I did :)

>
> Cc: stable@xxxxxxxxxxxxxxx # 6.6.x
>
>
>>> ---
>>> drivers/ata/ahci.c | 10 +++++-----
>>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
>>> index d2460fa985b7..da2e74fce2d9 100644
>>> --- a/drivers/ata/ahci.c
>>> +++ b/drivers/ata/ahci.c
>>> @@ -606,13 +606,13 @@ static const struct pci_device_id ahci_pci_tbl[] = {
>>> { PCI_VDEVICE(PROMISE, 0x3781), board_ahci }, /* FastTrak TX8660 ahci-mode */
>>>
>>> /* ASMedia */
>>> - { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */
>>> - { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */
>>> + { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci_43bit_dma }, /* ASM1060 */
>>> + { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci_43bit_dma }, /* ASM1060 */
>>> { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci_43bit_dma }, /* ASM1061 */
>>> { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci_43bit_dma }, /* ASM1061/1062 */
>>> - { PCI_VDEVICE(ASMEDIA, 0x0621), board_ahci }, /* ASM1061R */
>>> - { PCI_VDEVICE(ASMEDIA, 0x0622), board_ahci }, /* ASM1062R */
>>> - { PCI_VDEVICE(ASMEDIA, 0x0624), board_ahci }, /* ASM1062+JMB575 */
>>> + { PCI_VDEVICE(ASMEDIA, 0x0621), board_ahci_43bit_dma }, /* ASM1061R */
>>> + { PCI_VDEVICE(ASMEDIA, 0x0622), board_ahci_43bit_dma }, /* ASM1062R */
>>> + { PCI_VDEVICE(ASMEDIA, 0x0624), board_ahci_43bit_dma }, /* ASM1062+JMB575 */
>>> { PCI_VDEVICE(ASMEDIA, 0x1062), board_ahci }, /* ASM1062A */
>>> { PCI_VDEVICE(ASMEDIA, 0x1064), board_ahci }, /* ASM1064 */
>>> { PCI_VDEVICE(ASMEDIA, 0x1164), board_ahci }, /* ASM1164 */

--
Damien Le Moal
Western Digital Research