Merge tag 'pm-5.15-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-2.6-microblaze.git] / arch / s390 / kernel / topology.c
index 26aa261..58f8291 100644 (file)
@@ -67,7 +67,7 @@ static void cpu_group_map(cpumask_t *dst, struct mask_info *info, unsigned int c
        static cpumask_t mask;
 
        cpumask_clear(&mask);
-       if (!cpu_online(cpu))
+       if (!cpumask_test_cpu(cpu, &cpu_setup_mask))
                goto out;
        cpumask_set_cpu(cpu, &mask);
        switch (topology_mode) {
@@ -88,7 +88,7 @@ static void cpu_group_map(cpumask_t *dst, struct mask_info *info, unsigned int c
        case TOPOLOGY_MODE_SINGLE:
                break;
        }
-       cpumask_and(&mask, &mask, cpu_online_mask);
+       cpumask_and(&mask, &mask, &cpu_setup_mask);
 out:
        cpumask_copy(dst, &mask);
 }
@@ -99,16 +99,16 @@ static void cpu_thread_map(cpumask_t *dst, unsigned int cpu)
        int i;
 
        cpumask_clear(&mask);
-       if (!cpu_online(cpu))
+       if (!cpumask_test_cpu(cpu, &cpu_setup_mask))
                goto out;
        cpumask_set_cpu(cpu, &mask);
        if (topology_mode != TOPOLOGY_MODE_HW)
                goto out;
        cpu -= cpu % (smp_cpu_mtid + 1);
-       for (i = 0; i <= smp_cpu_mtid; i++)
-               if (cpu_present(cpu + i))
+       for (i = 0; i <= smp_cpu_mtid; i++) {
+               if (cpumask_test_cpu(cpu + i, &cpu_setup_mask))
                        cpumask_set_cpu(cpu + i, &mask);
-       cpumask_and(&mask, &mask, cpu_online_mask);
+       }
 out:
        cpumask_copy(dst, &mask);
 }
@@ -406,7 +406,7 @@ static ssize_t dispatching_store(struct device *dev,
        if (val != 0 && val != 1)
                return -EINVAL;
        rc = 0;
-       get_online_cpus();
+       cpus_read_lock();
        mutex_lock(&smp_cpu_state_mutex);
        if (cpu_management == val)
                goto out;
@@ -417,7 +417,7 @@ static ssize_t dispatching_store(struct device *dev,
        topology_expect_change();
 out:
        mutex_unlock(&smp_cpu_state_mutex);
-       put_online_cpus();
+       cpus_read_unlock();
        return rc ? rc : count;
 }
 static DEVICE_ATTR_RW(dispatching);
@@ -569,6 +569,7 @@ void __init topology_init_early(void)
        alloc_masks(info, &book_info, 2);
        alloc_masks(info, &drawer_info, 3);
 out:
+       cpumask_set_cpu(0, &cpu_setup_mask);
        __arch_update_cpu_topology();
        __arch_update_dedicated_flag(NULL);
 }