gpt4 book ai didi

linux - ioremap_wc() 是否创建页面结构和许多 PTE?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:45 24 4
gpt4 key购买 nike

众所周知,MMIO 空间被映射(例如通过/dev/mem,通过调用 remap_pfn_range())作为单个 PTE,因此没有结构页面。

在使用 ioremap_wc() 时是否做同样的事情,或者 ioremap_wc() 是否创建页面结构和许多 PTE?

操作系统:Linux x86_64

最佳答案

你的问题表达得有些困惑,但我想我可以回答。

首先,明确一点,/dev/mem 的 mmap(使用 remap_pfn_range)保证只使用一个 PTE。如果要映射的区域适合单个页面,则只使用一个;否则,它会根据需要使用尽可能多的数量。 (PTE 是页表条目;因此它只映射一个物理页面。页面大小(或大小)当然取决于体系结构。)

“结构页面”用于管理实际内存——即:系统 RAM/非 MMIO 空间。 (RAM 和 MMIO 空间都是物理页面,因为它们占据物理地址空间并具有地址,但结构页面仅用于可以放置程序和任意数据的通用内存。)

ioremap_wc 和所有其他 ioremap 变体很像通过/dev/mem 映射 MMIO 空间是正确的,只是它们专供内核使用。在最低级别,他们最终使用相同的代码来创建 PTE(除了那些 PTE 引用内核虚拟地址空间而不是用户虚拟地址空间)。 ioremap 调用分配一个“vm_struct”来跟踪虚拟到物理的映射,然后设置 PTE 以实际将虚拟地址映射到物理地址。

主要区别在于它们的跟踪/管理方式。内核代码应该干净地解除分配/释放它自己的 VM 区域和 PTE。 OTOH,不信任用户进程来执行此操作。因此,/dev/mem 的 mmap 设置了与进程关联的 VM 结构,以便在进程退出时,内核可以自行查找并释放任何映射等。

关于linux - ioremap_wc() 是否创建页面结构和许多 PTE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com