Unsolved problem with WB caches on ARMv6
gonzo at bluezbox.com
Mon Dec 10 06:25:09 UTC 2012
One of the long-time issues with FreeBSD/ARMv6 is that Write-Back cache
mode does not work properly. On PandaBoard changing cache mode to WB from WT
causesUSB glitches (starting from stalls to network packets corruption) and random
memory corruptions that manifest themselves as a userland programs crashes.
gber@ tracked down one of the bugs several month ago, but it's still unusable
at least on my setup.
I spent some time debugging through busdma and USB code but failed to find
anything fishy. PandaBoard's USB host controller is EHCI. QH and QTDs are
flushed properly. Corruption pattern in packets is weird: it's not cacheline-size
it's like chunk of data is just missing from bulk transfer DMA buffer. L2 cache
The issue is not reproducible in QEMU.
Fix for arm/160431 applied to busdma-v6.c didn't help.
I'm out of ideas for now. May be Ian or Alan will have some suggestions where to look?
If you have setup with armv6 devices, I'd appreciate test results for this patch:
Just wondering if results differ from platform to platform.
More information about the freebsd-arm