问一个mips cache alias的问题

发布于 2022-09-12 10:14:03 字数 855 浏览 12 评论 0

cachetlb.txt中描述

  void flush_dcache_page(struct page *page)
        Any time the kernel writes to a page cache page, _OR_
        the kernel is about to read from a page cache page and
        user space shared/writable mappings of this page potentially
        exist, this routine is called.

看这个函数的实现,感觉它只是把page->virtual的 page cache flush。

我怎么也想不明白,假设一个vma映射到某个page。现在kernel 写了一些内容到page上,然后执行flush_dcache_page。
为了也就是下次访问vma时能够得到fresh value。

但flush_dcache_page冲刷的是kseg0区域的 vaddr,  而vma 处于kuseg,而且由于cache alias的存在,vma和kseg0 vaddr是不在一个cache set中的,
所以冲刷也只是冲刷的 kseg0 vaddr cache entry,并没有对vma cache entry有影响。
如果vma cache entry没有 invalid,那它如何取得fresh value呢?

谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文