On Wed, 10 Jul 2019, Pingfan Liu wrote:
>  
> +static inline bool maxcpus_allowed(unsigned int cpu)
> +{
> +     /* maxcpus only takes effect during system bootup */
> +     if (smp_boot_done)
> +             return true;
> +     if (num_online_cpus() < setup_max_cpus)
> +             return true;
> +     /*
> +      * maxcpus should allow cpu to set CR4.MCE asap, otherwise the set may
> +      * be deferred indefinitely.
> +      */
> +     if (!per_cpu(cpuhp_state, cpu).booted_once)
> +             return true;

As this is a x86 only issue, you cannot inflict this magic on every
architecture.

Aside of that this does not solve the problem at all because smp_init()
still does:

        for_each_present_cpu(cpu) {
                if (num_online_cpus() >= setup_max_cpus)
                        break;
                if (!cpu_online(cpu))
                        cpu_up(cpu);
        }

So the remaining CPUs are not onlined at all.

Thanks,

        tglx

Reply via email to