- 论坛徽章:
- 0
|
参考网上另一个人的相似现象作修改:
regarding dma_inv_range on cortex A9 SMP core....
http://www.spinics.net/linux/lists/arm-kernel/msg71314.html
及这个网页上链接的另一个现象:
http://lkml.org/lkml/2009/6/18/100
做下面的修改后,概率降为4%(试了50次,出现2次)
--- arch/arm/mm/dma-mapping.c (revision 169)
+++ arch/arm/mm/dma-mapping.c (working copy)
@@ -401,6 +401,7 @@
* platforms with CONFIG_DMABOUNCE.
* Use the driver DMA support - see dma-mapping.h (dma_sync_*)
*/
+extern void v7_flush_kern_cache_all(void);
void ___dma_single_cpu_to_dev(const void *kaddr, size_t size,
enum dma_data_direction dir)
{
@@ -408,6 +409,7 @@
BUG_ON(!virt_addr_valid(kaddr) || !virt_addr_valid(kaddr + size - 1));
+ v7_flush_kern_cache_all();
dmac_map_area(kaddr, size, dir);
paddr = __pa(kaddr);
ARM cortex A9 2.6.34
我都自己做板凳到第5楼了,也没人给点建议 |
|