Message ID | 20230129124235.209895-3-rppt@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm, arch: add generic implementation of pfn_valid() for FLATMEM | expand |
On 29.01.23 13:42, Mike Rapoport wrote: > From: "Mike Rapoport (IBM)" <rppt@kernel.org> > > The MMU variant uses generic definitions of page_to_pfn() and > pfn_to_page(), but !MMU defines them in include/asm/page_no.h for no > good reason. > > Include asm-generic/memory_model.h in the common include/asm/page.h and > drop redundant definitions. > > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> > Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> > Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- Reviewed-by: David Hildenbrand <david@redhat.com>
Hi, On Sun, Jan 29, 2023 at 02:42:33PM +0200, Mike Rapoport wrote: > From: "Mike Rapoport (IBM)" <rppt@kernel.org> > > The MMU variant uses generic definitions of page_to_pfn() and > pfn_to_page(), but !MMU defines them in include/asm/page_no.h for no > good reason. > > Include asm-generic/memory_model.h in the common include/asm/page.h and > drop redundant definitions. > > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> > Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> > Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> This patch results in a boot failure when trying to boot the mcf5208evb qemu emulation. Reverting it together with "mm, arch: add generic implementation of pfn_valid() for FLATMEM" fixes the problem. There is no error log - the emulation hangs silently until aborted. Guenter --- bisect log: # bad: [6ba8a227fd19d19779005fb66ad7562608e1df83] Add linux-next specific files for 20230210 # good: [4ec5183ec48656cec489c49f989c508b68b518e3] Linux 6.2-rc7 git bisect start 'HEAD' 'v6.2-rc7' # good: [94613f0efc69ed41f9229ef5c294db3ec37145da] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git git bisect good 94613f0efc69ed41f9229ef5c294db3ec37145da # good: [19e62c715fe70dae4582c2874ed3e66715d09af6] Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git git bisect good 19e62c715fe70dae4582c2874ed3e66715d09af6 # good: [5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6] Merge branch 'for-next' of https://gitlab.com/peda-linux/mux.git git bisect good 5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6 # good: [c349bf6ec83903b20fe570c5609b9a864a64e09c] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode.git git bisect good c349bf6ec83903b20fe570c5609b9a864a64e09c # good: [5a06a9f17454df38f35672be522ff5eb9b4277d2] selftest: add testing unsharing and counting ksm zero page git bisect good 5a06a9f17454df38f35672be522ff5eb9b4277d2 # bad: [f5d115a7b06e5661ed5218ffa9a2644c4ff1c135] Merge branch 'mm-nonmm-unstable' into mm-everything git bisect bad f5d115a7b06e5661ed5218ffa9a2644c4ff1c135 # bad: [acb018d6ea0c055381fba7dddaef386ee28f8075] mm/vmalloc.c: allow vread() to read out vm_map_ram areas git bisect bad acb018d6ea0c055381fba7dddaef386ee28f8075 # good: [1a5d9782ac969dc6e61c6786500b5160603188ea] mm/mmap: remove __vma_adjust() git bisect good 1a5d9782ac969dc6e61c6786500b5160603188ea # good: [4b32363697de957dcc890b6245bec3f58903639a] arm: include asm-generic/memory_model.h from page.h rather than memory.h git bisect good 4b32363697de957dcc890b6245bec3f58903639a # bad: [328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8] mm/migrate: convert isolate_movable_page() to use folios git bisect bad 328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8 # bad: [b704c765b08cabe82adf76a4d1a74f3688eee410] mm/mempolicy: convert queue_pages_pmd() to queue_folios_pmd() git bisect bad b704c765b08cabe82adf76a4d1a74f3688eee410 # bad: [e5734c8b0edfd2a053a5c256189586a3b1e9f63d] mm, arch: add generic implementation of pfn_valid() for FLATMEM git bisect bad e5734c8b0edfd2a053a5c256189586a3b1e9f63d # bad: [ad8aecea034c591b9754bc5908da9719853aa7fa] mips: drop definition of pfn_valid() for DISCONTIGMEM git bisect bad ad8aecea034c591b9754bc5908da9719853aa7fa # bad: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU git bisect bad 1f6271a0dfdf952c2e3981f424784d48f243a2be # first bad commit: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU
Hi, On Sun, Feb 12, 2023 at 09:35:13AM -0800, Guenter Roeck wrote: > Hi, > > On Sun, Jan 29, 2023 at 02:42:33PM +0200, Mike Rapoport wrote: > > From: "Mike Rapoport (IBM)" <rppt@kernel.org> > > > > The MMU variant uses generic definitions of page_to_pfn() and > > pfn_to_page(), but !MMU defines them in include/asm/page_no.h for no > > good reason. > > > > Include asm-generic/memory_model.h in the common include/asm/page.h and > > drop redundant definitions. > > > > Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> > > Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> > > Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> > > This patch results in a boot failure when trying to boot the mcf5208evb qemu > emulation. Reverting it together with "mm, arch: add generic implementation > of pfn_valid() for FLATMEM" fixes the problem. There is no error log - the > emulation hangs silently until aborted. With the patch below I was able to get to the mount of the root file system, but I don't have one, so I couldn't test the boot properly. diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h index 43ff6b109ebb..060e4c0e7605 100644 --- a/arch/m68k/include/asm/page_no.h +++ b/arch/m68k/include/asm/page_no.h @@ -28,6 +28,8 @@ extern unsigned long memory_end; #define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET) && \ ((unsigned long)(kaddr) < memory_end)) +#define ARCH_PFN_OFFSET PHYS_PFN(PAGE_OFFSET_RAW) + #endif /* __ASSEMBLY__ */ #endif /* _M68K_PAGE_NO_H */ > Guenter > > --- > bisect log: > > # bad: [6ba8a227fd19d19779005fb66ad7562608e1df83] Add linux-next specific files for 20230210 > # good: [4ec5183ec48656cec489c49f989c508b68b518e3] Linux 6.2-rc7 > git bisect start 'HEAD' 'v6.2-rc7' > # good: [94613f0efc69ed41f9229ef5c294db3ec37145da] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git > git bisect good 94613f0efc69ed41f9229ef5c294db3ec37145da > # good: [19e62c715fe70dae4582c2874ed3e66715d09af6] Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git > git bisect good 19e62c715fe70dae4582c2874ed3e66715d09af6 > # good: [5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6] Merge branch 'for-next' of https://gitlab.com/peda-linux/mux.git > git bisect good 5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6 > # good: [c349bf6ec83903b20fe570c5609b9a864a64e09c] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode.git > git bisect good c349bf6ec83903b20fe570c5609b9a864a64e09c > # good: [5a06a9f17454df38f35672be522ff5eb9b4277d2] selftest: add testing unsharing and counting ksm zero page > git bisect good 5a06a9f17454df38f35672be522ff5eb9b4277d2 > # bad: [f5d115a7b06e5661ed5218ffa9a2644c4ff1c135] Merge branch 'mm-nonmm-unstable' into mm-everything > git bisect bad f5d115a7b06e5661ed5218ffa9a2644c4ff1c135 > # bad: [acb018d6ea0c055381fba7dddaef386ee28f8075] mm/vmalloc.c: allow vread() to read out vm_map_ram areas > git bisect bad acb018d6ea0c055381fba7dddaef386ee28f8075 > # good: [1a5d9782ac969dc6e61c6786500b5160603188ea] mm/mmap: remove __vma_adjust() > git bisect good 1a5d9782ac969dc6e61c6786500b5160603188ea > # good: [4b32363697de957dcc890b6245bec3f58903639a] arm: include asm-generic/memory_model.h from page.h rather than memory.h > git bisect good 4b32363697de957dcc890b6245bec3f58903639a > # bad: [328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8] mm/migrate: convert isolate_movable_page() to use folios > git bisect bad 328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8 > # bad: [b704c765b08cabe82adf76a4d1a74f3688eee410] mm/mempolicy: convert queue_pages_pmd() to queue_folios_pmd() > git bisect bad b704c765b08cabe82adf76a4d1a74f3688eee410 > # bad: [e5734c8b0edfd2a053a5c256189586a3b1e9f63d] mm, arch: add generic implementation of pfn_valid() for FLATMEM > git bisect bad e5734c8b0edfd2a053a5c256189586a3b1e9f63d > # bad: [ad8aecea034c591b9754bc5908da9719853aa7fa] mips: drop definition of pfn_valid() for DISCONTIGMEM > git bisect bad ad8aecea034c591b9754bc5908da9719853aa7fa > # bad: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU > git bisect bad 1f6271a0dfdf952c2e3981f424784d48f243a2be > # first bad commit: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU
On 2/12/23 17:15, Mike Rapoport wrote: > Hi, > > On Sun, Feb 12, 2023 at 09:35:13AM -0800, Guenter Roeck wrote: >> Hi, >> >> On Sun, Jan 29, 2023 at 02:42:33PM +0200, Mike Rapoport wrote: >>> From: "Mike Rapoport (IBM)" <rppt@kernel.org> >>> >>> The MMU variant uses generic definitions of page_to_pfn() and >>> pfn_to_page(), but !MMU defines them in include/asm/page_no.h for no >>> good reason. >>> >>> Include asm-generic/memory_model.h in the common include/asm/page.h and >>> drop redundant definitions. >>> >>> Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> >>> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> >>> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> >> >> This patch results in a boot failure when trying to boot the mcf5208evb qemu >> emulation. Reverting it together with "mm, arch: add generic implementation >> of pfn_valid() for FLATMEM" fixes the problem. There is no error log - the >> emulation hangs silently until aborted. > > With the patch below I was able to get to the mount of the root file system, > but I don't have one, so I couldn't test the boot properly. > > diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h > index 43ff6b109ebb..060e4c0e7605 100644 > --- a/arch/m68k/include/asm/page_no.h > +++ b/arch/m68k/include/asm/page_no.h > @@ -28,6 +28,8 @@ extern unsigned long memory_end; > #define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET) && \ > ((unsigned long)(kaddr) < memory_end)) > > +#define ARCH_PFN_OFFSET PHYS_PFN(PAGE_OFFSET_RAW) > + > #endif /* __ASSEMBLY__ */ > > #endif /* _M68K_PAGE_NO_H */ > Yes, that works. Thanks, Guenter >> Guenter >> >> --- >> bisect log: >> >> # bad: [6ba8a227fd19d19779005fb66ad7562608e1df83] Add linux-next specific files for 20230210 >> # good: [4ec5183ec48656cec489c49f989c508b68b518e3] Linux 6.2-rc7 >> git bisect start 'HEAD' 'v6.2-rc7' >> # good: [94613f0efc69ed41f9229ef5c294db3ec37145da] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git >> git bisect good 94613f0efc69ed41f9229ef5c294db3ec37145da >> # good: [19e62c715fe70dae4582c2874ed3e66715d09af6] Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git >> git bisect good 19e62c715fe70dae4582c2874ed3e66715d09af6 >> # good: [5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6] Merge branch 'for-next' of https://gitlab.com/peda-linux/mux.git >> git bisect good 5d8b7ecef7f4a681b6e5538db59ff26c389c0ab6 >> # good: [c349bf6ec83903b20fe570c5609b9a864a64e09c] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode.git >> git bisect good c349bf6ec83903b20fe570c5609b9a864a64e09c >> # good: [5a06a9f17454df38f35672be522ff5eb9b4277d2] selftest: add testing unsharing and counting ksm zero page >> git bisect good 5a06a9f17454df38f35672be522ff5eb9b4277d2 >> # bad: [f5d115a7b06e5661ed5218ffa9a2644c4ff1c135] Merge branch 'mm-nonmm-unstable' into mm-everything >> git bisect bad f5d115a7b06e5661ed5218ffa9a2644c4ff1c135 >> # bad: [acb018d6ea0c055381fba7dddaef386ee28f8075] mm/vmalloc.c: allow vread() to read out vm_map_ram areas >> git bisect bad acb018d6ea0c055381fba7dddaef386ee28f8075 >> # good: [1a5d9782ac969dc6e61c6786500b5160603188ea] mm/mmap: remove __vma_adjust() >> git bisect good 1a5d9782ac969dc6e61c6786500b5160603188ea >> # good: [4b32363697de957dcc890b6245bec3f58903639a] arm: include asm-generic/memory_model.h from page.h rather than memory.h >> git bisect good 4b32363697de957dcc890b6245bec3f58903639a >> # bad: [328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8] mm/migrate: convert isolate_movable_page() to use folios >> git bisect bad 328cf3fa6682ce6a4de6f8bb8009c833dc33f3c8 >> # bad: [b704c765b08cabe82adf76a4d1a74f3688eee410] mm/mempolicy: convert queue_pages_pmd() to queue_folios_pmd() >> git bisect bad b704c765b08cabe82adf76a4d1a74f3688eee410 >> # bad: [e5734c8b0edfd2a053a5c256189586a3b1e9f63d] mm, arch: add generic implementation of pfn_valid() for FLATMEM >> git bisect bad e5734c8b0edfd2a053a5c256189586a3b1e9f63d >> # bad: [ad8aecea034c591b9754bc5908da9719853aa7fa] mips: drop definition of pfn_valid() for DISCONTIGMEM >> git bisect bad ad8aecea034c591b9754bc5908da9719853aa7fa >> # bad: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU >> git bisect bad 1f6271a0dfdf952c2e3981f424784d48f243a2be >> # first bad commit: [1f6271a0dfdf952c2e3981f424784d48f243a2be] m68k: use asm-generic/memory_model.h for both MMU and !MMU >
diff --git a/arch/m68k/include/asm/page.h b/arch/m68k/include/asm/page.h index 2f1c54e4725d..a5993ad83ed8 100644 --- a/arch/m68k/include/asm/page.h +++ b/arch/m68k/include/asm/page.h @@ -62,11 +62,7 @@ extern unsigned long _ramend; #include <asm/page_no.h> #endif -#ifndef CONFIG_MMU -#define __phys_to_pfn(paddr) ((unsigned long)((paddr) >> PAGE_SHIFT)) -#define __pfn_to_phys(pfn) PFN_PHYS(pfn) -#endif - #include <asm-generic/getorder.h> +#include <asm-generic/memory_model.h> #endif /* _M68K_PAGE_H */ diff --git a/arch/m68k/include/asm/page_mm.h b/arch/m68k/include/asm/page_mm.h index a5b459bcb7d8..3903db2e8da7 100644 --- a/arch/m68k/include/asm/page_mm.h +++ b/arch/m68k/include/asm/page_mm.h @@ -134,7 +134,6 @@ extern int m68k_virt_to_node_shift; }) #define ARCH_PFN_OFFSET (m68k_memory[0].addr >> PAGE_SHIFT) -#include <asm-generic/memory_model.h> #define virt_addr_valid(kaddr) ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) #define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn)) diff --git a/arch/m68k/include/asm/page_no.h b/arch/m68k/include/asm/page_no.h index c9d0d84158a4..0a8ccef777fd 100644 --- a/arch/m68k/include/asm/page_no.h +++ b/arch/m68k/include/asm/page_no.h @@ -26,8 +26,6 @@ extern unsigned long memory_end; #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)) #define page_to_virt(page) __va(((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)) -#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn)) -#define page_to_pfn(page) virt_to_pfn(page_to_virt(page)) #define pfn_valid(pfn) ((pfn) < max_mapnr) #define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET) && \