- 论坛徽章:
- 1
|
本帖最后由 arm-linux-gcc 于 2013-09-24 11:10 编辑
cache有cacheable和bufferable两个属性
L_PTE_MT_UNCACHED是同时关掉了cacheable和bufferable
L_PTE_MT_BUFFERABLE只是关掉了cacheable
cortex-a9的都是默认打开了CONFIG_ARM_DMA_MEM_BUFFERABLE的
config ARM_DMA_MEM_BUFFERABLE
bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7
depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \
MACH_REALVIEW_PB11MP)
default y if CPU_V6 || CPU_V6K || CPU_V7
help
Historically, the kernel has used strongly ordered mappings to
provide DMA coherent memory. With the advent of ARMv7, mapping
memory with differing types results in unpredictable behaviour,
so on these CPUs, this option is forced on.
Multiple mappings with differing attributes is also unpredictable
on ARMv6 CPUs, but since they do not have aggressive speculative
prefetch, no harm appears to occur.
However, drivers may be missing the necessary barriers for ARMv6,
and therefore turning this on may result in unpredictable driver
behaviour. Therefore, we offer this as an option.
You are recommended say 'Y' here and debug any affected drivers.
看看有关cache原理的文章就知道了,一搜一大把
|
|