• Ingo Molnar's avatar
    x86/fpu: Split fpu__cpu_init() into early-boot and cpu-boot parts · e35f6f14
    Ingo Molnar authored
    There are two kinds of FPU initialization sequences necessary to bring FPU
    functionality up: once per system bootup activities, such as detection,
    feature initialization, etc. of attributes that are shared by all CPUs
    in the system - and per cpu initialization sequences run when a CPU is
    brought online (either during bootup or during CPU hotplug onlining),
    such as CR0/CR4 register setting, etc.
    
    The FPU code is mixing these roles together, with no clear distinction.
    
    Start sorting this out by splitting the main FPU detection routine
    (fpu__cpu_init()) into two parts: fpu__init_system() for
    one per system init activities, and fpu__init_cpu() for the
    per CPU onlining init activities.
    
    Note that xstate_init() is called from both variants for the time being,
    because it has a dual nature as well. We'll fix that in upcoming patches.
    
    Just do the split and call it as we used to before, don't introduce any
    change in initialization behavior yet, beyond duplicate (and harmless)
    fpu__init_cpu() and xstate_init() calls - which we'll fix in later
    patches.
    Reviewed-by: default avatarBorislav Petkov <bp@alien8.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    e35f6f14
init.c 4.06 KB