You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARMv8架构下dcache_inval_poc超L1缓存范围的执行疑问

关于arm64架构下dcache_inval_poc函数超范围调用的疑问

我对Linux内核5.15版本中arm64架构的dcache_inval_poc(start, end)实现存在困惑。该函数未对传入的end地址做合法性检查,若上层调用(如dma_sync_single_for_cpu/dma_sync_single_for_device)传入的范围超出L1数据缓存大小——比如调用dcache_inval_poc(start, start+256KB)但L1 D-cache仅为32KB,会出现什么情况?

我梳理了该函数的汇编源码,将其循环逻辑转换为如下C伪代码:

x0_kaddr = start;
while (start < end) {
    dc_civac(x0_kaddr);
    x0_kaddr += cache_line_size;
}

当end - start大于L1 D-cache大小时,循环仍会执行,但此时x0_kaddr对应的地址已不在D缓存中。

内容的提问来源于stack exchange,提问作者windxlnx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:40:23