csky: Fixup io-range page attribute for mmap("/dev/mem")

Some user space drivers need accessing IO address and IO remap need
SO(strong order) page-attribute to make IO operation correct. So we
need add SO-page-attr for all non-memory address.

Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Reported-by: Fan Xiaodong <xiaodong.fan@boyahualu.com>
This commit is contained in:
Guo Ren
2019-01-30 20:13:11 +08:00
父節點 0f231dcfc6
當前提交 76d21d186a
共有 2 個文件被更改,包括 19 次插入0 次删除

查看文件

@@ -46,3 +46,17 @@ void iounmap(void __iomem *addr)
vunmap((void *)((unsigned long)addr & PAGE_MASK));
}
EXPORT_SYMBOL(iounmap);
pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
unsigned long size, pgprot_t vma_prot)
{
if (!pfn_valid(pfn)) {
vma_prot.pgprot |= _PAGE_SO;
return pgprot_noncached(vma_prot);
} else if (file->f_flags & O_SYNC) {
return pgprot_noncached(vma_prot);
}
return vma_prot;
}
EXPORT_SYMBOL(phys_mem_access_prot);