• Jeremy Fitzhardinge's avatar
    [PATCH] i386: Initialize the per-CPU data area · 62111195
    Jeremy Fitzhardinge authored
    When a CPU is brought up, a PDA and GDT are allocated for it.  The GDT's
    __KERNEL_PDA entry is pointed to the allocated PDA memory, so that all
    references using this segment descriptor will refer to the PDA.
    
    This patch rearranges CPU initialization a bit, so that the GDT/PDA are set up
    as early as possible in cpu_init().  Also for secondary CPUs, GDT+PDA are
    preallocated and initialized so all the secondary CPU needs to do is set up
    the ldt and load %gs.  This will be important once smp_processor_id() and
    current use the PDA.
    
    In all cases, the PDA is set up in head.S, before a CPU starts running C code,
    so the PDA is always available.
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Cc: Chuck Ebbert <76306.1226@compuserve.com>
    Cc: Zachary Amsden <zach@vmware.com>
    Cc: Jan Beulich <jbeulich@novell.com>
    Cc: Andi Kleen <ak@suse.de>
    Cc: James Bottomley <James.Bottomley@SteelEye.com>
    Cc: Matt Tolentino <matthew.e.tolentino@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    62111195
smpboot.c 36.9 KB