parisc: Only list existing CPUs in cpu_possible_mask
authorHelge Deller <deller@gmx.de>
Fri, 1 Apr 2022 07:19:11 +0000 (09:19 +0200)
committerHelge Deller <deller@gmx.de>
Sun, 8 May 2022 18:01:11 +0000 (20:01 +0200)
The inventory knows which CPUs are in the system, so this bitmask should
be in cpu_possible_mask instead of the bitmask based on CONFIG_NR_CPUS.

Reset the cpu_possible_mask before scanning the system for CPUs, and
mark each existing CPU as possible during initialization of that CPU.

This avoids those warnings later on too:

 register_cpu_capacity_sysctl: too early to get CPU4 device!

Signed-off-by: Helge Deller <deller@gmx.de>
Noticed-by: John David Anglin <dave.anglin@bell.net>
arch/parisc/kernel/processor.c

index d986921..9e92b76 100644 (file)
@@ -171,6 +171,7 @@ static int __init processor_probe(struct parisc_device *dev)
        p->cpu_num = cpu_info.cpu_num;
        p->cpu_loc = cpu_info.cpu_loc;
 
+       set_cpu_possible(cpuid, true);
        store_cpu_topology(cpuid);
 
 #ifdef CONFIG_SMP
@@ -461,6 +462,13 @@ static struct parisc_driver cpu_driver __refdata = {
  */
 void __init processor_init(void)
 {
+       unsigned int cpu;
+
        reset_cpu_topology();
+
+       /* reset possible mask. We will mark those which are possible. */
+       for_each_possible_cpu(cpu)
+               set_cpu_possible(cpu, false);
+
        register_parisc_driver(&cpu_driver);
 }