【发布时间】:2022-12-01 08:33:10
【问题描述】:
我想在使用异构非一致性缓存(ARM A53 和 ARM M7 内核)的 Linux 平台上找到一种数据(L1/L2)缓存失效和用户模式刷新的方法。我的问题出在运行 SMP Linux 的 A53 端。 M7 内核运行一个裸机程序,我已经在该程序上实施了刷新/失效。
我知道可以为此编写一个内核模块,但在这样做之前,我想知道是否有任何隐藏的 API 可以这样做?我在 Linux 5.10.120 上运行。 如果不是,执行刷新/失效的最有效方法是什么?
我使用了__builtin___clear_cache,但是,我发现这只是为了说明。此外,我希望在操作上有更好的粒度,以避免在不需要时刷新时使行无效。
此外,asm/cachectl.h 中的 cacheflush 函数不可用(我的 CPU / 目标不存在标头)。
免责声明:这个问题被问过很多次。大多数答案都试图通过告诉“你不需要那样做......”来变得聪明。请不要回答这样的问题,因为我问这个问题的上下文需要数据缓存刷新/失效。
【问题讨论】:
标签: linux caching arm cpu-cache usermode