x86, uv: fix ordering of calls to uv_system_init & uv_cpu_init
Fix problem caused by reordering of the calls to uv_cpu_init() & uv_system_init. Originally, uv_cpu_init() was called AFTER uv_system_init. This order was recently broken as a side-effect of other patches. With this patch, initialization of cpu 0 is now done by the system_init call. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
5ffa4eb222
commit
8da077d6f3
@@ -356,7 +356,22 @@ static __init void uv_rtc_init(void)
|
|||||||
sn_rtc_cycles_per_second = ticks_per_sec;
|
sn_rtc_cycles_per_second = ticks_per_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool uv_system_inited;
|
/*
|
||||||
|
* Called on each cpu to initialize the per_cpu UV data area.
|
||||||
|
* ZZZ hotplug not supported yet
|
||||||
|
*/
|
||||||
|
void __cpuinit uv_cpu_init(void)
|
||||||
|
{
|
||||||
|
/* CPU 0 initilization will be done via uv_system_init. */
|
||||||
|
if (!uv_blade_info)
|
||||||
|
return;
|
||||||
|
|
||||||
|
uv_blade_info[uv_numa_blade_id()].nr_online_cpus++;
|
||||||
|
|
||||||
|
if (get_uv_system_type() == UV_NON_UNIQUE_APIC)
|
||||||
|
set_x2apic_extra_bits(uv_hub_info->pnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void __init uv_system_init(void)
|
void __init uv_system_init(void)
|
||||||
{
|
{
|
||||||
@@ -448,21 +463,6 @@ void __init uv_system_init(void)
|
|||||||
map_mmr_high(max_pnode);
|
map_mmr_high(max_pnode);
|
||||||
map_config_high(max_pnode);
|
map_config_high(max_pnode);
|
||||||
map_mmioh_high(max_pnode);
|
map_mmioh_high(max_pnode);
|
||||||
uv_system_inited = true;
|
|
||||||
|
uv_cpu_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Called on each cpu to initialize the per_cpu UV data area.
|
|
||||||
* ZZZ hotplug not supported yet
|
|
||||||
*/
|
|
||||||
void __cpuinit uv_cpu_init(void)
|
|
||||||
{
|
|
||||||
BUG_ON(!uv_system_inited);
|
|
||||||
|
|
||||||
uv_blade_info[uv_numa_blade_id()].nr_online_cpus++;
|
|
||||||
|
|
||||||
if (get_uv_system_type() == UV_NON_UNIQUE_APIC)
|
|
||||||
set_x2apic_extra_bits(uv_hub_info->pnode);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user