Skip to content

smpboot integration

Glauber de Oliveira Costa lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest79 patches 24 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/79change var types in __inquire_remote_apicarch/x86/kernel/smpboot_32.c+2 -20 replies
2/79add loglevel to printksarch/x86/kernel/smpboot_32.c+6 -50 replies
3/79use apic_*_around instead of apic_write in x86_64arch/x86/kernel/smpboot_64.c+10 -80 replies
4/79use start_ipi_hook in x86_64arch/x86/kernel/smpboot_64.c include/asm-x86/smp.h include/asm-x86/smp_32.h+11 -40 replies
5/79add an smp_apply_quirks to smpboot_32.carch/x86/kernel/smpboot_32.c+18 -120 replies
6/79decouple call to print_cpu_info from smp_store_cpu_infoarch/x86/kernel/smpboot_64.c+4 -10 replies
7/79provide specialized identification routines for x86_64arch/x86/kernel/setup_64.c+12 -20 replies
8/79use identify_boot_cpuarch/x86/kernel/bugs_64.c+1 -10 replies
9/79call identify_secondary_cpu in smp_store_cpu_infoarch/x86/kernel/smpboot_64.c+2 -10 replies
10/79merge smp_store_cpu_infoarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c +2 more+80 -870 replies
11/79always enable irqs when entering idlearch/x86/kernel/process_32.c+7 -20 replies
12/79don't call local_irq_enable before entering idlearch/x86/kernel/smpboot_32.c+0 -30 replies
13/79move setup_secondary_clock a little bit down in the functionarch/x86/kernel/smpboot_32.c+2 -10 replies
14/79move state update out of ipi_lockarch/x86/kernel/smpboot_64.c+2 -20 replies
15/79provide APIC_INTEGRATED definition for x86_64include/asm-x86/apicdef.h+5 -10 replies
16/79use APIC_INTEGRATED tests in x86_64arch/x86/kernel/smpboot_64.c+13 -10 replies
17/79add barriers statementarch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+5 -00 replies
18/79isolate sanity checkingarch/x86/kernel/smpboot_32.c+31 -260 replies
19/79isolate logic to disable smparch/x86/kernel/smpboot_32.c+16 -160 replies
20/79do tests before do_boot_cpu in i386arch/x86/kernel/smpboot_32.c+13 -50 replies
21/79make __smp_prepare_cpu voidarch/x86/kernel/smpboot_32.c+3 -100 replies
22/79move assignment of CPU_PREPARE before do_boot_cpuarch/x86/kernel/smpboot_32.c+1 -10 replies
23/79unify extern masks declarationinclude/asm-x86/smp.h include/asm-x86/smp_32.h include/asm-x86/smp_64.h+12 -190 replies
24/79define bios to apicid mappingarch/x86/kernel/smpboot_32.c include/asm-x86/mach-bigsmp/mach_apic.h include/asm-x86/mach-es7000/mach_apic.h +1 more+12 -120 replies
25/79initialize map pointers in setup_32.carch/x86/kernel/setup_32.c+24 -00 replies
26/79make node to apic mapping declarations unconditionalinclude/asm-x86/topology.h+4 -40 replies
27/79fix alloc_bootmem_pages_node macroinclude/asm-x86/mmzone_32.h+1 -10 replies
28/79use specialized routine for setup per-cpu areaarch/x86/Kconfig arch/x86/kernel/Makefile arch/x86/kernel/setup.c +2 more+107 -790 replies
29/79fill bios cpu to apicid mapsarch/x86/kernel/mpparse_32.c+8 -30 replies
30/79fill cpu to apicid and present map in mpparsearch/x86/kernel/mpparse_32.c arch/x86/kernel/smpboot_32.c+24 -190 replies
31/79get rid of cpucountarch/x86/kernel/smpboot_32.c+3 -90 replies
32/79allow user to impress friends.arch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c+22 -150 replies
33/79do smp tainting checks in a separate functionarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c+21 -200 replies
34/79move impress_friends and smp_check to cpus_donearch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+22 -120 replies
35/79add subarch support (for headers) to x86_64arch/x86/Makefile+0 -10 replies
36/79include mach_wakecpu.h in smpboot_64arch/x86/kernel/smpboot_64.c+3 -80 replies
37/79include smpboot_hooks.h in smpboot_64.carch/x86/kernel/smpboot_64.c+3 -260 replies
38/79move smp_intr_init away from smpboot_32.carch/x86/kernel/apic_32.c arch/x86/kernel/smpboot_32.c+23 -210 replies
39/79don't set maps in native_smp_prepare_boot_cpu()arch/x86/kernel/smpboot_32.c+0 -30 replies
40/79wipe get_nmi_reason out of nmi_64.harch/x86/kernel/nmi_64.c arch/x86/kernel/traps_64.c include/asm-x86/nmi_64.h+4 -20 replies
41/79unify nmi_32.h and nmi_64.harch/x86/kernel/nmi_32.c include/asm-x86/nmi.h include/asm-x86/nmi_32.h +1 more+90 -1530 replies
42/79call check_nmi_watchdog explicitly in native_smp_cpus_donearch/x86/kernel/nmi_32.c arch/x86/kernel/smpboot_32.c+1 -20 replies
43/79call nmi_watchdog_default in i386arch/x86/kernel/smpboot_32.c include/asm-x86/nmi.h+4 -10 replies
44/79don't initialize sibling and core maps during preparationarch/x86/kernel/smpboot_32.c+0 -120 replies
45/79fix apic acking of irqsinclude/asm-x86/apic.h+1 -19 replies
46/79schedule work only if keventd is already runningarch/x86/kernel/smpboot_32.c+6 -20 replies
47/79do not zap_low_mappings in __smp_prepare_cpusarch/x86/kernel/smpboot_32.c+0 -70 replies
48/79boot cpus from cpu_up, instead of prepare_cpusarch/x86/kernel/smpboot_32.c+2 -460 replies
49/79get rid of commenced mask.arch/x86/kernel/smpboot_32.c+0 -80 replies
50/79use create_idle struct in do_boot_cpuarch/x86/kernel/smpboot_32.c+59 -270 replies
51/79don't span a new worker in __smp_prepare_cpuarch/x86/kernel/smpboot_32.c+2 -280 replies
52/79modify smp_callin in x86_64 to look like i386arch/x86/kernel/smpboot_64.c+5 -00 replies
53/79wrap esr setting up in i386 in lapic_setup_esrarch/x86/kernel/apic_32.c+40 -330 replies
54/79provide an end_local_APIC_setup functionarch/x86/kernel/apic_32.c arch/x86/kernel/smpboot_32.c+9 -10 replies
55/79calibrate delay with irqs enabledarch/x86/kernel/smpboot_32.c+2 -00 replies
56/79minor adjustments for do_boot_cpuarch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+20 -170 replies
57/79call do_boot_cpu directly from native_cpu_uparch/x86/kernel/smpboot_32.c+6 -150 replies
58/79include mach_apic.h in smpboot_64.c and smpboot.carch/x86/kernel/acpi/boot.c arch/x86/kernel/mpparse_64.c arch/x86/kernel/smpboot.c +7 more+25 -164 replies
59/79change wakeup_secondary namearch/x86/kernel/smpboot_64.c+4 -20 replies
60/79add callin tests to cpu_uparch/x86/kernel/smpboot_32.c+13 -70 replies
61/79move {un}map_cpu_to_logical_apicid to smpboot.carch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c+62 -570 replies
62/79move stack_start to smp.harch/x86/kernel/smpboot_32.c arch/x86/mach-voyager/voyager_smp.c include/asm-x86/smp.h+7 -130 replies
63/79change boot_cpu_id to boot_cpu_physical_apicidarch/x86/kernel/apic_64.c arch/x86/kernel/mpparse_64.c arch/x86/kernel/smpboot_64.c +5 more+30 -330 replies
64/79integrate do_boot_cpuarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c +1 more+594 -10440 replies
65/79integrate start_secondaryarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+85 -1390 replies
66/79merge smp_prepare_boot_cpuarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+18 -280 replies
67/79merge native_smp_cpus_donearch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+20 -400 replies
68/79use physical id when disabling smparch/x86/kernel/smpboot_32.c+5 -10 replies
69/79get rid of smp_boot_cpusarch/x86/kernel/smpboot_32.c+11 -190 replies
70/79additions to i386 native_smp_prepare_cpus.arch/x86/kernel/smpboot_32.c+19 -30 replies
71/79assign nr_ioapics = 0 in smpboot_hooks.hinclude/asm-x86/mach-default/smpboot_hooks.h+2 -00 replies
72/79change x86_64 native_smp_prepare_cpus to match i386arch/x86/kernel/smpboot_64.c+10 -140 replies
73/79add extra sanity checkarch/x86/kernel/smpboot_32.c+6 -00 replies
74/79change x86_64 sanity checks to match i386.arch/x86/kernel/smpboot_64.c+7 -30 replies
75/79introduce smpboot_clear_io_apicarch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c include/asm-x86/mach-default/smpboot_hooks.h +1 more+13 -20 replies
76/79merge native_smp_prepare_cpusarch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c arch/x86/kernel/smpboot_64.c+170 -2780 replies
77/79merge cpu_exit_cleararch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c+18 -190 replies
78/79move apicid mappings to smpboot.carch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c+21 -130 replies
79/79remove smpboot_32.c and smpboot_64.carch/x86/kernel/Makefile arch/x86/kernel/smpboot.c arch/x86/kernel/smpboot_32.c +2 more+50 -1440 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/79] smpboot integration

Hi,

This is a complement to my last patch series. In this one, I integrate smpboot.c The end result is that i386 also uses the new hotplug state machine, and boot cpus via cpu_up, instead of booting them in the preparation step, and only activating later.

The final diffstat says:

 59 files changed, 1974 insertions(+), 2752 deletions(-)

Leftovers:

smp.h could also be easily integrated. But this series was too big already setup64.c could also be completely moved to setup.c

Testing and bisectability:

The end result was tested in all my hardware (which includes qemu ;-). It does not mean it will boot _your_ hardware, but I did my best ;-)

The tree at least compiles in more than 20 randconfigs (for each of x86_64 and i386) For i386, each of the subarchitectures was compiled at least once. (By compile, I obviously mean, every patch, individually)

Full diffstat:

 a/arch/x86/kernel/smpboot_32.c                 |   68 -
 a/arch/x86/kernel/smpboot_64.c                 |   73 -
 a/include/asm-x86/nmi_64.h                     |   89 -
 arch/x86/kernel/Makefile                       |    4 
 arch/x86/kernel/apic_32.c                      |   81 -
 arch/x86/kernel/mpparse_32.c                   |   19 
 arch/x86/kernel/mpparse_64.c                   |   12 
 arch/x86/kernel/nmi_32.c                       |    2 
 arch/x86/kernel/smpboot.c                      | 1071 ++++++++++++++++
 arch/x86/kernel/smpboot_32.c                   | 1617 ++++---------------------
 arch/x86/kernel/smpboot_64.c                   |  949 +-------------
 b/arch/x86/Kconfig                             |    2 
 b/arch/x86/Makefile                            |    2 
 b/arch/x86/kernel/Makefile                     |    2 
 b/arch/x86/kernel/acpi/boot.c                  |    2 
 b/arch/x86/kernel/apic_32.c                    |   23 
 b/arch/x86/kernel/apic_64.c                    |   13 
 b/arch/x86/kernel/bugs_64.c                    |    3 
 b/arch/x86/kernel/mpparse_32.c                 |   12 
 b/arch/x86/kernel/mpparse_64.c                 |    2 
 b/arch/x86/kernel/nmi_32.c                     |    2 
 b/arch/x86/kernel/nmi_64.c                     |    2 
 b/arch/x86/kernel/process_32.c                 |   10 
 b/arch/x86/kernel/setup.c                      |  103 +
 b/arch/x86/kernel/setup64.c                    |   77 -
 b/arch/x86/kernel/setup_32.c                   |   25 
 b/arch/x86/kernel/setup_64.c                   |   15 
 b/arch/x86/kernel/smpboot.c                    |   77 +
 b/arch/x86/kernel/smpboot_32.c                 |    5 
 b/arch/x86/kernel/smpboot_64.c                 |   19 
 b/arch/x86/kernel/traps_64.c                   |    2 
 b/arch/x86/mach-voyager/voyager_smp.c          |    7 
 b/arch/x86/mm/k8topology_64.c                  |    7 
 b/arch/x86/pci/numa.c                          |    8 
 b/arch/x86/vdso/Makefile                       |    2 
 b/include/asm-x86/apic.h                       |    3 
 b/include/asm-x86/apicdef.h                    |    7 
 b/include/asm-x86/mach-bigsmp/mach_apic.h      |    7 
 b/include/asm-x86/mach-default/mach_apic.h     |   11 
 b/include/asm-x86/mach-default/mach_apicdef.h  |    5 
 b/include/asm-x86/mach-default/smpboot_hooks.h |    3 
 b/include/asm-x86/mach-es7000/mach_apic.h      |    8 
 b/include/asm-x86/mach-summit/mach_apic.h      |    4 
 b/include/asm-x86/mach-visws/smpboot_hooks.h   |    5 
 b/include/asm-x86/mmzone_32.h                  |    3 
 b/include/asm-x86/nmi.h                        |   92 +
 b/include/asm-x86/nmi_64.h                     |    3 
 b/include/asm-x86/smp.h                        |    3 
 b/include/asm-x86/smp_32.h                     |    5 
 b/include/asm-x86/smp_64.h                     |   12 
 b/include/asm-x86/topology.h                   |    9 
 include/asm-x86/apic.h                         |    2 
 include/asm-x86/apicdef.h                      |    6 
 include/asm-x86/mach-default/smpboot_hooks.h   |    5 
 include/asm-x86/nmi.h                          |    5 
 include/asm-x86/nmi_32.h                       |   61 
 include/asm-x86/smp.h                          |   29 
 include/asm-x86/smp_32.h                       |   16 
 include/asm-x86/smp_64.h                       |   15 
 59 files changed, 1974 insertions(+), 2752 deletions(-)