mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/cpu: Rewrite initialize_cpu_data() for clarity
Without passing opinion on the behaviour of this function, it is deceptive to read (I've twice now mistaken it for resetting boot_cpu_data), and inefficient. Instead of having a 256 byte object on the stack and a double copy, copy boot_cpu_data directly, then reset parts of cpu_data[cpu] in place. Leave some comments behind explaining what's happening. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
cd68e5bc02
commit
1ff8c6e289
1 file changed
+6
-4
@@ -94,12 +94,14 @@ void *stack_base[NR_CPUS];
|
||||
|
||||
void initialize_cpu_data(unsigned int cpu)
|
||||
{
|
||||
struct cpuinfo_x86 c = boot_cpu_data;
|
||||
struct cpuinfo_x86 *c = &cpu_data[cpu];
|
||||
|
||||
/* Must not partially clear the BSP's collected data. */
|
||||
/* First, inherit from boot_cpu_data */
|
||||
*c = boot_cpu_data;
|
||||
|
||||
/* Second, reset most of it, except if we're the BSP at early boot. */
|
||||
if ( cpu || system_state > SYS_STATE_smp_boot )
|
||||
reset_cpuinfo(&c, true);
|
||||
cpu_data[cpu] = c;
|
||||
reset_cpuinfo(c, true);
|
||||
}
|
||||
|
||||
static bool smp_store_cpu_info(unsigned int id)
|
||||
|
||||