*/
if (tlb_type != hypervisor)
smp_synchronize_one_tick(cpu);
+ smp_fill_in_sib_core_maps();
cpu_map_rebuild();
sparc64_update_numa_mask(cpu);
}
int __cpu_disable(void)
{
int cpu = smp_processor_id();
- cpuinfo_sparc *c;
int i;
cpumask_var_t mask;
cpumask_clear_cpu(cpu, &per_cpu(cpu_sibling_map, i));
cpumask_clear(&per_cpu(cpu_sibling_map, cpu));
- c = &cpu_data(cpu);
-
- c->sock_id = -1;
- c->core_id = 0;
- c->proc_id = -1;
-
/*
* Offline before fixup.
* See irq_choose_cpu(), cpu_map_rebuild().
do {
hv_err = sun4v_cpu_stop(cpu);
if (hv_err == HV_EOK) {
- set_cpu_present(cpu, false);
+ set_cpu_online(cpu, false);
sun4v_free_mondo_queues(cpu);
break;
}
struct device *s = &c->dev;
int i;
+ BUG_ON(!c->hotpluggable);
+
unregister_mmu_stats(s);
for (i = 0; i < ARRAY_SIZE(cpu_core_attrs); i++)
device_remove_file(s, &cpu_core_attrs[i]);
for_each_possible_cpu(cpu) {
struct cpu *c = &per_cpu(cpu_devices, cpu);
+ c->hotpluggable = 1;
register_cpu(c, cpu);
if (cpu_online(cpu))
register_cpu_online(cpu);