tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 082fce125e57cff60687181c97f3a8ee620c38f5 commit: 6f9c07be9d020489326098801f0661f754c7c865 [7417/12775] lib/cpumask: add FORCE_NR_CPUS config option config: x86_64-randconfig-m001 compiler: gcc-11 (Debian 11.3.0-5) 11.3.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot smatch warnings: arch/x86/kernel/apic/apic.c:2437 generic_processor_info() warn: always true condition '(num_processors >= (1) - 1) => (0-u32max >= 0)' vim +2437 arch/x86/kernel/apic/apic.c 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2395 2b85b3d22920db arch/x86/kernel/apic/apic.c Dou Liyang 2017-03-03 2396 int generic_processor_info(int apicid, int version) be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2397 { 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2398 int cpu, max = nr_cpu_ids; 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2399 bool boot_cpu_detected = physid_isset(boot_cpu_physical_apicid, 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2400 phys_cpu_present_map); 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2401 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2402 /* 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2403 * boot_cpu_physical_apicid is designed to have the apicid 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2404 * returned by read_apic_id(), i.e, the apicid of the 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2405 * currently booting-up processor. However, on some platforms, 5b4d1dbc24bb6f arch/x86/kernel/apic/apic.c H. Peter Anvin 2014-01-15 2406 * it is temporarily modified by the apicid reported as BSP 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2407 * through MP table. Concretely: 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2408 * 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2409 * - arch/x86/kernel/mpparse.c: MP_processor_info() 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2410 * - arch/x86/mm/amdtopology.c: amd_numa_init() 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2411 * 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2412 * This function is executed with the modified 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2413 * boot_cpu_physical_apicid. So, disabled_cpu_apicid kernel 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2414 * parameter doesn't work to disable APs on kdump 2nd kernel. 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2415 * 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2416 * Since fixing handling of boot_cpu_physical_apicid requires 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2417 * another discussion and tests on each platform, we leave it 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2418 * for now and here we use read_apic_id() directly in this e2329b4252f373 arch/x86/kernel/apic/apic.c Dou Liyang 2017-09-11 2419 * function, generic_processor_info(). 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2420 */ 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2421 if (disabled_cpu_apicid != BAD_APICID && 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2422 disabled_cpu_apicid != read_apic_id() && 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2423 disabled_cpu_apicid == apicid) { 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2424 int thiscpu = num_processors + disabled_cpus; 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2425 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2426 pr_warn("APIC: Disabling requested cpu." 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2427 " Processor %d/0x%x ignored.\n", thiscpu, apicid); 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2428 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2429 disabled_cpus++; 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2430 return -ENODEV; 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2431 } 151e0c7de61631 arch/x86/kernel/apic/apic.c HATAYAMA Daisuke 2014-01-15 2432 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2433 /* 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2434 * If boot cpu has not been detected yet, then only allow upto 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2435 * nr_cpu_ids - 1 processors and keep one slot free for boot cpu 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2436 */ 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 @2437 if (!boot_cpu_detected && num_processors >= nr_cpu_ids - 1 && 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2438 apicid != boot_cpu_physical_apicid) { 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2439 int thiscpu = max + disabled_cpus - 1; 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2440 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2441 pr_warn("APIC: NR_CPUS/possible_cpus limit of %i almost" 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2442 " reached. Keeping one slot for boot cpu." 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2443 " Processor %d/0x%x ignored.\n", max, thiscpu, apicid); 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2444 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2445 disabled_cpus++; 7e1f85f96def94 arch/x86/kernel/apic/apic.c Jiang Liu 2013-09-02 2446 return -ENODEV; 14cb6dcf0a023f arch/x86/kernel/apic/apic.c Vivek Goyal 2011-07-08 2447 } be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2448 3b11ce7f542e41 arch/x86/kernel/apic.c Mike Travis 2008-12-17 2449 if (num_processors >= nr_cpu_ids) { 3b11ce7f542e41 arch/x86/kernel/apic.c Mike Travis 2008-12-17 2450 int thiscpu = max + disabled_cpus; 3b11ce7f542e41 arch/x86/kernel/apic.c Mike Travis 2008-12-17 2451 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2452 pr_warn("APIC: NR_CPUS/possible_cpus limit of %i reached. " 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2453 "Processor %d/0x%x ignored.\n", max, thiscpu, apicid); 3b11ce7f542e41 arch/x86/kernel/apic.c Mike Travis 2008-12-17 2454 3b11ce7f542e41 arch/x86/kernel/apic.c Mike Travis 2008-12-17 2455 disabled_cpus++; 7e1f85f96def94 arch/x86/kernel/apic/apic.c Jiang Liu 2013-09-02 2456 return -EINVAL; be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2457 } be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2458 be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2459 if (apicid == boot_cpu_physical_apicid) { be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2460 /* be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2461 * x86_bios_cpu_apicid is required to have processors listed be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2462 * in same order as logical cpu numbers. Hence the first be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2463 * entry is BSP, and so on. e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2464 * boot_cpu_init() already hold bit 0 in cpu_present_mask e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2465 * for BSP. be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2466 */ be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2467 cpu = 0; 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2468 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2469 /* Logical cpuid 0 is reserved for BSP. */ 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2470 cpuid_to_apicid[0] = apicid; 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2471 } else { 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2472 cpu = allocate_logical_cpuid(apicid); 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2473 if (cpu < 0) { 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2474 disabled_cpus++; 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2475 return -EINVAL; 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2476 } 8f54969dc8d670 arch/x86/kernel/apic/apic.c Gu Zheng 2016-08-25 2477 } e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2478 e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2479 /* e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2480 * Validate version e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2481 */ e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2482 if (version == 0x0) { 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2483 pr_warn("BIOS bug: APIC version is 0 for CPU %d/0x%x, fixing up to 0x10\n", e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2484 cpu, apicid); e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2485 version = 0x10; be8a5685e4cdb9 arch/x86/kernel/apic_64.c Alexey Starikovskiy 2008-03-27 2486 } e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2487 cff9ab2b291e64 arch/x86/kernel/apic/apic.c Denys Vlasenko 2016-09-13 2488 if (version != boot_cpu_apic_version) { 8d3bcc441e6cdd arch/x86/kernel/apic/apic.c Kefeng Wang 2019-10-18 2489 pr_warn("BIOS bug: APIC version mismatch, boot CPU: %x, CPU %d: version %x\n", cff9ab2b291e64 arch/x86/kernel/apic/apic.c Denys Vlasenko 2016-09-13 2490 boot_cpu_apic_version, cpu, version); e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2491 } e5fea868e6c043 arch/x86/kernel/apic/apic.c Yinghai Lu 2011-02-08 2492 e0da33646826b6 arch/x86/kernel/apic_64.c Yinghai Lu 2008-06-08 2493 if (apicid > max_physical_apicid) e0da33646826b6 arch/x86/kernel/apic_64.c Yinghai Lu 2008-06-08 2494 max_physical_apicid = apicid; e0da33646826b6 arch/x86/kernel/apic_64.c Yinghai Lu 2008-06-08 2495 :::::: The code at line 2437 was first introduced by commit :::::: 14cb6dcf0a023f5977461c94d8d5a163c937979b x86, boot: Wait for boot cpu to show up if nr_cpus limit is about to hit :::::: TO: Vivek Goyal :::::: CC: H. Peter Anvin -- 0-DAY CI Kernel Test Service https://01.org/lkp