On Mon, Jun 01, 2020 at 09:52:22PM -0700, Joerg Roedel wrote: > Track at which levels in the page-table entries were modified by > vmap/vunmap. > > After the page-table has been modified, use that information do decide > whether the new arch_sync_kernel_mappings() needs to be called. > > [a...@linux-foundation.org: map_kernel_range_noflush() needs the > arch_sync_kernel_mappings() call] > Signed-off-by: Joerg Roedel <jroe...@suse.de> > Signed-off-by: Andrew Morton <a...@linux-foundation.org> > Acked-by: Andy Lutomirski <l...@kernel.org> > Acked-by: Peter Zijlstra (Intel) <pet...@infradead.org> > Cc: Arnd Bergmann <a...@arndb.de> > Cc: Christoph Hellwig <h...@lst.de> > Cc: Dave Hansen <dave.han...@linux.intel.com> > Cc: "H . Peter Anvin" <h...@zytor.com> > Cc: Ingo Molnar <mi...@elte.hu> > Cc: Matthew Wilcox (Oracle) <wi...@infradead.org> > Cc: Michal Hocko <mho...@kernel.org> > Cc: "Rafael J. Wysocki" <r...@rjwysocki.net> > Cc: Steven Rostedt (VMware) <rost...@goodmis.org> > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Vlastimil Babka <vba...@suse.cz> > Link: http://lkml.kernel.org/r/20200515140023.25469-3-j...@8bytes.org > Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
This patch causes crashes with all my ppc64 boot tests, in various locations depending on the platform. Reverting it together with its companion "mm/ioremap: track which page-table levels were modified" fixes the problem. Various logs are at https://kerneltests.org/builders/qemu-ppc64-master/builds/1442/steps/qemubuildcommand/logs/stdio Just for completeness, bisect log attached. Guenter --- # bad: [f6aee505c71bbb035dde146caf5a6abbf3ccbe47] Merge tag 'x86-timers-2020-06-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip # good: [b23c4771ff62de8ca9b5e4a2d64491b2fb6f8f69] Merge tag 'docs-5.8' of git://git.lwn.net/linux git bisect start 'HEAD' 'b23c4771ff62' # good: [c41219fda6e04255c44d37fd2c0d898c1c46abf1] Merge tag 'drm-intel-next-fixes-2020-05-20' of git://anongit.freedesktop.org/drm/drm-intel into drm-next git bisect good c41219fda6e04255c44d37fd2c0d898c1c46abf1 # bad: [1966391fa576e1fb2701be8bcca197d8f72737b7] mm/migrate.c: attach_page_private already does the get_page git bisect bad 1966391fa576e1fb2701be8bcca197d8f72737b7 # bad: [c5d6c13843880ad0112f0513f3eb041b258be66e] Merge tag 'mmc-v5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc git bisect bad c5d6c13843880ad0112f0513f3eb041b258be66e # bad: [94709049fb8442fb2f7b91fbec3c2897a75e18df] Merge branch 'akpm' (patches from Andrew) git bisect bad 94709049fb8442fb2f7b91fbec3c2897a75e18df # good: [a29adb6209cead1f6c34a8d72481fb183bfc2d68] mm: rename vmap_page_range to map_kernel_range git bisect good a29adb6209cead1f6c34a8d72481fb183bfc2d68 # good: [56446efab9ce4961fe0fe6bbc5bc66374b08b9f3] Merge branch 'uaccess.__copy_from_user' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs git bisect good 56446efab9ce4961fe0fe6bbc5bc66374b08b9f3 # good: [17839856fd588f4ab6b789f482ed3ffd7c403e1f] gup: document and work around "COW can break either way" issue git bisect good 17839856fd588f4ab6b789f482ed3ffd7c403e1f # good: [ebcdd3074a729f9ba351278e1b42d7ae7fcdf236] arm64: use __vmalloc_node in arch_alloc_vmap_stack git bisect good ebcdd3074a729f9ba351278e1b42d7ae7fcdf236 # bad: [86cf69f1d893d48fdb0382a940f2523409406423] x86/mm/32: implement arch_sync_kernel_mappings() git bisect bad 86cf69f1d893d48fdb0382a940f2523409406423 # good: [d8626138009ba58ae2c22356966c2edaa1f1c3b5] mm: add functions to track page directory modifications git bisect good d8626138009ba58ae2c22356966c2edaa1f1c3b5 # bad: [6c0c7d2b365b21a413f6d75772a8a4a2c7d36916] mm/ioremap: track which page-table levels were modified git bisect bad 6c0c7d2b365b21a413f6d75772a8a4a2c7d36916 # bad: [2ba3e6947aed9bb9575eb1603c0ac6e39185d32a] mm/vmalloc: track which page-table levels were modified git bisect bad 2ba3e6947aed9bb9575eb1603c0ac6e39185d32a # first bad commit: [2ba3e6947aed9bb9575eb1603c0ac6e39185d32a] mm/vmalloc: track which page-table levels were modified