linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 00/18] use struct ptdesc to replace pgtable_t
@ 2024-07-30  6:46 alexs
  2024-07-30  6:46 ` [RFC PATCH 01/18] mm/pgtable: use ptdesc in pte_free_now/pte_free_defer alexs
                   ` (13 more replies)
  0 siblings, 14 replies; 24+ messages in thread
From: alexs @ 2024-07-30  6:46 UTC (permalink / raw)
  To: Will Deacon, Aneesh Kumar K . V, Nick Piggin, Peter Zijlstra,
	Russell King, Catalin Marinas, Brian Cain, WANG Xuerui,
	Geert Uytterhoeven, Jonas Bonn, Stefan Kristiansson,
	Stafford Horne, Michael Ellerman, Naveen N Rao, Paul Walmsley,
	Albert Ou, Thomas Gleixner, Borislav Petkov, Dave Hansen, x86,
	H . Peter Anvin, Andy Lutomirski, Bibo Mao, Baolin Wang,
	linux-arch, linux-mm, linux-arm-kernel, linux-kernel, linux-csky,
	linux-hexagon, loongarch, linux-m68k, linux-openrisc,
	linuxppc-dev, linux-riscv, Heiko Carstens, Vasily Gorbik,
	Christian Borntraeger, Sven Schnelle, Qi Zheng, Vishal Moola,
	Aneesh Kumar K . V, Kemeng Shi, Lance Yang, Peter Xu, Barry Song,
	linux-s390
  Cc: Guo Ren, Christophe Leroy, Palmer Dabbelt, Mike Rapoport,
	Oscar Salvador, Alexandre Ghiti, Jisheng Zhang, Samuel Holland,
	Anup Patel, Josh Poimboeuf, Breno Leitao, Alexander Gordeev,
	Gerald Schaefer, Hugh Dickins, David Hildenbrand, Ryan Roberts,
	Matthew Wilcox, Alex Shi

From: Alex Shi <alexs@kernel.org>

We have struct ptdesc for page table descriptor a year ago, but it
has no much usages in kernel, while pgtable_t is used widely.

The pgtable_t is typedefed as 'pte_t *' in sparc, s390, powerpc and m68k
except SUN3, others archs are all same as 'struct page *'.

These blocks the conception and code update for page table descriptor to
struct ptdesc.

So, the simple idea to push the ptdesc conception forward is to update
all pgtable_t by ptdesc or pte_t pointer. But this needs widely
knowledges for most all of different archs. Common code change is easy
for include/ and mm/ directory, but it's hard in all archs.

Thanks for intel LKP framework, I fixed most all of build issues except
a bug on powerpc which reports a "struct ptdesc *" incompatible with 
struct ptdesc *' pointer issue...

Another trouble is pmd_pgtable() conversion in the last patch.
Maybe some of arch need define theirself own pmd_ptdesc()?

This patchset is immature, even except above 2 issues, I just tested
virutal machine booting and kselftest mm on x86 and arm64.

Anyway any input are appreciated!

Thanks
Alex

Alex Shi (18):
  mm/pgtable: use ptdesc in pte_free_now/pte_free_defer
  mm/pgtable: convert ptdesc.pmd_huge_pte to ptdesc pointer
  fs/dax: use ptdesc in dax_pmd_load_hole
  mm/thp: use ptdesc pointer in __do_huge_pmd_anonymous_page
  mm/thp: use ptdesc in do_huge_pmd_anonymous_page
  mm/thp: convert insert_pfn_pmd and its caller to use ptdesc
  mm/thp: use ptdesc in copy_huge_pmd
  mm/memory: use ptdesc in __pte_alloc
  mm/pgtable: fully use ptdesc in pte_alloc_one series functions
  mm/pgtable: pass ptdesc to pte_free()
  mm/pgtable: introduce ptdesc_pfn and use ptdesc in free_pte_range()
  mm/thp: pass ptdesc to set_huge_zero_folio function
  mm/pgtable: return ptdesc pointer in pgtable_trans_huge_withdraw
  mm/pgtable: use ptdesc in pgtable_trans_huge_deposit
  mm/pgtable: pass ptdesc to pmd_populate
  mm/pgtable: pass ptdesc to pmd_install
  mm: convert vmf.prealloc_pte to struct ptdesc pointer
  mm/pgtable: pass ptdesc in pte_free_defer

 arch/alpha/include/asm/pgalloc.h              |   4 +-
 arch/arc/include/asm/pgalloc.h                |   4 +-
 arch/arm/include/asm/pgalloc.h                |  13 +--
 arch/arm/include/asm/tlb.h                    |   4 +-
 arch/arm/mm/pgd.c                             |   2 +-
 arch/arm64/include/asm/pgalloc.h              |   4 +-
 arch/arm64/include/asm/tlb.h                  |   4 +-
 arch/csky/include/asm/pgalloc.h               |   4 +-
 arch/hexagon/include/asm/pgalloc.h            |   8 +-
 arch/loongarch/include/asm/pgalloc.h          |   8 +-
 arch/m68k/include/asm/motorola_pgalloc.h      |  12 +-
 arch/m68k/include/asm/sun3_pgalloc.h          |   4 +-
 arch/microblaze/include/asm/pgalloc.h         |   2 +-
 arch/mips/include/asm/pgalloc.h               |   4 +-
 arch/nios2/include/asm/pgalloc.h              |   4 +-
 arch/openrisc/include/asm/pgalloc.h           |   8 +-
 arch/parisc/include/asm/pgalloc.h             |   2 +-
 arch/powerpc/include/asm/book3s/32/pgalloc.h  |   4 +-
 arch/powerpc/include/asm/book3s/64/hash-4k.h  |   4 +-
 arch/powerpc/include/asm/book3s/64/hash-64k.h |   4 +-
 arch/powerpc/include/asm/book3s/64/pgalloc.h  |   4 +-
 arch/powerpc/include/asm/book3s/64/pgtable.h  |   8 +-
 arch/powerpc/include/asm/book3s/64/radix.h    |   4 +-
 arch/powerpc/include/asm/pgalloc.h            |   8 +-
 arch/powerpc/mm/book3s64/hash_pgtable.c       |  10 +-
 arch/powerpc/mm/book3s64/radix_pgtable.c      |  10 +-
 arch/riscv/include/asm/pgalloc.h              |   8 +-
 arch/s390/include/asm/pgalloc.h               |   4 +-
 arch/s390/include/asm/pgtable.h               |   4 +-
 arch/s390/mm/pgalloc.c                        |   2 +-
 arch/s390/mm/pgtable.c                        |  14 +--
 arch/sh/include/asm/pgalloc.h                 |   4 +-
 arch/sparc/include/asm/pgalloc_32.h           |   6 +-
 arch/sparc/include/asm/pgalloc_64.h           |   2 +-
 arch/sparc/include/asm/pgtable_64.h           |   4 +-
 arch/sparc/mm/init_64.c                       |   2 +-
 arch/sparc/mm/srmmu.c                         |   6 +-
 arch/sparc/mm/tlb.c                           |  14 +--
 arch/x86/include/asm/pgalloc.h                |  10 +-
 arch/x86/mm/pgtable.c                         |   8 +-
 arch/xtensa/include/asm/pgalloc.h             |  12 +-
 fs/dax.c                                      |  14 +--
 include/asm-generic/pgalloc.h                 |  10 +-
 include/linux/mm.h                            |  16 ++-
 include/linux/mm_types.h                      |   4 +-
 include/linux/pgtable.h                       |   6 +-
 mm/debug_vm_pgtable.c                         |   6 +-
 mm/huge_memory.c                              | 103 +++++++++---------
 mm/internal.h                                 |   2 +-
 mm/khugepaged.c                               |  14 +--
 mm/memory.c                                   |  15 +--
 mm/mremap.c                                   |   2 +-
 mm/pgtable-generic.c                          |  37 +++----
 53 files changed, 240 insertions(+), 236 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2024-08-15  6:32 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-30  6:46 [RFC PATCH 00/18] use struct ptdesc to replace pgtable_t alexs
2024-07-30  6:46 ` [RFC PATCH 01/18] mm/pgtable: use ptdesc in pte_free_now/pte_free_defer alexs
2024-07-30  6:46 ` [RFC PATCH 02/18] mm/pgtable: convert ptdesc.pmd_huge_pte to ptdesc pointer alexs
2024-07-30  6:46 ` [RFC PATCH 03/18] fs/dax: use ptdesc in dax_pmd_load_hole alexs
2024-07-30  6:46 ` [RFC PATCH 04/18] mm/thp: use ptdesc pointer in __do_huge_pmd_anonymous_page alexs
2024-07-30  6:46 ` [RFC PATCH 05/18] mm/thp: use ptdesc in do_huge_pmd_anonymous_page alexs
2024-07-30  6:47 ` [RFC PATCH 06/18] mm/thp: convert insert_pfn_pmd and its caller to use ptdesc alexs
2024-07-30  6:47 ` [RFC PATCH 07/18] mm/thp: use ptdesc in copy_huge_pmd alexs
2024-07-30  6:47 ` [RFC PATCH 08/18] mm/memory: use ptdesc in __pte_alloc alexs
2024-07-30  6:47 ` [RFC PATCH 09/18] mm/pgtable: fully use ptdesc in pte_alloc_one series functions alexs
2024-07-30  6:47 ` [RFC PATCH 10/18] mm/pgtable: pass ptdesc to pte_free() alexs
2024-07-30  7:27 ` [RFC PATCH 11/18] mm/pgtable: introduce ptdesc_pfn and use ptdesc in free_pte_range() alexs
2024-07-30  7:27   ` [RFC PATCH 12/18] mm/thp: pass ptdesc to set_huge_zero_folio function alexs
2024-07-30  7:27   ` [RFC PATCH 13/18] mm/pgtable: return ptdesc pointer in pgtable_trans_huge_withdraw alexs
2024-07-30  7:27   ` [RFC PATCH 14/18] mm/pgtable: use ptdesc in pgtable_trans_huge_deposit alexs
2024-07-30  7:27   ` [RFC PATCH 15/18] mm/pgtable: pass ptdesc to pmd_populate alexs
2024-07-30  7:27   ` [RFC PATCH 16/18] mm/pgtable: pass ptdesc to pmd_install alexs
2024-07-30  7:27   ` [RFC PATCH 17/18] mm: convert vmf.prealloc_pte to struct ptdesc pointer alexs
2024-07-30  7:27   ` [RFC PATCH 18/18] mm/pgtable: pass ptdesc in pte_free_defer alexs
2024-07-30  8:10 ` [RFC PATCH 00/18] use struct ptdesc to replace pgtable_t Alex Shi
2024-08-14 16:50 ` LEROY Christophe
2024-08-15  6:32   ` Alex Shi
2024-08-14 17:13 ` Matthew Wilcox
2024-08-15  6:17   ` Alex Shi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox