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
> > 
> > 
> > 

Reply via email to