Unsolved problem with WB caches on ARMv6

Ian Lepore freebsd at damnhippie.dyndns.org
Mon Dec 10 14:21:57 UTC 2012


On Sun, 2012-12-09 at 22:24 -0800, Oleksandr Tymoshenko wrote:
> Hello,
> 
> 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:
> http://people.freebsd.org/~gonzo/patches/armv6-wb.diff
> Just wondering if results differ  from platform to platform. 

I was exchanging some ideas in email with Olivier last week about the
armv6 cache glitches, but we didn't come up with anything useful, just
lots of "yep, tried that already" things.

I ordered some test gear last week at adafruit and spent enough that
they threw in a free R-pi, so I should have an armv6 to play with soon.

-- Ian




More information about the freebsd-arm mailing list