mbox series

[v4,00/17] powerpc: Make hash MMU code build configurable

Message ID 20211125125025.1472060-1-npiggin@gmail.com (mailing list archive)
Headers show
Series powerpc: Make hash MMU code build configurable | expand

Message

Nicholas Piggin Nov. 25, 2021, 12:50 p.m. UTC
Now that there's a platform that can make good use of it, here's
a series that can prevent the hash MMU code being built for 64s
platforms that don't need it.

Since v3:
- Merged microwatt patches into 1.
- Fix some changelogs, titles, comments.
- Keep MMU_FTR_HPTE_TABLE in the features when booting radix if hash
  support is is configured because it will be needed for KVM radix host
  hash guest (when we extend this option to KVM).
- Accounted for hopefully all review comments (thanks Christophe)

Since v2:
- Split MMU_FTR_HPTE_TABLE clearing for radix boot into its own patch.
- Remove memremap_compat_align from other sub archs entirely.
- Flip patch order of the 2 main patches to put Kconfig change first.
- Fixed Book3S/32 xmon segment dumping bug.
- Removed a few more ifdefs, changed numbers to use SZ_ definitions,
  etc.
- Fixed microwatt defconfig so it should actually disable hash MMU now.

Since v1:
- Split out most of the Kconfig change from the conditional compilation
  changes.
- Split out several more changes into preparatory patches.
- Reduced some ifdefs.
- Caught a few missing hash bits: pgtable dump, lkdtm,
  memremap_compat_align.

Since RFC:
- Split out large code movement from other changes.
- Used mmu ftr test constant folding rather than adding new constant
  true/false for radix_enabled().
- Restore tlbie trace point that had to be commented out in the
  previous.
- Avoid minor (probably unreachable) behaviour change in machine check
  handler when hash was not compiled.
- Fix microwatt updates so !HASH is not enforced.
- Rebase, build fixes.

Thanks,
Nick

Nicholas Piggin (17):
  powerpc: Remove unused FW_FEATURE_NATIVE references
  powerpc: Rename PPC_NATIVE to PPC_HASH_MMU_NATIVE
  powerpc/pseries: Stop selecting PPC_HASH_MMU_NATIVE
  powerpc/64s: Move and rename do_bad_slb_fault as it is not hash
    specific
  powerpc/pseries: move process table registration away from
    hash-specific code
  powerpc/pseries: lparcfg don't include slb_size line in radix mode
  powerpc/64s: move THP trace point creation out of hash specific file
  powerpc/64s: Make flush_and_reload_slb a no-op when radix is enabled
  powerpc/64s: move page size definitions from hash specific file
  powerpc/64s: Rename hash_hugetlbpage.c to hugetlbpage.c
  powerpc/64: pcpu setup avoid reading mmu_linear_psize on 64e or radix
  powerpc: make memremap_compat_align 64s-only
  powerpc/64e: remove mmu_linear_psize
  powerpc/64s: Fix radix MMU when MMU_FTR_HPTE_TABLE is clear
  powerpc/64s: Make hash MMU support configurable
  powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU
  powerpc/microwatt: add POWER9_CPU, clear PPC_64S_HASH_MMU

 arch/powerpc/Kconfig                          |   5 +-
 arch/powerpc/configs/microwatt_defconfig      |   3 +-
 arch/powerpc/include/asm/book3s/64/mmu.h      |  21 +++-
 .../include/asm/book3s/64/tlbflush-hash.h     |   6 +
 arch/powerpc/include/asm/book3s/64/tlbflush.h |   4 -
 arch/powerpc/include/asm/book3s/pgtable.h     |   4 +
 arch/powerpc/include/asm/firmware.h           |   8 --
 arch/powerpc/include/asm/interrupt.h          |   2 +-
 arch/powerpc/include/asm/mmu.h                |  16 ++-
 arch/powerpc/include/asm/mmu_context.h        |   2 +
 arch/powerpc/include/asm/nohash/mmu-book3e.h  |   1 -
 arch/powerpc/include/asm/paca.h               |   8 ++
 arch/powerpc/kernel/asm-offsets.c             |   2 +
 arch/powerpc/kernel/dt_cpu_ftrs.c             |  14 ++-
 arch/powerpc/kernel/entry_64.S                |   4 +-
 arch/powerpc/kernel/exceptions-64s.S          |  20 +++-
 arch/powerpc/kernel/mce.c                     |   2 +-
 arch/powerpc/kernel/mce_power.c               |  16 ++-
 arch/powerpc/kernel/paca.c                    |  18 ++-
 arch/powerpc/kernel/process.c                 |  13 +-
 arch/powerpc/kernel/prom.c                    |   2 +
 arch/powerpc/kernel/setup_64.c                |  26 +++-
 arch/powerpc/kexec/core_64.c                  |   4 +-
 arch/powerpc/kexec/ranges.c                   |   4 +
 arch/powerpc/kvm/Kconfig                      |   1 +
 arch/powerpc/mm/book3s64/Makefile             |  19 +--
 arch/powerpc/mm/book3s64/hash_native.c        | 104 ----------------
 arch/powerpc/mm/book3s64/hash_pgtable.c       |   1 -
 arch/powerpc/mm/book3s64/hash_utils.c         | 111 +++++++++++++++++-
 .../{hash_hugetlbpage.c => hugetlbpage.c}     |   2 +
 arch/powerpc/mm/book3s64/mmu_context.c        |  32 ++++-
 arch/powerpc/mm/book3s64/pgtable.c            |  27 +++++
 arch/powerpc/mm/book3s64/radix_pgtable.c      |   4 +
 arch/powerpc/mm/book3s64/slb.c                |  16 ---
 arch/powerpc/mm/book3s64/trace.c              |   8 ++
 arch/powerpc/mm/copro_fault.c                 |   2 +
 arch/powerpc/mm/fault.c                       |  24 ++++
 arch/powerpc/mm/init_64.c                     |  13 +-
 arch/powerpc/mm/ioremap.c                     |  20 ----
 arch/powerpc/mm/nohash/tlb.c                  |   9 --
 arch/powerpc/mm/pgtable.c                     |   9 +-
 arch/powerpc/mm/ptdump/Makefile               |   2 +-
 arch/powerpc/platforms/52xx/Kconfig           |   2 +-
 arch/powerpc/platforms/Kconfig                |   4 +-
 arch/powerpc/platforms/Kconfig.cputype        |  23 +++-
 arch/powerpc/platforms/cell/Kconfig           |   2 +-
 arch/powerpc/platforms/chrp/Kconfig           |   2 +-
 arch/powerpc/platforms/embedded6xx/Kconfig    |   2 +-
 arch/powerpc/platforms/maple/Kconfig          |   2 +-
 arch/powerpc/platforms/microwatt/Kconfig      |   1 -
 arch/powerpc/platforms/pasemi/Kconfig         |   2 +-
 arch/powerpc/platforms/powermac/Kconfig       |   2 +-
 arch/powerpc/platforms/powernv/Kconfig        |   2 +-
 arch/powerpc/platforms/powernv/idle.c         |   2 +
 arch/powerpc/platforms/powernv/setup.c        |   2 +
 arch/powerpc/platforms/pseries/Kconfig        |   1 -
 arch/powerpc/platforms/pseries/lpar.c         |  67 ++++++-----
 arch/powerpc/platforms/pseries/lparcfg.c      |   5 +-
 arch/powerpc/platforms/pseries/mobility.c     |   6 +
 arch/powerpc/platforms/pseries/ras.c          |   2 +
 arch/powerpc/platforms/pseries/reconfig.c     |   2 +
 arch/powerpc/platforms/pseries/setup.c        |   6 +-
 arch/powerpc/xmon/xmon.c                      |   8 +-
 drivers/misc/lkdtm/Makefile                   |   2 +-
 drivers/misc/lkdtm/core.c                     |   2 +-
 65 files changed, 466 insertions(+), 292 deletions(-)
 rename arch/powerpc/mm/book3s64/{hash_hugetlbpage.c => hugetlbpage.c} (99%)
 create mode 100644 arch/powerpc/mm/book3s64/trace.c

Comments

Christophe Leroy Nov. 25, 2021, 4:35 p.m. UTC | #1
Le 25/11/2021 à 13:50, Nicholas Piggin a écrit :
> Now that there's a platform that can make good use of it, here's
> a series that can prevent the hash MMU code being built for 64s
> platforms that don't need it.

# CONFIG_PPC_64S_HASH_MMU is not set


<stdin>:1559:2: warning: #warning syscall futex_waitv not implemented 
[-Wcpp]
arch/powerpc/platforms/cell/spu_base.c: In function '__spu_kernel_slb':
arch/powerpc/platforms/cell/spu_base.c:215:38: error: 'mmu_linear_psize' 
undeclared (first use in this function); did you mean 'mmu_virtual_psize'?
   215 |                 llp = mmu_psize_defs[mmu_linear_psize].sllp;
       |                                      ^~~~~~~~~~~~~~~~
       |                                      mmu_virtual_psize
arch/powerpc/platforms/cell/spu_base.c:215:38: note: each undeclared 
identifier is reported only once for each function it appears in
make[3]: *** [scripts/Makefile.build:287: 
arch/powerpc/platforms/cell/spu_base.o] Error 1
make[2]: *** [scripts/Makefile.build:549: arch/powerpc/platforms/cell] 
Error 2
make[1]: *** [scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
make: *** [Makefile:1846: arch/powerpc] Error 2





> 
> Since v3:
> - Merged microwatt patches into 1.
> - Fix some changelogs, titles, comments.
> - Keep MMU_FTR_HPTE_TABLE in the features when booting radix if hash
>    support is is configured because it will be needed for KVM radix host
>    hash guest (when we extend this option to KVM).
> - Accounted for hopefully all review comments (thanks Christophe)
> 
> Since v2:
> - Split MMU_FTR_HPTE_TABLE clearing for radix boot into its own patch.
> - Remove memremap_compat_align from other sub archs entirely.
> - Flip patch order of the 2 main patches to put Kconfig change first.
> - Fixed Book3S/32 xmon segment dumping bug.
> - Removed a few more ifdefs, changed numbers to use SZ_ definitions,
>    etc.
> - Fixed microwatt defconfig so it should actually disable hash MMU now.
> 
> Since v1:
> - Split out most of the Kconfig change from the conditional compilation
>    changes.
> - Split out several more changes into preparatory patches.
> - Reduced some ifdefs.
> - Caught a few missing hash bits: pgtable dump, lkdtm,
>    memremap_compat_align.
> 
> Since RFC:
> - Split out large code movement from other changes.
> - Used mmu ftr test constant folding rather than adding new constant
>    true/false for radix_enabled().
> - Restore tlbie trace point that had to be commented out in the
>    previous.
> - Avoid minor (probably unreachable) behaviour change in machine check
>    handler when hash was not compiled.
> - Fix microwatt updates so !HASH is not enforced.
> - Rebase, build fixes.
> 
> Thanks,
> Nick
> 
> Nicholas Piggin (17):
>    powerpc: Remove unused FW_FEATURE_NATIVE references
>    powerpc: Rename PPC_NATIVE to PPC_HASH_MMU_NATIVE
>    powerpc/pseries: Stop selecting PPC_HASH_MMU_NATIVE
>    powerpc/64s: Move and rename do_bad_slb_fault as it is not hash
>      specific
>    powerpc/pseries: move process table registration away from
>      hash-specific code
>    powerpc/pseries: lparcfg don't include slb_size line in radix mode
>    powerpc/64s: move THP trace point creation out of hash specific file
>    powerpc/64s: Make flush_and_reload_slb a no-op when radix is enabled
>    powerpc/64s: move page size definitions from hash specific file
>    powerpc/64s: Rename hash_hugetlbpage.c to hugetlbpage.c
>    powerpc/64: pcpu setup avoid reading mmu_linear_psize on 64e or radix
>    powerpc: make memremap_compat_align 64s-only
>    powerpc/64e: remove mmu_linear_psize
>    powerpc/64s: Fix radix MMU when MMU_FTR_HPTE_TABLE is clear
>    powerpc/64s: Make hash MMU support configurable
>    powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU
>    powerpc/microwatt: add POWER9_CPU, clear PPC_64S_HASH_MMU
> 
>   arch/powerpc/Kconfig                          |   5 +-
>   arch/powerpc/configs/microwatt_defconfig      |   3 +-
>   arch/powerpc/include/asm/book3s/64/mmu.h      |  21 +++-
>   .../include/asm/book3s/64/tlbflush-hash.h     |   6 +
>   arch/powerpc/include/asm/book3s/64/tlbflush.h |   4 -
>   arch/powerpc/include/asm/book3s/pgtable.h     |   4 +
>   arch/powerpc/include/asm/firmware.h           |   8 --
>   arch/powerpc/include/asm/interrupt.h          |   2 +-
>   arch/powerpc/include/asm/mmu.h                |  16 ++-
>   arch/powerpc/include/asm/mmu_context.h        |   2 +
>   arch/powerpc/include/asm/nohash/mmu-book3e.h  |   1 -
>   arch/powerpc/include/asm/paca.h               |   8 ++
>   arch/powerpc/kernel/asm-offsets.c             |   2 +
>   arch/powerpc/kernel/dt_cpu_ftrs.c             |  14 ++-
>   arch/powerpc/kernel/entry_64.S                |   4 +-
>   arch/powerpc/kernel/exceptions-64s.S          |  20 +++-
>   arch/powerpc/kernel/mce.c                     |   2 +-
>   arch/powerpc/kernel/mce_power.c               |  16 ++-
>   arch/powerpc/kernel/paca.c                    |  18 ++-
>   arch/powerpc/kernel/process.c                 |  13 +-
>   arch/powerpc/kernel/prom.c                    |   2 +
>   arch/powerpc/kernel/setup_64.c                |  26 +++-
>   arch/powerpc/kexec/core_64.c                  |   4 +-
>   arch/powerpc/kexec/ranges.c                   |   4 +
>   arch/powerpc/kvm/Kconfig                      |   1 +
>   arch/powerpc/mm/book3s64/Makefile             |  19 +--
>   arch/powerpc/mm/book3s64/hash_native.c        | 104 ----------------
>   arch/powerpc/mm/book3s64/hash_pgtable.c       |   1 -
>   arch/powerpc/mm/book3s64/hash_utils.c         | 111 +++++++++++++++++-
>   .../{hash_hugetlbpage.c => hugetlbpage.c}     |   2 +
>   arch/powerpc/mm/book3s64/mmu_context.c        |  32 ++++-
>   arch/powerpc/mm/book3s64/pgtable.c            |  27 +++++
>   arch/powerpc/mm/book3s64/radix_pgtable.c      |   4 +
>   arch/powerpc/mm/book3s64/slb.c                |  16 ---
>   arch/powerpc/mm/book3s64/trace.c              |   8 ++
>   arch/powerpc/mm/copro_fault.c                 |   2 +
>   arch/powerpc/mm/fault.c                       |  24 ++++
>   arch/powerpc/mm/init_64.c                     |  13 +-
>   arch/powerpc/mm/ioremap.c                     |  20 ----
>   arch/powerpc/mm/nohash/tlb.c                  |   9 --
>   arch/powerpc/mm/pgtable.c                     |   9 +-
>   arch/powerpc/mm/ptdump/Makefile               |   2 +-
>   arch/powerpc/platforms/52xx/Kconfig           |   2 +-
>   arch/powerpc/platforms/Kconfig                |   4 +-
>   arch/powerpc/platforms/Kconfig.cputype        |  23 +++-
>   arch/powerpc/platforms/cell/Kconfig           |   2 +-
>   arch/powerpc/platforms/chrp/Kconfig           |   2 +-
>   arch/powerpc/platforms/embedded6xx/Kconfig    |   2 +-
>   arch/powerpc/platforms/maple/Kconfig          |   2 +-
>   arch/powerpc/platforms/microwatt/Kconfig      |   1 -
>   arch/powerpc/platforms/pasemi/Kconfig         |   2 +-
>   arch/powerpc/platforms/powermac/Kconfig       |   2 +-
>   arch/powerpc/platforms/powernv/Kconfig        |   2 +-
>   arch/powerpc/platforms/powernv/idle.c         |   2 +
>   arch/powerpc/platforms/powernv/setup.c        |   2 +
>   arch/powerpc/platforms/pseries/Kconfig        |   1 -
>   arch/powerpc/platforms/pseries/lpar.c         |  67 ++++++-----
>   arch/powerpc/platforms/pseries/lparcfg.c      |   5 +-
>   arch/powerpc/platforms/pseries/mobility.c     |   6 +
>   arch/powerpc/platforms/pseries/ras.c          |   2 +
>   arch/powerpc/platforms/pseries/reconfig.c     |   2 +
>   arch/powerpc/platforms/pseries/setup.c        |   6 +-
>   arch/powerpc/xmon/xmon.c                      |   8 +-
>   drivers/misc/lkdtm/Makefile                   |   2 +-
>   drivers/misc/lkdtm/core.c                     |   2 +-
>   65 files changed, 466 insertions(+), 292 deletions(-)
>   rename arch/powerpc/mm/book3s64/{hash_hugetlbpage.c => hugetlbpage.c} (99%)
>   create mode 100644 arch/powerpc/mm/book3s64/trace.c
>
Christophe Leroy Nov. 25, 2021, 5:35 p.m. UTC | #2
Le 25/11/2021 à 17:35, Christophe Leroy a écrit :
> 
> 
> Le 25/11/2021 à 13:50, Nicholas Piggin a écrit :
>> Now that there's a platform that can make good use of it, here's
>> a series that can prevent the hash MMU code being built for 64s
>> platforms that don't need it.
> 
> # CONFIG_PPC_64S_HASH_MMU is not set
> 
> 
> <stdin>:1559:2: warning: #warning syscall futex_waitv not implemented 
> [-Wcpp]
> arch/powerpc/platforms/cell/spu_base.c: In function '__spu_kernel_slb':
> arch/powerpc/platforms/cell/spu_base.c:215:38: error: 'mmu_linear_psize' 
> undeclared (first use in this function); did you mean 'mmu_virtual_psize'?
>    215 |                 llp = mmu_psize_defs[mmu_linear_psize].sllp;
>        |                                      ^~~~~~~~~~~~~~~~
>        |                                      mmu_virtual_psize
> arch/powerpc/platforms/cell/spu_base.c:215:38: note: each undeclared 
> identifier is reported only once for each function it appears in
> make[3]: *** [scripts/Makefile.build:287: 
> arch/powerpc/platforms/cell/spu_base.o] Error 1
> make[2]: *** [scripts/Makefile.build:549: arch/powerpc/platforms/cell] 
> Error 2
> make[1]: *** [scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
> make: *** [Makefile:1846: arch/powerpc] Error 2
> 
> 


With CONFIG_SPU_BASE removed, the above voids and I get to the final 
link with the following errors:

powerpc64-linux-gnu-ld: warning: discarding dynamic section .glink
powerpc64-linux-gnu-ld: warning: discarding dynamic section .plt
powerpc64-linux-gnu-ld: linkage table error against `update_mmu_cache'
powerpc64-linux-gnu-ld: stubs don't match calculated size
powerpc64-linux-gnu-ld: can not build stubs: bad value
powerpc64-linux-gnu-ld: 
arch/powerpc/platforms/pasemi/setup.o:(.toc+0x0): undefined reference to 
`mmu_slb_size'
powerpc64-linux-gnu-ld: arch/powerpc/platforms/cell/iommu.o:(.toc+0x0): 
undefined reference to `htab_address'
powerpc64-linux-gnu-ld: arch/powerpc/platforms/cell/iommu.o:(.toc+0x8): 
undefined reference to `htab_size_bytes'
powerpc64-linux-gnu-ld: arch/powerpc/platforms/ps3/htab.o:(.toc+0x0): 
undefined reference to `mmu_hash_ops'
powerpc64-linux-gnu-ld: mm/filemap.o: in function `.filemap_map_pages':
(.text+0x6f08): undefined reference to `.update_mmu_cache'
powerpc64-linux-gnu-ld: mm/gup.o: in function `.follow_page_pte':
gup.c:(.text+0x1b38): undefined reference to `.update_mmu_cache'
powerpc64-linux-gnu-ld: mm/memory.o: in function `.wp_page_copy':
memory.c:(.text+0xd84): undefined reference to `.update_mmu_cache'
powerpc64-linux-gnu-ld: memory.c:(.text+0x1528): undefined reference to 
`.update_mmu_cache'
powerpc64-linux-gnu-ld: mm/memory.o: in function `.finish_mkwrite_fault':
(.text+0x3d6c): undefined reference to `.update_mmu_cache'
powerpc64-linux-gnu-ld: mm/memory.o:memory.c:(.text+0x4254): more 
undefined references to `.update_mmu_cache' follow
make: *** [Makefile:1161: vmlinux] Error 1
Nicholas Piggin Nov. 26, 2021, 12:55 a.m. UTC | #3
Excerpts from Christophe Leroy's message of November 26, 2021 3:35 am:
> 
> 
> Le 25/11/2021 à 17:35, Christophe Leroy a écrit :
>> 
>> 
>> Le 25/11/2021 à 13:50, Nicholas Piggin a écrit :
>>> Now that there's a platform that can make good use of it, here's
>>> a series that can prevent the hash MMU code being built for 64s
>>> platforms that don't need it.
>> 
>> # CONFIG_PPC_64S_HASH_MMU is not set
>> 
>> 
>> <stdin>:1559:2: warning: #warning syscall futex_waitv not implemented 
>> [-Wcpp]
>> arch/powerpc/platforms/cell/spu_base.c: In function '__spu_kernel_slb':
>> arch/powerpc/platforms/cell/spu_base.c:215:38: error: 'mmu_linear_psize' 
>> undeclared (first use in this function); did you mean 'mmu_virtual_psize'?
>>    215 |                 llp = mmu_psize_defs[mmu_linear_psize].sllp;
>>        |                                      ^~~~~~~~~~~~~~~~
>>        |                                      mmu_virtual_psize
>> arch/powerpc/platforms/cell/spu_base.c:215:38: note: each undeclared 
>> identifier is reported only once for each function it appears in
>> make[3]: *** [scripts/Makefile.build:287: 
>> arch/powerpc/platforms/cell/spu_base.o] Error 1
>> make[2]: *** [scripts/Makefile.build:549: arch/powerpc/platforms/cell] 
>> Error 2
>> make[1]: *** [scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
>> make: *** [Makefile:1846: arch/powerpc] Error 2
>> 
>> 
> 
> 
> With CONFIG_SPU_BASE removed, the above voids and I get to the final 
> link with the following errors:

This is building cell platform with POWER9 CPU and !HASH?

We don't have to make that build, just prevent the config. I had that in 
a previous version which also had platforms select hash, but we went to 
just CPU. But now there's no constraint that prevents cell+POWER9 even 
though it doesn't make sense.

Not sure the best way to fix it. I'll think about it.

Thanks,
Nick
Christophe Leroy Nov. 26, 2021, 7:20 a.m. UTC | #4
Le 26/11/2021 à 01:55, Nicholas Piggin a écrit :
> Excerpts from Christophe Leroy's message of November 26, 2021 3:35 am:
>>
>>
>> Le 25/11/2021 à 17:35, Christophe Leroy a écrit :
>>>
>>>
>>> Le 25/11/2021 à 13:50, Nicholas Piggin a écrit :
>>>> Now that there's a platform that can make good use of it, here's
>>>> a series that can prevent the hash MMU code being built for 64s
>>>> platforms that don't need it.
>>>
>>> # CONFIG_PPC_64S_HASH_MMU is not set
>>>
>>>
>>> <stdin>:1559:2: warning: #warning syscall futex_waitv not implemented
>>> [-Wcpp]
>>> arch/powerpc/platforms/cell/spu_base.c: In function '__spu_kernel_slb':
>>> arch/powerpc/platforms/cell/spu_base.c:215:38: error: 'mmu_linear_psize'
>>> undeclared (first use in this function); did you mean 'mmu_virtual_psize'?
>>>     215 |                 llp = mmu_psize_defs[mmu_linear_psize].sllp;
>>>         |                                      ^~~~~~~~~~~~~~~~
>>>         |                                      mmu_virtual_psize
>>> arch/powerpc/platforms/cell/spu_base.c:215:38: note: each undeclared
>>> identifier is reported only once for each function it appears in
>>> make[3]: *** [scripts/Makefile.build:287:
>>> arch/powerpc/platforms/cell/spu_base.o] Error 1
>>> make[2]: *** [scripts/Makefile.build:549: arch/powerpc/platforms/cell]
>>> Error 2
>>> make[1]: *** [scripts/Makefile.build:549: arch/powerpc/platforms] Error 2
>>> make: *** [Makefile:1846: arch/powerpc] Error 2
>>>
>>>
>>
>>
>> With CONFIG_SPU_BASE removed, the above voids and I get to the final
>> link with the following errors:
> 
> This is building cell platform with POWER9 CPU and !HASH?

I took ppc64_defconfig, changed CPU to POWER9 and removed VIRTUALIZATION 
and removed CONFIG_PPC_64S_HASH_MMU.

> 
> We don't have to make that build, just prevent the config. I had that in
> a previous version which also had platforms select hash, but we went to
> just CPU. But now there's no constraint that prevents cell+POWER9 even
> though it doesn't make sense.
> 
> Not sure the best way to fix it. I'll think about it.
> 

Force selection of CONFIG_PPC_64S_HASH_MMU by the CELL platform ?