[PATCH v2 00/12] powerpc/mm: cleanup and refactoring in ioremap

From: Christophe Leroy
Date: Tue Aug 20 2019 - 10:07:12 EST


The purpose of this series is to cleanup and refactor ioremap.

At the time being, ioremap is duplicated in PPC32 and PPC64.
In addition, some additional duplication also appear within PPC64.

First part of this series drops as much as unused functions.
Then io-workaround is reworked to avoid indirect function call.
Then common parts of PPC32 and PPC64 are regrouped into a new file
called ioremap.c
Then other parts linked to ioremap are respectively moved out of
pgtable_32/64.c
The last part of the series tries to refactor ioremap_range() and
make use of ioremap_page_range() for all, then separates the early
path from the regular ioremap.

A future follow-up of this series will be to try and eliminate the
early ioremap part and use the generic early_ioremap instead.

v2:
- dropped the change of ioremap_bot growing direction for PPC64 and
kept separate __ioremap_caller() and friends.
- separating more clearly early_ioremap() from regular ioremap()
- addressed received comments.

Christophe Leroy (12):
powerpc: remove the ppc44x ocm.c file
powerpc/ps3: replace __ioremap() by ioremap_prot()
powerpc/mm: drop ppc_md.iounmap() and __iounmap()
powerpc/mm: drop function __ioremap()
powerpc/mm: rework io-workaround invocation.
powerpc/mm: move common 32/64 bits ioremap functions into ioremap.c
powerpc/mm: move ioremap_prot() into ioremap.c
powerpc/mm: make ioremap_bot common to all
powerpc/mm: Move ioremap functions out of pgtable_32/64.c
powerpc/mm: refactor ioremap_range() and use ioremap_page_range()
powerpc/mm: refactor ioremap vm area setup.
powerpc/mm: split out early ioremap path.

arch/powerpc/configs/ppc40x_defconfig | 1 -
arch/powerpc/include/asm/book3s/32/pgtable.h | 6 +-
arch/powerpc/include/asm/book3s/64/pgtable.h | 2 +-
arch/powerpc/include/asm/book3s/64/radix.h | 3 -
arch/powerpc/include/asm/io-workarounds.h | 20 ++
arch/powerpc/include/asm/io.h | 16 +-
arch/powerpc/include/asm/machdep.h | 4 -
arch/powerpc/include/asm/nohash/32/pgtable.h | 6 +-
arch/powerpc/include/asm/nohash/64/pgtable.h | 1 +
arch/powerpc/include/asm/pgtable.h | 2 +
arch/powerpc/include/asm/ppc4xx_ocm.h | 31 ---
arch/powerpc/kernel/io-workarounds.c | 13 +-
arch/powerpc/mm/Makefile | 2 +-
arch/powerpc/mm/book3s64/pgtable.c | 21 --
arch/powerpc/mm/book3s64/radix_pgtable.c | 20 --
arch/powerpc/mm/ioremap.c | 99 +++++++
arch/powerpc/mm/ioremap_32.c | 92 +++++++
arch/powerpc/mm/ioremap_64.c | 113 ++++++++
arch/powerpc/mm/mmu_decl.h | 1 -
arch/powerpc/mm/nohash/tlb.c | 2 +
arch/powerpc/mm/pgtable_32.c | 153 -----------
arch/powerpc/mm/pgtable_64.c | 203 +-------------
arch/powerpc/platforms/44x/Kconfig | 8 -
arch/powerpc/platforms/4xx/Makefile | 1 -
arch/powerpc/platforms/4xx/ocm.c | 390 ---------------------------
arch/powerpc/platforms/ps3/spu.c | 10 +-
26 files changed, 353 insertions(+), 867 deletions(-)
delete mode 100644 arch/powerpc/include/asm/ppc4xx_ocm.h
create mode 100644 arch/powerpc/mm/ioremap.c
create mode 100644 arch/powerpc/mm/ioremap_32.c
create mode 100644 arch/powerpc/mm/ioremap_64.c
delete mode 100644 arch/powerpc/platforms/4xx/ocm.c

--
2.13.3