On 09/06/17 at 12:25pm, Baoquan He wrote: > On 08/28/17 at 11:20am, Dou Liyang wrote: > > - /* > > * Should not be necessary because the MP table should list the boot > > * CPU too, but we do it for the sake of robustness anyway. > > */ > > @@ -1254,29 +1237,6 @@ static int __init smp_sanity_check(unsigned max_cpus) > > physid_set(hard_smp_processor_id(), phys_cpu_present_map); > > } > > preempt_enable(); > > - > > - /* > > - * If we couldn't find a local APIC, then get out of here now! > > - */ > > - if (APIC_INTEGRATED(boot_cpu_apic_version) && > > - !boot_cpu_has(X86_FEATURE_APIC)) { > > - if (!disable_apic) { > > - pr_err("BIOS bug, local APIC #%d not detected!...\n", > > - boot_cpu_physical_apicid); > > - pr_err("... forcing use of dummy APIC emulation (tell > > your hw vendor)\n"); > > - } > > - return SMP_NO_APIC; > > - } > > - > > - /* > > - * If SMP should be disabled, then really disable it! > > - */ > > - if (!max_cpus) { > > - pr_info("SMP mode deactivated\n"); > > - return SMP_FORCE_UP; > > - } > > - > > - return SMP_OK; > > } > > > > static void __init smp_cpu_index_default(void) > > @@ -1335,19 +1295,20 @@ void __init native_smp_prepare_cpus(unsigned int > > max_cpus) > > Please also cleanup the passed in max_cpus since it's not used here any > more. And up to the caller:
Oops, I just checked x86 code, other arch also have this hook. Please ingore this comment. > > static noinline void __init kernel_init_freeable(void) > { > ... > smp_prepare_cpus(setup_max_cpus); > ... > } > > > > > apic_intr_mode_init(); > > > > - switch (smp_sanity_check(max_cpus)) { > > - case SMP_NO_CONFIG: > > - disable_smp(); > > - return; > > - case SMP_NO_APIC: > > + smp_sanity_check(); > > + > > + switch (apic_intr_mode) { > > + case APIC_PIC: > > + case APIC_VIRTUAL_WIRE_NO_CONFIG: > > disable_smp(); > > return; > > - case SMP_FORCE_UP: > > + case APIC_SYMMETRIC_IO_NO_ROUTING: > > disable_smp(); > > /* Setup local timer */ > > x86_init.timers.setup_percpu_clockev(); > > return; > > - case SMP_OK: > > + case APIC_VIRTUAL_WIRE: > > + case APIC_SYMMETRIC_IO: > > break; > > } > > > > -- > > 2.5.5 > > > > > >