mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
![]() Patch series "drop hugetlb_free_pgd_range()". For all architectures that support hugetlb except for sparc, hugetlb_free_pgd_range() just calls free_pgd_range(). It turns out the sparc implementation is essentially identical to free_pgd_range() and can be removed. Remove it and update free_pgtables() to treat hugetlb VMAs the same as others. This patch (of 3): The sparc implementation of hugetlb_free_pgd_range() is identical to free_pgd_range() with the exception of checking for and skipping possible leaf entries at the PUD and PMD levels. These checks are unnecessary because any huge pages have been freed and their PTEs cleared by the time page tables needed to map them are freed. While some huge page sizes do populate the page table with multiple PTEs, they are correctly cleared by huge_ptep_get_and_clear(). To verify this, libhugetlbfs tests were run for 64K, 8M, and 256M page sizes with an instrumented kernel on a qemu guest modified to support the 256M page size. The same tests were used to verify no regressions after applying this patch and were also run on x86 for both 2M and 1G page sizes. Link: https://lkml.kernel.org/r/20250716012611.10369-1-anthony.yznaga@oracle.com Link: https://lkml.kernel.org/r/20250716012611.10369-2-anthony.yznaga@oracle.com Signed-off-by: Anthony Yznaga <anthony.yznaga@oracle.com> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: Oscar Salvador <osalvador@suse.de> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Alexandre Ghiti <alexghiti@rivosinc.com> Cc: Andreas Larsson <andreas@gaisler.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: David Hildenbrand <david@redhat.com> Cc: David S. Miller <davem@davemloft.net> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Muchun Song <muchun.song@linux.dev> Cc: Oscar Salvador <osalvador@suse.de> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Will Deacon <will@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
||
---|---|---|
.. | ||
adi.h | ||
adi_64.h | ||
apb.h | ||
asm-offsets.h | ||
asm-prototypes.h | ||
asm.h | ||
asmmacro.h | ||
atomic.h | ||
atomic_32.h | ||
atomic_64.h | ||
auxio.h | ||
auxio_32.h | ||
auxio_64.h | ||
backoff.h | ||
barrier.h | ||
barrier_32.h | ||
barrier_64.h | ||
bbc.h | ||
bitext.h | ||
bitops.h | ||
bitops_32.h | ||
bitops_64.h | ||
btext.h | ||
bug.h | ||
cache.h | ||
cacheflush.h | ||
cacheflush_32.h | ||
cacheflush_64.h | ||
cachetlb_32.h | ||
cachetype.h | ||
chafsr.h | ||
checksum.h | ||
checksum_32.h | ||
checksum_64.h | ||
chmctrl.h | ||
clock.h | ||
clocksource.h | ||
cmpxchg.h | ||
cmpxchg_32.h | ||
cmpxchg_64.h | ||
compat.h | ||
compat_signal.h | ||
contregs.h | ||
cpu_type.h | ||
cpudata.h | ||
cpudata_32.h | ||
cpudata_64.h | ||
current.h | ||
dcr.h | ||
dcu.h | ||
delay.h | ||
delay_32.h | ||
delay_64.h | ||
device.h | ||
dma-mapping.h | ||
dma.h | ||
ebus_dma.h | ||
ecc.h | ||
eeprom.h | ||
elf.h | ||
elf_32.h | ||
elf_64.h | ||
estate.h | ||
extable.h | ||
fbio.h | ||
fhc.h | ||
floppy.h | ||
floppy_32.h | ||
floppy_64.h | ||
fpumacro.h | ||
ftrace.h | ||
futex.h | ||
futex_32.h | ||
futex_64.h | ||
hardirq.h | ||
hardirq_32.h | ||
hardirq_64.h | ||
head.h | ||
head_32.h | ||
head_64.h | ||
hibernate.h | ||
highmem.h | ||
hugetlb.h | ||
hvtramp.h | ||
hw_irq.h | ||
hypervisor.h | ||
idprom.h | ||
intr_queue.h | ||
io-unit.h | ||
io.h | ||
io_32.h | ||
io_64.h | ||
ioctls.h | ||
iommu-common.h | ||
iommu.h | ||
iommu_32.h | ||
iommu_64.h | ||
irq.h | ||
irq_32.h | ||
irq_64.h | ||
irqflags.h | ||
irqflags_32.h | ||
irqflags_64.h | ||
jump_label.h | ||
Kbuild | ||
kdebug.h | ||
kdebug_32.h | ||
kdebug_64.h | ||
kgdb.h | ||
kprobes.h | ||
ldc.h | ||
leon.h | ||
leon_amba.h | ||
leon_pci.h | ||
lsu.h | ||
machines.h | ||
mbus.h | ||
mc146818rtc.h | ||
mc146818rtc_32.h | ||
mc146818rtc_64.h | ||
mdesc.h | ||
memctrl.h | ||
mman.h | ||
mmu.h | ||
mmu_32.h | ||
mmu_64.h | ||
mmu_context.h | ||
mmu_context_32.h | ||
mmu_context_64.h | ||
mmzone.h | ||
mxcc.h | ||
nmi.h | ||
ns87303.h | ||
obio.h | ||
opcodes.h | ||
openprom.h | ||
oplib.h | ||
oplib_32.h | ||
oplib_64.h | ||
page.h | ||
page_32.h | ||
page_64.h | ||
parport.h | ||
parport_64.h | ||
pbm.h | ||
pci.h | ||
pcic.h | ||
pcr.h | ||
percpu.h | ||
percpu_32.h | ||
percpu_64.h | ||
perf_event.h | ||
pgalloc.h | ||
pgalloc_32.h | ||
pgalloc_64.h | ||
pgtable.h | ||
pgtable_32.h | ||
pgtable_64.h | ||
pgtsrmmu.h | ||
pil.h | ||
processor.h | ||
processor_32.h | ||
processor_64.h | ||
prom.h | ||
psr.h | ||
ptrace.h | ||
qrwlock.h | ||
qspinlock.h | ||
ross.h | ||
sbi.h | ||
scratchpad.h | ||
seccomp.h | ||
sections.h | ||
setup.h | ||
sfafsr.h | ||
sfp-machine.h | ||
sfp-machine_32.h | ||
sfp-machine_64.h | ||
shmparam.h | ||
shmparam_32.h | ||
shmparam_64.h | ||
sigcontext.h | ||
signal.h | ||
smp.h | ||
smp_32.h | ||
smp_64.h | ||
sparsemem.h | ||
spinlock.h | ||
spinlock_32.h | ||
spinlock_64.h | ||
spinlock_types.h | ||
spitfire.h | ||
stacktrace.h | ||
starfire.h | ||
string.h | ||
string_32.h | ||
string_64.h | ||
sunbpp.h | ||
swift.h | ||
switch_to.h | ||
switch_to_32.h | ||
switch_to_64.h | ||
syscall.h | ||
syscalls.h | ||
termbits.h | ||
thread_info.h | ||
thread_info_32.h | ||
thread_info_64.h | ||
timer.h | ||
timer_32.h | ||
timer_64.h | ||
timex.h | ||
timex_32.h | ||
timex_64.h | ||
tlb.h | ||
tlb_32.h | ||
tlb_64.h | ||
tlbflush.h | ||
tlbflush_32.h | ||
tlbflush_64.h | ||
topology.h | ||
topology_32.h | ||
topology_64.h | ||
trap_block.h | ||
traps.h | ||
tsb.h | ||
tsunami.h | ||
ttable.h | ||
turbosparc.h | ||
uaccess.h | ||
uaccess_32.h | ||
uaccess_64.h | ||
unistd.h | ||
upa.h | ||
uprobes.h | ||
user.h | ||
vaddrs.h | ||
vdso.h | ||
video.h | ||
viking.h | ||
vio.h | ||
visasm.h | ||
vmalloc.h | ||
vvar.h | ||
winmacro.h | ||
xor.h | ||
xor_32.h | ||
xor_64.h |