Unsolved problem with WB caches on ARMv6

Oleksandr Tymoshenko 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
is disabled. 

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 mailing list