Re: [REGRESSION] Silent SATA read corruption with dma-iommu on AMD 600-series AHCI (6.19 good, 7.0+ bad)

Mario Limonciello <[email protected]>
Newsgroups gmane.linux.ide,gmane.linux.block
Message-ID <[email protected]>

On 8/28/26 10:24, Mikael Etienne wrote:
> On 8/28/2026 6:22 PM, Limonciello, Mario wrote:
>> BUT the issue internally does show the issue is specificially once the
>> 32-bit IOVA space is exhausted.
>>
>> Unfortunately; the solution is currently a BIOS change in how the type
>> bytes of the IOVA is handled.
> 
> Hi Mario,
> 
> Thanks -- the 32-bit IOVA exhaustion detail is the first thing that explains
> the timing I see. My failure takes 3h25m of sustained reads to appear, and a
> reboot clears it completely with the same kernel and the same on-disk data.
> "Low IOVA space works, high IOVA space does not, and a reboot starts from an
> empty low space again" fits that exactly.
> 
> The ASM1166 write-up you linked is also a very close match: a controller that
> advertises CAP.S64A but cannot actually reach above 4 GB. My SATA controller is
> the AMD 600-series chipset one (1022:43f6), which is Promontory/ASMedia silicon,
> and it likewise advertises 64bit in its AHCI flags.
> 
> Firmware, since you mention a BIOS fix: I am already on the latest available for
> this board.
> 
>    Gigabyte X870I AORUS PRO ICE
>    BIOS FB1c, 2026-07-21, AMI, platform firmware revision 5.41
>    AGESA!V9 ComboAm5PI 1.3.0.1c
>    CPU microcode 0x0a70520a
> 
> So whatever BIOS-side change you have internally is either not in AGESA
> 1.3.0.1c, or not sufficient on this board.

It's not in any AGESA release yet.  This is very fresh information I am 
sharing that we have root caused the issue and have a proposed 
modification.  It will take a while to make it through the process 
machinery.
> 
> On the bisection: before committing to two weeks, I would like to try making the
> reproducer fast. If the trigger really is 32-bit IOVA exhaustion, then booting
> with iommu.forcedac=1 alone should hand out high IOVAs immediately and fail in
> minutes rather than after 3h25m. If that works, a v6.19..v7.0 bisection becomes
> an evening rather than a fortnight, and you would also have a reproducer that is
> practical to run in a lab.

We do have a reproducer in our lab environment that will rapidly 
allocate and trip this issue which is how we could analyze it and root 
cause it.

> 
> I will try that tonight, with all services stopped, then the
> amd_iommu=pgtbl_v2 iommu.forcedac=1 combination Vasant asked for. I will report
> bytes re-read, wall time and workload rather than a verdict.
> 
> If you already know that forcedac alone will not behave that way, please tell me
> and I will not waste the evening on it.
> 
> And to be straight about the rest: this is a production home server, so a
> two-week bisection is a real cost for me. The reproducer is three lines of fio.
> If you can run it on comparable hardware in your lab, that would very likely be
> faster than me doing it here -- and I am happy to run any specific kernel or
> debug patch you want in the meantime.

I don't yet have any confirmation we can patch this at runtime.  If I do 
come up with a way to do that which works will let you know.

By chance did this issue coincide with you switching from something 
different to the Ryzen 7 8700G?  For example switching from Raphael or 
Granite Ridge parts to that Phoenix part.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.