mm: ioremap: Add ioremap/iounmap_allowed()
authorKefeng Wang <wangkefeng.wang@huawei.com>
Tue, 7 Jun 2022 12:50:25 +0000 (20:50 +0800)
committerWill Deacon <will@kernel.org>
Mon, 27 Jun 2022 11:22:31 +0000 (12:22 +0100)
commit18e780b4e6ab89a3a10f46d151971863562c1c91
treeaf78abe8a479005ef769c60ac3d772d4a6afc014
parenta14fff1c0379d0422c5ca0084b0ab86ed7bedf3e
mm: ioremap: Add ioremap/iounmap_allowed()

Add special hook for architecture to verify addr, size or prot
when ioremap() or iounmap(), which will make the generic ioremap
more useful.

  ioremap_allowed() return a bool,
    - true means continue to remap
    - false means skip remap and return directly
  iounmap_allowed() return a bool,
    - true means continue to vunmap
    - false code means skip vunmap and return directly

Meanwhile, only vunmap the address when it is in vmalloc area
as the generic ioremap only returns vmalloc addresses.

Acked-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Baoquan He <bhe@redhat.com>
Link: https://lore.kernel.org/r/20220607125027.44946-5-wangkefeng.wang@huawei.com
Signed-off-by: Will Deacon <will@kernel.org>
include/asm-generic/io.h
mm/ioremap.c