This is a code optimization. If checking the topology package map of apicid and cpu is failure, it will stop generating the processor info for that apicid and the disabled_cpus will plus one. However, the num-processors has already been added one above. That may cause the number of processors incorrect.
Just put the num_processors++ code in the more suitable position. it makes sure that the num-processors will not conflict with the disabled_cpus. Signed-off-by: Dou Liyang <douly.f...@cn.fujitsu.com> --- arch/x86/kernel/apic/apic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 50c95af..f3e9b2d 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -2093,7 +2093,6 @@ int generic_processor_info(int apicid, int version) return -EINVAL; } - num_processors++; if (apicid == boot_cpu_physical_apicid) { /* * x86_bios_cpu_apicid is required to have processors listed @@ -2116,10 +2115,13 @@ int generic_processor_info(int apicid, int version) pr_warning("APIC: Package limit reached. Processor %d/0x%x ignored.\n", thiscpu, apicid); + disabled_cpus++; return -ENOSPC; } + num_processors++; + /* * Validate version */ -- 2.5.5