Skip to content

Use lmb with x86

Yinghai Lu linux-arch lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest25 patches 12 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/25lmb: lmb_find_base() should return LMB_ERROR on failing pathlib/lmb.c+1 -10 replies
2/25lmb: Prepare x86 to use lmb to replace early_resinclude/linux/lmb.h lib/lmb.c+6 -20 replies
3/25lmb: Print new doubled array location infolib/lmb.c+4 -25 replies
4/25lmb: Export LMB_ERROR againinclude/linux/lmb.h lib/lmb.c+1 -20 replies
5/25lmb: Prepare to include linux/lmb.h in core fileinclude/linux/lmb.h+3 -01 reply
6/25lmb: Add ARCH_DISCARD_LMB to put lmb code to .initinclude/linux/lmb.h lib/lmb.c+32 -240 replies
7/25lmb: Add lmb_find_in_range()include/linux/lmb.h lib/lmb.c+10 -00 replies
8/25x86, lmb: Add lmb_find_in_range_size()arch/x86/include/asm/lmb.h arch/x86/mm/Makefile arch/x86/mm/lmb.c+98 -00 replies
9/25bootmem, x86: Add weak version of reserve_bootmem_genericarch/x86/mm/init_32.c arch/x86/mm/init_64.c mm/bootmem.c+8 -240 replies
10/25x86, lmb: Add lmb_to_bootmem()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+31 -01 reply
11/25x86,lmb: Add lmb_reserve_range/lmb_free_rangearch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+25 -01 reply
12/25x86, lmb: Add get_free_all_memory_range()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+103 -11 reply
13/25x86, lmb: Add lmb_register_active_regions() and lmb_hole_size()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+71 -00 replies
14/25lmb: Add find_memory_core_early()include/linux/mm.h mm/page_alloc.c+38 -00 replies
15/25x86, lmb: Add lmb_find_in_range_node()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+16 -00 replies
16/25x86, lmb: Add lmb_free_memory_in_range()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+49 -00 replies
17/25x86, lmb: Add lmb_memory_in_range()arch/x86/include/asm/lmb.h arch/x86/mm/lmb.c+18 -10 replies
18/25x86, lmb: Use lmb_debug to control debug message print outarch/x86/mm/lmb.c+18 -61 reply
19/25x86: Use lmb to replace early_resarch/x86/Kconfig arch/x86/include/asm/e820.h arch/x86/kernel/check.c +12 more+140 -1910 replies
20/25x86: Replace e820_/_early string with lmb_arch/x86/include/asm/efi.h arch/x86/kernel/acpi/sleep.c arch/x86/kernel/apic/numaq_32.c +17 more+100 -880 replies
21/25x86: Remove not used early_res codearch/x86/include/asm/e820.h arch/x86/kernel/e820.c include/linux/early_res.h +1 more+0 -6730 replies
22/25x86, lmb: Use lmb_memory_size()/lmb_free_memory_size() to get correct dma_reservearch/x86/include/asm/e820.h arch/x86/kernel/e820.c arch/x86/kernel/setup.c +1 more+20 -70 replies
23/25x86: Have nobootmem version setup_bootmem_allocator()arch/x86/mm/init_32.c+10 -51 reply
24/25x86: Put 64 bit numa node memmap above 16March/x86/mm/numa_64.c arch/x86/mm/srat_64.c+3 -30 replies
25/25swiotlb: Use page alignment for early buffer allocationlib/swiotlb.c+8 -80 replies

Reviews trailers per patch

1 of 25 patches has a Reviewed-by or Acked-by.

PatchBenjamin Herrenschmidt
1/25
2/25A-b
3/25
4/25
5/25
6/25
7/25
8/25
9/25
10/25
11/25
12/25
13/25
14/25
15/25
16/25
17/25
18/25
19/25
20/25
21/25
22/25
23/25
24/25
25/25

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH -v19 00/25] Use lmb with x86

New lmb could be used to replace early_res in x86.

Suggested by: David, Ben, and Thomas

-v6: change sequence as requested by Thomas
-v7: seperate them to more patches
-v8: add boundary checking to make sure not free partial page. -v9: use lmb_debug to control print out of reserve_lmb.
add e820 clean up, and e820 become __initdata
-v10:use lmb.rmo_size and ARCH_DISCARD_LMB according to Michael
change name to lmb_find_area/reserve_lmb_area/free_lmb_area,
according to Michael
update find_lmb_area to use __lmb_alloc_base according to ben
-v11:move find_lmb_area_size back to x86.
x86 has own find_lmb_area, and could be disabled by ARCH_LMB_FIND_AREA
because _lmb_find_base has different behavoir from x86's old one. one from high to high and one from low to high
need more test
tested for x86 32bit/64bit, numa/nonuma, nobootmem/bootmem.
-v12:refresh the series with current tip
seperate nobootmem.c, so could remove some #ifdef
still keep CONFIG_NO_BOOTMEM, in x86 .c, and could use the as tags so other lmb could refer them to use NO_BOOTMEM.

-v14:refresh to current tip

-v15:remove x86 version lmb_find_area
remove other nobootmem and x86 e820 from this patchset

-v16: rebase to Ben's cleanup powerpc/lmb
move back most func back to arch/x86/mm/lmb.c

-v17: remove exposing of lmb_add_region
seperate first lmb core related patch to several small patches.

-v18: change lmb_find_area to lmb_find_in_range
kill __lmb_find_area and use lmb_find_area directly remove lmb_add_memory
change lmb_reserve_area to lmb_reserve_range change lmb_free_area to lmb_free_range don't clear lmb.reserved after converting use for_each_lmb to replace for cycle rebase to 06/15/2010 powerpc/lmb

-v19: make the patchset only focus on lmb related.
will submit patches about bootmem/nobootmem seperating and other e820
related later after this one.

this patcheset is based on tip/master+powerpc/lmb

todo:
replace range handling (subtracting) with lmb.

Thanks

Yinghai Lu

 arch/x86/Kconfig                |    9 +-
 arch/x86/include/asm/e820.h     |   21 +-
 arch/x86/include/asm/efi.h      |    2 +-
 arch/x86/include/asm/lmb.h      |   21 ++
 arch/x86/kernel/acpi/sleep.c    |    7 +-
 arch/x86/kernel/apic/numaq_32.c |    3 +-
 arch/x86/kernel/check.c         |   16 +-
 arch/x86/kernel/e820.c          |  197 ++++----------
 arch/x86/kernel/efi.c           |    5 +-
 arch/x86/kernel/head.c          |    3 +-
 arch/x86/kernel/head32.c        |   10 +-
 arch/x86/kernel/head64.c        |    7 +-
 arch/x86/kernel/mpparse.c       |    5 +-
 arch/x86/kernel/setup.c         |   76 ++++--
 arch/x86/kernel/setup_percpu.c  |    6 -
 arch/x86/kernel/trampoline.c    |    8 +-
 arch/x86/mm/Makefile            |    2 +
 arch/x86/mm/init.c              |    7 +-
 arch/x86/mm/init_32.c           |   31 +-
 arch/x86/mm/init_64.c           |   38 +--
 arch/x86/mm/k8topology_64.c     |    4 +-
 arch/x86/mm/lmb.c               |  398 ++++++++++++++++++++++++++
 arch/x86/mm/memtest.c           |    7 +-
 arch/x86/mm/numa_32.c           |   25 +-
 arch/x86/mm/numa_64.c           |   45 ++--
 arch/x86/mm/srat_32.c           |    3 +-
 arch/x86/mm/srat_64.c           |   13 +-
 arch/x86/xen/mmu.c              |    5 +-
 arch/x86/xen/setup.c            |    3 +-
 include/linux/early_res.h       |   23 --
 include/linux/lmb.h             |   17 ++
 include/linux/mm.h              |    2 +
 kernel/Makefile                 |    1 -
 kernel/early_res.c              |  584 ---------------------------------------
 lib/lmb.c                       |   65 +++--
 lib/swiotlb.c                   |   16 +-
 mm/bootmem.c                    |   11 +-
 mm/page_alloc.c                 |   72 +++--
 mm/sparse-vmemmap.c             |   11 -
 39 files changed, 777 insertions(+), 1002 deletions(-)
 create mode 100644 arch/x86/include/asm/lmb.h
 create mode 100644 arch/x86/mm/lmb.c
 delete mode 100644 include/linux/early_res.h
 delete mode 100644 kernel/early_res.c