[RFC PATCH 00/29] mm: remove bootmem allocator

Mike Rapoport
2018-09-05T15:59:15Z

Hi,

These patches switch early memory managment to use memblock directly
without any bootmem compatibility wrappers. As the result both bootmem and
nobootmem are removed.

There are still a couple of things to sort out, the most important is the
removal of bootmem usage in MIPS.

Still, IMHO, the series is in sufficient state to post and get the early
feedback.

The patches are build-tested with defconfig for most architectures (I
couldn't find a compiler for nds32 and unicore32) and boot-tested on x86
VM.

Mike Rapoport (29):
mips: switch to NO_BOOTMEM
mm: remove CONFIG_NO_BOOTMEM
mm: remove CONFIG_HAVE_MEMBLOCK
mm: remove bootmem allocator implementation.
mm: nobootmem: remove dead code
memblock: rename memblock_alloc{_nid,_try_nid} to memblock_phys_alloc*
memblock: remove _virt from APIs returning virtual address
memblock: replace alloc_bootmem_align with memblock_alloc
memblock: replace alloc_bootmem_low with memblock_alloc_low
memblock: replace __alloc_bootmem_node_nopanic with
memblock_alloc_try_nid_nopanic
memblock: replace alloc_bootmem_pages_nopanic with
memblock_alloc_nopanic
memblock: replace alloc_bootmem_low with memblock_alloc_low
memblock: replace __alloc_bootmem_nopanic with
memblock_alloc_from_nopanic
memblock: add align parameter to memblock_alloc_node()
memblock: replace alloc_bootmem_pages_node with memblock_alloc_node
memblock: replace __alloc_bootmem_node with appropriate memblock_ API
memblock: replace alloc_bootmem_node with memblock_alloc_node
memblock: replace alloc_bootmem_low_pages with memblock_alloc_low
memblock: replace alloc_bootmem_pages with memblock_alloc
memblock: replace __alloc_bootmem with memblock_alloc_from
memblock: replace alloc_bootmem with memblock_alloc
mm: nobootmem: remove bootmem allocation APIs
memblock: replace free_bootmem{_node} with memblock_free
memblock: replace free_bootmem_late with memblock_free_late
memblock: rename free_all_bootmem to memblock_free_all
memblock: rename __free_pages_bootmem to memblock_free_pages
mm: remove nobootmem
memblock: replace BOOTMEM_ALLOC_* with MEMBLOCK variants
mm: remove include/linux/bootmem.h

arch/alpha/Kconfig | 2 -
arch/alpha/kernel/core_cia.c | 4 +-
arch/alpha/kernel/core_irongate.c | 4 +-
arch/alpha/kernel/core_marvel.c | 6 +-
arch/alpha/kernel/core_titan.c | 2 +-
arch/alpha/kernel/core_tsunami.c | 2 +-
arch/alpha/kernel/pci-noop.c | 6 +-
arch/alpha/kernel/pci.c | 6 +-
arch/alpha/kernel/pci_iommu.c | 14 +-
arch/alpha/kernel/setup.c | 3 +-
arch/alpha/kernel/sys_nautilus.c | 2 +-
arch/alpha/mm/init.c | 4 +-
arch/alpha/mm/numa.c | 1 -
arch/arc/Kconfig | 2 -
arch/arc/kernel/unwind.c | 6 +-
arch/arc/mm/highmem.c | 4 +-
arch/arc/mm/init.c | 3 +-
arch/arm/Kconfig | 2 -
arch/arm/kernel/devtree.c | 1 -
arch/arm/kernel/setup.c | 5 +-
arch/arm/mach-omap2/omap_hwmod.c | 4 +-
arch/arm/mm/dma-mapping.c | 1 -
arch/arm/mm/init.c | 3 +-
arch/arm/mm/mmu.c | 2 +-
arch/arm/xen/mm.c | 1 -
arch/arm/xen/p2m.c | 2 +-
arch/arm64/Kconfig | 2 -
arch/arm64/kernel/acpi.c | 1 -
arch/arm64/kernel/acpi_numa.c | 1 -
arch/arm64/kernel/setup.c | 3 +-
arch/arm64/mm/dma-mapping.c | 2 +-
arch/arm64/mm/init.c | 5 +-
arch/arm64/mm/kasan_init.c | 3 +-
arch/arm64/mm/mmu.c | 2 +-
arch/arm64/mm/numa.c | 5 +-
arch/c6x/Kconfig | 2 -
arch/c6x/kernel/setup.c | 1 -
arch/c6x/mm/dma-coherent.c | 4 +-
arch/c6x/mm/init.c | 7 +-
arch/h8300/Kconfig | 2 -
arch/h8300/kernel/setup.c | 1 -
arch/h8300/mm/init.c | 6 +-
arch/hexagon/Kconfig | 2 -
arch/hexagon/kernel/dma.c | 2 +-
arch/hexagon/kernel/setup.c | 2 +-
arch/hexagon/mm/init.c | 3 +-
arch/ia64/Kconfig | 2 -
arch/ia64/kernel/crash.c | 2 +-
arch/ia64/kernel/efi.c | 2 +-
arch/ia64/kernel/ia64_ksyms.c | 2 +-
arch/ia64/kernel/iosapic.c | 2 +-
arch/ia64/kernel/mca.c | 10 +-
arch/ia64/kernel/mca_drv.c | 2 +-
arch/ia64/kernel/setup.c | 1 -
arch/ia64/kernel/smpboot.c | 2 +-
arch/ia64/kernel/topology.c | 2 +-
arch/ia64/kernel/unwind.c | 2 +-
arch/ia64/mm/contig.c | 6 +-
arch/ia64/mm/discontig.c | 7 +-
arch/ia64/mm/init.c | 11 +-
arch/ia64/mm/numa.c | 2 +-
arch/ia64/mm/tlb.c | 6 +-
arch/ia64/pci/pci.c | 2 +-
arch/ia64/sn/kernel/bte.c | 2 +-
arch/ia64/sn/kernel/io_common.c | 9 +-
arch/ia64/sn/kernel/setup.c | 6 +-
arch/m68k/Kconfig | 2 -
arch/m68k/atari/stram.c | 5 +-
arch/m68k/coldfire/m54xx.c | 2 +-
arch/m68k/kernel/setup_mm.c | 1 -
arch/m68k/kernel/setup_no.c | 1 -
arch/m68k/kernel/uboot.c | 2 +-
arch/m68k/mm/init.c | 6 +-
arch/m68k/mm/mcfmmu.c | 5 +-
arch/m68k/mm/motorola.c | 8 +-
arch/m68k/mm/sun3mmu.c | 6 +-
arch/m68k/sun3/config.c | 2 +-
arch/m68k/sun3/dvma.c | 2 +-
arch/m68k/sun3/mmu_emu.c | 2 +-
arch/m68k/sun3/sun3dvma.c | 5 +-
arch/m68k/sun3x/dvma.c | 2 +-
arch/microblaze/Kconfig | 2 -
arch/microblaze/mm/consistent.c | 2 +-
arch/microblaze/mm/init.c | 7 +-
arch/microblaze/pci/pci-common.c | 2 +-
arch/mips/Kconfig | 1 -
arch/mips/ar7/memory.c | 2 +-
arch/mips/ath79/setup.c | 2 +-
arch/mips/bcm63xx/prom.c | 2 +-
arch/mips/bcm63xx/setup.c | 2 +-
arch/mips/bmips/setup.c | 2 +-
arch/mips/cavium-octeon/dma-octeon.c | 4 +-
arch/mips/dec/prom/memory.c | 2 +-
arch/mips/emma/common/prom.c | 2 +-
arch/mips/fw/arc/memory.c | 2 +-
arch/mips/jazz/jazzdma.c | 2 +-
arch/mips/kernel/crash.c | 2 +-
arch/mips/kernel/crash_dump.c | 2 +-
arch/mips/kernel/prom.c | 2 +-
arch/mips/kernel/setup.c | 96 +---
arch/mips/kernel/traps.c | 4 +-
arch/mips/kernel/vpe.c | 2 +-
arch/mips/kvm/commpage.c | 2 +-
arch/mips/kvm/dyntrans.c | 2 +-
arch/mips/kvm/emulate.c | 2 +-
arch/mips/kvm/interrupt.c | 2 +-
arch/mips/kvm/mips.c | 2 +-
arch/mips/lantiq/prom.c | 2 +-
arch/mips/lasat/prom.c | 2 +-
arch/mips/loongson64/common/init.c | 2 +-
arch/mips/loongson64/loongson-3/numa.c | 37 +-
arch/mips/mm/init.c | 7 +-
arch/mips/mm/pgtable-32.c | 2 +-
arch/mips/mti-malta/malta-memory.c | 2 +-
arch/mips/netlogic/xlp/dt.c | 2 +-
arch/mips/pci/pci-legacy.c | 2 +-
arch/mips/pci/pci.c | 2 +-
arch/mips/ralink/of.c | 2 +-
arch/mips/rb532/prom.c | 2 +-
arch/mips/sgi-ip27/ip27-memory.c | 14 +-
arch/mips/sibyte/common/cfe.c | 2 +-
arch/mips/sibyte/swarm/setup.c | 2 +-
arch/mips/txx9/rbtx4938/prom.c | 2 +-
arch/nds32/Kconfig | 2 -
arch/nds32/kernel/setup.c | 3 +-
arch/nds32/mm/highmem.c | 2 +-
arch/nds32/mm/init.c | 13 +-
arch/nios2/Kconfig | 2 -
arch/nios2/kernel/prom.c | 2 +-
arch/nios2/kernel/setup.c | 1 -
arch/nios2/mm/init.c | 4 +-
arch/openrisc/Kconfig | 2 -
arch/openrisc/kernel/setup.c | 3 +-
arch/openrisc/mm/init.c | 7 +-
arch/openrisc/mm/ioremap.c | 2 +-
arch/parisc/Kconfig | 2 -
arch/parisc/mm/init.c | 3 +-
arch/powerpc/Kconfig | 2 -
arch/powerpc/kernel/dt_cpu_ftrs.c | 4 +-
arch/powerpc/kernel/paca.c | 2 +-
arch/powerpc/kernel/pci_32.c | 4 +-
arch/powerpc/kernel/prom.c | 2 +-
arch/powerpc/kernel/setup-common.c | 3 +-
arch/powerpc/kernel/setup_32.c | 10 +-
arch/powerpc/kernel/setup_64.c | 11 +-
arch/powerpc/lib/alloc.c | 4 +-
arch/powerpc/mm/hugetlbpage.c | 1 -
arch/powerpc/mm/mem.c | 5 +-
arch/powerpc/mm/mmu_context_nohash.c | 8 +-
arch/powerpc/mm/numa.c | 5 +-
arch/powerpc/mm/pgtable_32.c | 2 +-
arch/powerpc/mm/ppc_mmu_32.c | 2 +-
arch/powerpc/platforms/pasemi/iommu.c | 2 +-
arch/powerpc/platforms/powermac/nvram.c | 4 +-
arch/powerpc/platforms/powernv/opal.c | 2 +-
arch/powerpc/platforms/powernv/pci-ioda.c | 9 +-
arch/powerpc/platforms/ps3/setup.c | 4 +-
arch/powerpc/sysdev/dart_iommu.c | 2 +-
arch/powerpc/sysdev/msi_bitmap.c | 4 +-
arch/riscv/Kconfig | 2 -
arch/riscv/mm/init.c | 5 +-
arch/s390/Kconfig | 2 -
arch/s390/kernel/crash_dump.c | 5 +-
arch/s390/kernel/setup.c | 16 +-
arch/s390/kernel/smp.c | 5 +-
arch/s390/kernel/topology.c | 6 +-
arch/s390/kernel/vdso.c | 2 +-
arch/s390/mm/extmem.c | 2 +-
arch/s390/mm/init.c | 5 +-
arch/s390/mm/vmem.c | 7 +-
arch/s390/numa/mode_emu.c | 3 +-
arch/s390/numa/numa.c | 3 +-
arch/s390/numa/toptree.c | 4 +-
arch/sh/Kconfig | 2 -
arch/sh/mm/init.c | 9 +-
arch/sh/mm/ioremap_fixed.c | 2 +-
arch/sparc/Kconfig | 2 -
arch/sparc/kernel/mdesc.c | 7 +-
arch/sparc/kernel/prom_32.c | 4 +-
arch/sparc/kernel/prom_64.c | 2 +-
arch/sparc/kernel/setup_64.c | 12 +-
arch/sparc/kernel/smp_64.c | 18 +-
arch/sparc/mm/init_32.c | 5 +-
arch/sparc/mm/init_64.c | 27 +-
arch/sparc/mm/srmmu.c | 12 +-
arch/um/Kconfig | 2 -
arch/um/drivers/net_kern.c | 4 +-
arch/um/drivers/vector_kern.c | 4 +-
arch/um/kernel/initrd.c | 4 +-
arch/um/kernel/mem.c | 16 +-
arch/um/kernel/physmem.c | 1 -
arch/unicore32/Kconfig | 2 -
arch/unicore32/kernel/hibernate.c | 2 +-
arch/unicore32/kernel/setup.c | 5 +-
arch/unicore32/mm/init.c | 7 +-
arch/unicore32/mm/mmu.c | 3 +-
arch/x86/Kconfig | 4 -
arch/x86/kernel/acpi/boot.c | 5 +-
arch/x86/kernel/acpi/sleep.c | 1 -
arch/x86/kernel/apic/apic.c | 2 +-
arch/x86/kernel/apic/io_apic.c | 7 +-
arch/x86/kernel/cpu/common.c | 2 +-
arch/x86/kernel/e820.c | 5 +-
arch/x86/kernel/mpparse.c | 1 -
arch/x86/kernel/pci-dma.c | 2 +-
arch/x86/kernel/pci-swiotlb.c | 2 +-
arch/x86/kernel/pvclock.c | 2 +-
arch/x86/kernel/setup.c | 1 -
arch/x86/kernel/setup_percpu.c | 14 +-
arch/x86/kernel/smpboot.c | 2 +-
arch/x86/kernel/tce_64.c | 6 +-
arch/x86/mm/amdtopology.c | 1 -
arch/x86/mm/fault.c | 2 +-
arch/x86/mm/highmem_32.c | 4 +-
arch/x86/mm/init.c | 1 -
arch/x86/mm/init_32.c | 5 +-
arch/x86/mm/init_64.c | 7 +-
arch/x86/mm/ioremap.c | 2 +-
arch/x86/mm/kasan_init_64.c | 11 +-
arch/x86/mm/numa.c | 3 +-
arch/x86/mm/numa_32.c | 1 -
arch/x86/mm/numa_64.c | 2 +-
arch/x86/mm/numa_emulation.c | 1 -
arch/x86/mm/pageattr-test.c | 2 +-
arch/x86/mm/pageattr.c | 2 +-
arch/x86/mm/pat.c | 2 +-
arch/x86/mm/physaddr.c | 2 +-
arch/x86/pci/i386.c | 2 +-
arch/x86/platform/efi/efi.c | 3 +-
arch/x86/platform/efi/efi_64.c | 2 +-
arch/x86/platform/efi/quirks.c | 7 +-
arch/x86/platform/olpc/olpc_dt.c | 4 +-
arch/x86/power/hibernate_32.c | 2 +-
arch/x86/xen/enlighten.c | 2 +-
arch/x86/xen/enlighten_pv.c | 3 +-
arch/x86/xen/mmu_pv.c | 2 +-
arch/x86/xen/p2m.c | 6 +-
arch/xtensa/Kconfig | 2 -
arch/xtensa/kernel/pci.c | 2 +-
arch/xtensa/mm/cache.c | 2 +-
arch/xtensa/mm/init.c | 4 +-
arch/xtensa/mm/kasan_init.c | 5 +-
arch/xtensa/mm/mmu.c | 4 +-
arch/xtensa/platforms/iss/network.c | 4 +-
arch/xtensa/platforms/iss/setup.c | 6 +-
block/blk-settings.c | 2 +-
block/bounce.c | 2 +-
drivers/acpi/numa.c | 1 -
drivers/acpi/tables.c | 3 +-
drivers/base/platform.c | 2 +-
drivers/clk/ti/clk.c | 4 +-
drivers/firmware/dmi_scan.c | 2 +-
drivers/firmware/efi/apple-properties.c | 4 +-
drivers/firmware/efi/memmap.c | 2 +-
drivers/firmware/iscsi_ibft_find.c | 2 +-
drivers/firmware/memmap.c | 4 +-
drivers/iommu/mtk_iommu.c | 2 +-
drivers/iommu/mtk_iommu_v1.c | 2 +-
drivers/macintosh/smu.c | 7 +-
drivers/mtd/ar7part.c | 2 +-
drivers/net/arcnet/arc-rimi.c | 2 +-
drivers/net/arcnet/com20020-isa.c | 2 +-
drivers/net/arcnet/com90io.c | 2 +-
drivers/of/fdt.c | 5 +-
drivers/of/of_reserved_mem.c | 13 +-
drivers/of/unittest.c | 4 +-
drivers/s390/char/fs3270.c | 2 +-
drivers/s390/char/tty3270.c | 2 +-
drivers/s390/cio/cmf.c | 2 +-
drivers/s390/virtio/virtio_ccw.c | 2 +-
drivers/sfi/sfi_core.c | 2 +-
drivers/staging/android/ion/Kconfig | 2 +-
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 +-
drivers/tty/serial/cpm_uart/cpm_uart_cpm1.c | 2 +-
drivers/tty/serial/cpm_uart/cpm_uart_cpm2.c | 2 +-
drivers/usb/early/xhci-dbc.c | 14 +-
drivers/xen/balloon.c | 2 +-
drivers/xen/events/events_base.c | 2 +-
drivers/xen/grant-table.c | 2 +-
drivers/xen/swiotlb-xen.c | 8 +-
drivers/xen/xen-selfballoon.c | 2 +-
fs/dcache.c | 2 +-
fs/inode.c | 2 +-
fs/namespace.c | 2 +-
fs/proc/kcore.c | 2 +-
fs/proc/page.c | 2 +-
fs/proc/vmcore.c | 2 +-
fs/pstore/Kconfig | 1 -
include/linux/bootmem.h | 404 --------------
include/linux/memblock.h | 159 +++++-
include/linux/mm.h | 2 +-
include/linux/mmzone.h | 5 +-
init/main.c | 12 +-
kernel/dma/swiotlb.c | 10 +-
kernel/futex.c | 2 +-
kernel/locking/qspinlock_paravirt.h | 2 +-
kernel/pid.c | 2 +-
kernel/power/snapshot.c | 4 +-
kernel/printk/printk.c | 5 +-
kernel/profile.c | 2 +-
lib/Kconfig.debug | 3 +-
lib/cpumask.c | 4 +-
mm/Kconfig | 8 +-
mm/Makefile | 8 +-
mm/bootmem.c | 811 ----------------------------
mm/hugetlb.c | 6 +-
mm/internal.h | 2 +-
mm/kasan/kasan_init.c | 7 +-
mm/kmemleak.c | 2 +-
mm/memblock.c | 153 +++++-
mm/memory_hotplug.c | 1 -
mm/nobootmem.c | 445 ---------------
mm/page_alloc.c | 17 +-
mm/page_ext.c | 6 +-
mm/page_idle.c | 2 +-
mm/page_owner.c | 2 +-
mm/page_poison.c | 2 +-
mm/percpu.c | 30 +-
mm/sparse-vmemmap.c | 6 +-
mm/sparse.c | 18 +-
net/ipv4/inet_hashtables.c | 2 +-
net/ipv4/tcp.c | 2 +-
net/ipv4/udp.c | 2 +-
net/sctp/protocol.c | 2 +-
net/xfrm/xfrm_hash.c | 2 +-
325 files changed, 846 insertions(+), 2478 deletions(-)
delete mode 100644 include/linux/bootmem.h
delete mode 100644 mm/bootmem.c
delete mode 100644 mm/nobootmem.c

--
2.7.4