烟雾弹下的真实 发表于 2013-09-27 21:06

请问, pgprot_noncached的具体作用是什么?

如果我想讲io地址映射到应用层空间,内核mmap实现需要加 pgprot_noncached吗?

wwxxxxll 发表于 2013-09-29 09:47

本帖最后由 wwxxxxll 于 2013-09-29 11:58 编辑

在arch/arm/kernel/bios32.c下
      /*
         * Mark this as IO
         */
      vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

      if (remap_pfn_range(vma, vma->vm_start, phys,
                           vma->vm_end - vma->vm_start,
                           vma->vm_page_prot))
                return -EAGAIN;
是用了pgprot_noncached,
ldd3的话
引用设备内存不应当被处理器缓存.
常常系统 BIOS 做了正确设置

我觉得是要加的。

在arm里,在有mmu的情况下

pgprot_noncached(vma->vm_page_prot);
就是
(vma->vm_page_prot.pgprot & ~(L_PTE_MT_MASK)) | (_PTE_MT_UNCACHED)

_PTE_MT_UNCACHED这个应该在下面会用到,我没具体看,有兴趣可以讨论讨论!

linux驱动群:
163617970

哈师大出 发表于 2013-10-19 19:53

页: [1]
查看完整版本: 请问, pgprot_noncached的具体作用是什么?