path: root/mm/nommu.c
diff options
authorSouptick Joarder <>2019-05-13 17:21:56 -0700
committerLinus Torvalds <>2019-05-14 09:47:50 -0700
commita667d7456f189e3422725dddcd067537feac49c0 (patch)
treee9dbd46e7325f5ecf345f88c5f0e351b5888c32b /mm/nommu.c
parent62afcd1cb8e355330a699b456f05f781e877cc4f (diff)
mm: introduce new vm_map_pages() and vm_map_pages_zero() API
Patch series "mm: Use vm_map_pages() and vm_map_pages_zero() API", v5. This patch (of 5): Previouly drivers have their own way of mapping range of kernel pages/memory into user vma and this was done by invoking vm_insert_page() within a loop. As this pattern is common across different drivers, it can be generalized by creating new functions and using them across the drivers. vm_map_pages() is the API which can be used to map kernel memory/pages in drivers which have considered vm_pgoff vm_map_pages_zero() is the API which can be used to map a range of kernel memory/pages in drivers which have not considered vm_pgoff. vm_pgoff is passed as default 0 for those drivers. We _could_ then at a later "fix" these drivers which are using vm_map_pages_zero() to behave according to the normal vm_pgoff offsetting simply by removing the _zero suffix on the function name and if that causes regressions, it gives us an easy way to revert. Tested on Rockchip hardware and display is working, including talking to Lima via prime. Link: Signed-off-by: Souptick Joarder <> Suggested-by: Russell King <> Suggested-by: Matthew Wilcox <> Reviewed-by: Mike Rapoport <> Tested-by: Heiko Stuebner <> Cc: Michal Hocko <> Cc: "Kirill A. Shutemov" <> Cc: Vlastimil Babka <> Cc: Rik van Riel <> Cc: Stephen Rothwell <> Cc: Peter Zijlstra <> Cc: Robin Murphy <> Cc: Joonsoo Kim <> Cc: Thierry Reding <> Cc: Kees Cook <> Cc: Marek Szyprowski <> Cc: Stefan Richter <> Cc: Sandy Huang <> Cc: David Airlie <> Cc: Oleksandr Andrushchenko <> Cc: Joerg Roedel <> Cc: Pawel Osciak <> Cc: Kyungmin Park <> Cc: Boris Ostrovsky <> Cc: Juergen Gross <> Cc: Mauro Carvalho Chehab <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'mm/nommu.c')
1 files changed, 14 insertions, 0 deletions
diff --git a/mm/nommu.c b/mm/nommu.c
index 749276beb109..b492fd1fcf9f 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -473,6 +473,20 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
+int vm_map_pages(struct vm_area_struct *vma, struct page **pages,
+ unsigned long num)
+ return -EINVAL;
+int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages,
+ unsigned long num)
+ return -EINVAL;
* sys_brk() for the most part doesn't need the global kernel
* lock, except when an application is doing something nasty