[RFC PATCH 11/25] kvx: Add memory management

Mike Rapoport rppt at kernel.org
Wed Jan 4 03:37:12 PST 2023


On Tue, Jan 03, 2023 at 05:43:45PM +0100, Yann Sionneau wrote:
> Add memory management support for kvx, including: cache and tlb
> management, page fault handling, ioremap/mmap and streaming dma support.
> 
> CC: Will Deacon <will at kernel.org>
> CC: "Aneesh Kumar K.V" <aneesh.kumar at linux.ibm.com>
> CC: Andrew Morton <akpm at linux-foundation.org>
> CC: Nick Piggin <npiggin at gmail.com>
> CC: Peter Zijlstra <peterz at infradead.org>
> CC: Paul Walmsley <paul.walmsley at sifive.com>
> CC: Palmer Dabbelt <palmer at dabbelt.com>
> CC: Albert Ou <aou at eecs.berkeley.edu>
> CC: linux-kernel at vger.kernel.org
> CC: linux-arch at vger.kernel.org
> CC: linux-mm at kvack.org
> CC: linux-riscv at lists.infradead.org
> Co-developed-by: Clement Leger <clement.leger at bootlin.com>
> Signed-off-by: Clement Leger <clement.leger at bootlin.com>
> Co-developed-by: Guillaume Thouvenin <gthouvenin at kalray.eu>
> Signed-off-by: Guillaume Thouvenin <gthouvenin at kalray.eu>
> Co-developed-by: Jean-Christophe Pince <jcpince at gmail.com>
> Signed-off-by: Jean-Christophe Pince <jcpince at gmail.com>
> Co-developed-by: Jules Maselbas <jmaselbas at kalray.eu>
> Signed-off-by: Jules Maselbas <jmaselbas at kalray.eu>
> Co-developed-by: Julian Vetter <jvetter at kalray.eu>
> Signed-off-by: Julian Vetter <jvetter at kalray.eu>
> Co-developed-by: Julien Hascoet <jhascoet at kalray.eu>
> Signed-off-by: Julien Hascoet <jhascoet at kalray.eu>
> Co-developed-by: Louis Morhet <lmorhet at kalray.eu>
> Signed-off-by: Louis Morhet <lmorhet at kalray.eu>
> Co-developed-by: Marc Poulhiès <dkm at kataplop.net>
> Signed-off-by: Marc Poulhiès <dkm at kataplop.net>
> Co-developed-by: Marius Gligor <mgligor at kalray.eu>
> Signed-off-by: Marius Gligor <mgligor at kalray.eu>
> Co-developed-by: Vincent Chardon <vincent.chardon at elsys-design.com>
> Signed-off-by: Vincent Chardon <vincent.chardon at elsys-design.com>
> Co-developed-by: Yann Sionneau <ysionneau at kalray.eu>
> Signed-off-by: Yann Sionneau <ysionneau at kalray.eu>
> ---
>  arch/kvx/include/asm/cache.h         |  46 +++
>  arch/kvx/include/asm/cacheflush.h    | 181 +++++++++
>  arch/kvx/include/asm/fixmap.h        |  47 +++
>  arch/kvx/include/asm/hugetlb.h       |  36 ++
>  arch/kvx/include/asm/l2_cache.h      |  75 ++++
>  arch/kvx/include/asm/l2_cache_defs.h |  64 ++++
>  arch/kvx/include/asm/mem_map.h       |  44 +++
>  arch/kvx/include/asm/mmu.h           | 296 +++++++++++++++
>  arch/kvx/include/asm/mmu_context.h   | 156 ++++++++
>  arch/kvx/include/asm/mmu_stats.h     |  38 ++
>  arch/kvx/include/asm/page.h          | 187 ++++++++++
>  arch/kvx/include/asm/page_size.h     |  29 ++
>  arch/kvx/include/asm/pgalloc.h       | 101 +++++
>  arch/kvx/include/asm/pgtable-bits.h  | 102 ++++++
>  arch/kvx/include/asm/pgtable.h       | 451 +++++++++++++++++++++++
>  arch/kvx/include/asm/rm_fw.h         |  16 +
>  arch/kvx/include/asm/sparsemem.h     |  15 +
>  arch/kvx/include/asm/symbols.h       |  16 +
>  arch/kvx/include/asm/tlb.h           |  24 ++
>  arch/kvx/include/asm/tlb_defs.h      | 131 +++++++
>  arch/kvx/include/asm/tlbflush.h      |  58 +++
>  arch/kvx/include/asm/vmalloc.h       |  10 +
>  arch/kvx/mm/cacheflush.c             | 154 ++++++++
>  arch/kvx/mm/dma-mapping.c            |  95 +++++
>  arch/kvx/mm/extable.c                |  24 ++
>  arch/kvx/mm/fault.c                  | 264 ++++++++++++++
>  arch/kvx/mm/hugetlbpage.c            | 317 ++++++++++++++++
>  arch/kvx/mm/init.c                   | 527 +++++++++++++++++++++++++++
>  arch/kvx/mm/kernel_rwx.c             | 228 ++++++++++++
>  arch/kvx/mm/mmap.c                   |  31 ++
>  arch/kvx/mm/mmu.c                    | 204 +++++++++++
>  arch/kvx/mm/mmu_stats.c              |  94 +++++
>  arch/kvx/mm/tlb.c                    | 433 ++++++++++++++++++++++
>  33 files changed, 4494 insertions(+)

Please strip functionality that's not essential for boot and the re-add it
after the very core code is merged. I'd say multiple page size, hugetlb and
strict RWX are not necessary to start with.

I'd also suggest to have separate patches for different parts, like cache
and tlb management, page tables and page fault fault handling, ioremap/mmap
and streaming dma support.

-- 
Sincerely yours,
Mike.



More information about the linux-riscv mailing list