From: Niklas Cassel <cassel@kernel.org>
To: Arthur Husband <artmoty@gmail.com>
Cc: linux-ide@vger.kernel.org, dlemoal@kernel.org
Subject: Re: [PATCH v2] ata: ahci: force 32-bit DMA for JMicron JMB582/JMB585
Date: Mon, 6 Apr 2026 09:30:28 +0200 [thread overview]
Message-ID: <adNhFOz6IRUSGfq0@ryzen> (raw)
In-Reply-To: <20260403225314.96459-1-artmoty@gmail.com>
Hello Arthur,
On Fri, Apr 03, 2026 at 03:53:14PM -0700, Arthur Husband wrote:
> The JMicron JMB585 (and JMB582) SATA controllers advertise 64-bit DMA
> support via the S64A bit in the AHCI CAP register, but their 64-bit DMA
> implementation is defective. Under sustained I/O, DMA transfers targeting
> addresses above 4GB silently corrupt data -- writes land at incorrect
> memory addresses with no errors logged.
>
> The failure pattern is similar to the ASMedia ASM1061 (commit
> 2073d0e9b2778 ("ahci: add 43-bit DMA address quirk for ASMedia ASM1061
> controllers")), which also falsely advertised full 64-bit DMA support.
> However, the JMB585 requires a stricter 32-bit DMA mask rather than
> 43-bit, as corruption occurs with any address above 4GB.
>
> On the Minisforum N5 Pro specifically, the combination of the JMB585's
> broken 64-bit DMA with the AMD Family 1Ah (Strix Point) IOMMU causes
> silent data corruption that is only detectable via checksumming
> filesystems (BTRFS/ZFS scrub). The corruption occurs when 32-bit IOVA
> space is exhausted and the kernel transparently switches to 64-bit DMA
> addresses.
>
> Add device-specific PCI ID entries for the JMB582 (0x0582) and JMB585
> (0x0585) before the generic JMicron class match, using a new board type
> that combines AHCI_HFLAG_IGN_IRQ_IF_ERR (preserving existing behavior)
> with AHCI_HFLAG_32BIT_ONLY to force 32-bit DMA masks.
>
> Signed-off-by: Arthur Husband <artmoty@gmail.com>
> ---
You have sent two different V2 patches, however both of them fail to apply:
error: patch fragment without header at line 18: @@ -115,6 +116,14 @@ static const struct ata_port_info ahci_port_info[] = {
error: could not build fake ancestor
Patch failed at 0001 ata: ahci: force 32-bit DMA for JMicron JMB582/JMB585
> drivers/ata/ahci.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index XXXXXXX..XXXXXXX 100644
I think the problem is that you have index XXXXXXX..XXXXXXX.
The XXXXXXX should be pre- and post-image blob object SHA1s, e.g.:
index ad798e5246b49..3b65df914ebbe 100644
Please use git-format-patch to generate your patch and send a V3.
Kind regards,
Niklas
next prev parent reply other threads:[~2026-04-06 7:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-03 5:04 [PATCH] ahci: force 32-bit DMA for JMicron JMB582/JMB585 Arthur Husband
2026-04-03 7:02 ` Damien Le Moal
2026-04-03 8:12 ` Niklas Cassel
2026-04-03 8:19 ` Niklas Cassel
2026-04-03 19:17 ` [PATCH v2] ata: " Arthur Husband
2026-04-05 6:38 ` Damien Le Moal
2026-04-03 22:53 ` Arthur Husband
2026-04-06 7:30 ` Niklas Cassel [this message]
2026-04-06 20:11 ` [PATCH v3] " Arthur Husband
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=adNhFOz6IRUSGfq0@ryzen \
--to=cassel@kernel.org \
--cc=artmoty@gmail.com \
--cc=dlemoal@kernel.org \
--cc=linux-ide@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.