【发布时间】:2019-02-15 21:32:32
【问题描述】:
我正在寻找一种使用内核模块刷新 L1-L2 缓存的方法。 有没有办法完全刷新整个集群缓存(4 核配置),甚至更好,将脏缓存行写回主内存?
【问题讨论】:
标签: caching linux-kernel arm kernel-module armv8
我正在寻找一种使用内核模块刷新 L1-L2 缓存的方法。 有没有办法完全刷新整个集群缓存(4 核配置),甚至更好,将脏缓存行写回主内存?
【问题讨论】:
标签: caching linux-kernel arm kernel-module armv8
您想从内核模块中刷新缓存听起来很奇怪。这应该由核心内核部分完成,作为驱动程序,您不必担心这一点。
您是否有任何特定原因需要在驱动程序中执行此操作?
【讨论】:
volatile 关键字 (see here) 呢?它首先防止将数据写入缓存
我想你想看看 Mel Gorman 的“了解 Linux 虚拟内存管理器”[1] 的 3.9。我认为您正在寻找的是 flush_cache_page(...)
【讨论】:
好吧,看起来在不同架构中刷新缓存的方式实际上是不同的。不过,我没有找到可行的实现。但是,我所做的是找到要刷新的特定页面的页表条目(PTE),并将内存属性更改为不可缓存。然后,数据直接进入DRAM。 (ARMv8) 干杯
【讨论】: