Re: AW: PowerPC PCI DMA issues (prefetch/coherency?)
From: Stefan Roese <sr@denx.de>
Date: 2009-09-11 05:12:33
On Friday 11 September 2009 04:44:34 Benjamin Herrenschmidt wrote:
On Thu, 2009-09-10 at 13:30 -0700, Pravin Bathija wrote:quoted
There is also a patch that was submitted for 440EPX a couple of years back. The 440EPX SOC causes hangs with Memory Read Multiple (MRM) commands. Whether MRM is used or not depends on the value of PCI_CACHE_LINE_SIZE register. I see that the changes are no longer present in linux 2.6.30+ kernels. Although the patch certainly resolved the hang issue with Silicon Image 680 PATA card as the 680 driver attempts to use MRM commands - I don't know if it would resolve the data corruption issue. It is certainly worth trying in my opinion. Below is a link to the patch submission: http://git.denx.de/?p=linux-2.6-denx.git;a=commit;h=cffefde924123e685327 48dd58fcb780eab5e219The changes in the above repository is a quick hack that can't be merged as-is (and afaik hasn't been submitted). If indeed we need to clamp the PCI cache line size on those critters, then we need something in ppc4xx_pci.c to detect the need, set pci_cache_line_size to 0 and eventually fixup the existing values in devices in case u-boot don't have them right. Care to send a patch ? :-)
It's already there. See commit: 5ce4b59653b2c2053cd9a011918ac1e4747f24cc powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata Cheers, Stefan