Message ID | 20190208123416.1051-1-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Accepted |
Commit | bba436309d579f306419e0bffe8a28a5935cb17a |
Headers | show |
Series | powerpc: Make PPC_64K_PAGES depend on only 44x or PPC_BOOK3S_64 | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | next/apply_patch Successfully applied |
snowpatch_ozlabs/build-ppc64le | success | build succeeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-ppc64be | success | build succeeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-ppc64e | success | build succeeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-pmac32 | success | build succeeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 8 lines checked |
On 02/08/2019 12:34 PM, Michael Ellerman wrote: > In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported > 64Kpage size from 64bit booke") we dropped the 64K page size support > from the 64-bit nohash (Book3E) code. > > But we didn't update the dependencies of the PPC_64K_PAGES option, > meaning a randconfig can still trigger this code and cause a build > breakage, eg: > arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error "Page size not supported" > arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error Unsupported page size > > So remove PPC_BOOK3E_64 from the dependencies. This also means we > don't need to worry about PPC_FSL_BOOK3E, because that was just trying > to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. Does it means some cleanup could be done, for instance: arch/powerpc/include/asm/nohash/64/pgalloc.h:#ifndef CONFIG_PPC_64K_PAGES arch/powerpc/include/asm/nohash/64/pgalloc.h:#endif /* CONFIG_PPC_64K_PAGES */ arch/powerpc/include/asm/nohash/64/pgtable.h:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/include/asm/nohash/64/slice.h:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/include/asm/nohash/64/slice.h:#else /* CONFIG_PPC_64K_PAGES */ arch/powerpc/include/asm/nohash/64/slice.h:#endif /* !CONFIG_PPC_64K_PAGES */ arch/powerpc/include/asm/nohash/pte-book3e.h:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES Christophe > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > --- > arch/powerpc/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 3f237ffa0649..7a16b8a7b54b 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -694,7 +694,7 @@ config PPC_16K_PAGES > > config PPC_64K_PAGES > bool "64k page size" > - depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64) > + depends on 44x || PPC_BOOK3S_64 > select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 > > config PPC_256K_PAGES >
On Fri, 2019-02-08 at 13:01 +0000, Christophe Leroy wrote: > > On 02/08/2019 12:34 PM, Michael Ellerman wrote: > > In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported > > 64Kpage size from 64bit booke") we dropped the 64K page size support > > from the 64-bit nohash (Book3E) code. > > > > But we didn't update the dependencies of the PPC_64K_PAGES option, > > meaning a randconfig can still trigger this code and cause a build > > breakage, eg: > > arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error "Page > > size not supported" > > arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error > > Unsupported page size > > > > So remove PPC_BOOK3E_64 from the dependencies. This also means we > > don't need to worry about PPC_FSL_BOOK3E, because that was just trying > > to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. > > Does it means some cleanup could be done, for instance: > > arch/powerpc/include/asm/nohash/64/pgalloc.h:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/pgalloc.h:#endif /* > CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/64/pgtable.h:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/slice.h:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/slice.h:#else /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/64/slice.h:#endif /* > !CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/pte-book3e.h:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES More generally, if fsl is the only supported book3e platform and that's not expected to change, everything in tlb_low_64e.S except the bolted and e6500 variants could go away. -Scott
Christophe Leroy <christophe.leroy@c-s.fr> writes: > On 02/08/2019 12:34 PM, Michael Ellerman wrote: >> In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported >> 64Kpage size from 64bit booke") we dropped the 64K page size support >> from the 64-bit nohash (Book3E) code. >> >> But we didn't update the dependencies of the PPC_64K_PAGES option, >> meaning a randconfig can still trigger this code and cause a build >> breakage, eg: >> arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error "Page size not supported" >> arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error Unsupported page size >> >> So remove PPC_BOOK3E_64 from the dependencies. This also means we >> don't need to worry about PPC_FSL_BOOK3E, because that was just trying >> to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. > > Does it means some cleanup could be done, for instance: > > arch/powerpc/include/asm/nohash/64/pgalloc.h:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/pgalloc.h:#endif /* > CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/64/pgtable.h:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/slice.h:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/include/asm/nohash/64/slice.h:#else /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/64/slice.h:#endif /* > !CONFIG_PPC_64K_PAGES */ > arch/powerpc/include/asm/nohash/pte-book3e.h:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES Probably. Some of the FSL chips do support 64K pages at least according to some datasheets. I don't know what would be required to get it working, or if it even works in practice. So it would be nice to get 64K working on those chips, but probably no one has time or motivation to do it. In which case yeah all that code should be removed. cheers
On Wed, 2019-02-20 at 01:14 +1100, Michael Ellerman wrote: > Christophe Leroy <christophe.leroy@c-s.fr> writes: > > > On 02/08/2019 12:34 PM, Michael Ellerman wrote: > > > In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported > > > 64Kpage size from 64bit booke") we dropped the 64K page size support > > > from the 64-bit nohash (Book3E) code. > > > > > > But we didn't update the dependencies of the PPC_64K_PAGES option, > > > meaning a randconfig can still trigger this code and cause a build > > > breakage, eg: > > > arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error > > > "Page size not supported" > > > arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error > > > Unsupported page size > > > > > > So remove PPC_BOOK3E_64 from the dependencies. This also means we > > > don't need to worry about PPC_FSL_BOOK3E, because that was just trying > > > to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. > > > > Does it means some cleanup could be done, for instance: > > > > arch/powerpc/include/asm/nohash/64/pgalloc.h:#ifndef CONFIG_PPC_64K_PAGES > > arch/powerpc/include/asm/nohash/64/pgalloc.h:#endif /* > > CONFIG_PPC_64K_PAGES */ > > arch/powerpc/include/asm/nohash/64/pgtable.h:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/include/asm/nohash/64/slice.h:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/include/asm/nohash/64/slice.h:#else /* CONFIG_PPC_64K_PAGES > > */ > > arch/powerpc/include/asm/nohash/64/slice.h:#endif /* > > !CONFIG_PPC_64K_PAGES */ > > arch/powerpc/include/asm/nohash/pte-book3e.h:#ifdef CONFIG_PPC_64K_PAGES > > > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ > > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES > > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES > > Probably. > > Some of the FSL chips do support 64K pages at least according to some > datasheets. I don't know what would be required to get it working, or if > it even works in practice. > > So it would be nice to get 64K working on those chips, but probably no > one has time or motivation to do it. In which case yeah all that code > should be removed. The primary TLB (TLB0) on these chips only supports 4K pages. TLB1 supports many different sizes but is much smaller, hardware tablewalk only loads into TLB0, etc. -Scott
Scott Wood <oss@buserror.net> writes: > On Wed, 2019-02-20 at 01:14 +1100, Michael Ellerman wrote: >> Christophe Leroy <christophe.leroy@c-s.fr> writes: >> >> > On 02/08/2019 12:34 PM, Michael Ellerman wrote: >> > > In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported >> > > 64Kpage size from 64bit booke") we dropped the 64K page size support >> > > from the 64-bit nohash (Book3E) code. >> > > >> > > But we didn't update the dependencies of the PPC_64K_PAGES option, >> > > meaning a randconfig can still trigger this code and cause a build >> > > breakage, eg: >> > > arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error >> > > "Page size not supported" >> > > arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error >> > > Unsupported page size >> > > >> > > So remove PPC_BOOK3E_64 from the dependencies. This also means we >> > > don't need to worry about PPC_FSL_BOOK3E, because that was just trying >> > > to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. >> > >> > Does it means some cleanup could be done, for instance: >> > >> > arch/powerpc/include/asm/nohash/64/pgalloc.h:#ifndef CONFIG_PPC_64K_PAGES >> > arch/powerpc/include/asm/nohash/64/pgalloc.h:#endif /* >> > CONFIG_PPC_64K_PAGES */ >> > arch/powerpc/include/asm/nohash/64/pgtable.h:#ifdef CONFIG_PPC_64K_PAGES >> > arch/powerpc/include/asm/nohash/64/slice.h:#ifdef CONFIG_PPC_64K_PAGES >> > arch/powerpc/include/asm/nohash/64/slice.h:#else /* CONFIG_PPC_64K_PAGES >> > */ >> > arch/powerpc/include/asm/nohash/64/slice.h:#endif /* >> > !CONFIG_PPC_64K_PAGES */ >> > arch/powerpc/include/asm/nohash/pte-book3e.h:#ifdef CONFIG_PPC_64K_PAGES >> > >> > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ >> > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ >> > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#endif /* CONFIG_PPC_64K_PAGES */ >> > arch/powerpc/mm/tlb_low_64e.S:#ifndef CONFIG_PPC_64K_PAGES >> > arch/powerpc/mm/tlb_low_64e.S:#ifdef CONFIG_PPC_64K_PAGES >> >> Probably. >> >> Some of the FSL chips do support 64K pages at least according to some >> datasheets. I don't know what would be required to get it working, or if >> it even works in practice. >> >> So it would be nice to get 64K working on those chips, but probably no >> one has time or motivation to do it. In which case yeah all that code >> should be removed. > > The primary TLB (TLB0) on these chips only supports 4K pages. TLB1 supports > many different sizes but is much smaller, hardware tablewalk only loads into > TLB0, etc. Aha thanks. I wondered if there was some reason for it. So that makes it sound much less interesting, meaning all that 64K page code should go. cheers
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 3f237ffa0649..7a16b8a7b54b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -694,7 +694,7 @@ config PPC_16K_PAGES config PPC_64K_PAGES bool "64k page size" - depends on !PPC_FSL_BOOK3E && (44x || PPC_BOOK3S_64 || PPC_BOOK3E_64) + depends on 44x || PPC_BOOK3S_64 select HAVE_ARCH_SOFT_DIRTY if PPC_BOOK3S_64 config PPC_256K_PAGES
In commit 7820856a4fcd ("powerpc/mm/book3e/64: Remove unsupported 64Kpage size from 64bit booke") we dropped the 64K page size support from the 64-bit nohash (Book3E) code. But we didn't update the dependencies of the PPC_64K_PAGES option, meaning a randconfig can still trigger this code and cause a build breakage, eg: arch/powerpc/include/asm/nohash/64/pgtable.h:14:2: error: #error "Page size not supported" arch/powerpc/include/asm/nohash/mmu-book3e.h:275:2: error: #error Unsupported page size So remove PPC_BOOK3E_64 from the dependencies. This also means we don't need to worry about PPC_FSL_BOOK3E, because that was just trying to prevent the PPC_BOOK3E_64=y && PPC_FSL_BOOK3E=y case. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)