John Knipper
07/29/2026, 7:11 PMCachePostDMA() on aarch64 was inheriting the generic version, which is deliberately empty because x86 snoops the bus and doesn't need it. On a non-coherent ARM machine that means the CPU cheerfully reads stale cache instead of what the device just wrote. The symptom was beautifully misleading: a USB config descriptor reporting a total length of zero, so enumeration just stopped, with no error anywhere.
The pointer translated twice. The Pi's firmware maps RAM at bus address 0x4_00000000, not identity. Two layers were each helpfully applying that offset, producing addresses in the 0x8_… range that belong to nobody. Every command came back "Parameter Error" until we found it — and while preparing the patch it turned out upstream was already correct and the double translation was mine.
The mouse default that overwrote itself. Unrelated to the Pi: intuition sets the pointer speed divisor and then copies the defaults table over the top two lines later, so the assignment never survived. Every AROS system without saved input prefs has been running with no pointer scaling at all. Fine with a 400 dpi mouse, unusable with a modern one.
Next up: WiFi, audio, and getting the remaining Pi 4 platform work into shape for upstream.bsek
07/29/2026, 8:12 PM