• Jiri Kosina's avatar
    percpu: allow pcpu_alloc() to be called with IRQs off · 403a91b1
    Jiri Kosina authored
    pcpu_alloc() and pcpu_extend_area_map() perform a series of
    spin_lock_irq()/spin_unlock_irq() calls, which make them unsafe
    with respect to being called from contexts which have IRQs off.
    
    This patch converts the code to perform save/restore of flags instead,
    making pcpu_alloc() (or __alloc_percpu() respectively) to be called
    from early kernel startup stage, where IRQs are off.
    
    This is needed for proper initialization of per-cpu rq_weight data from
    sched_init().
    
    tj: added comment explaining why irqsave/restore is used in alloc path.
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    Acked-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    403a91b1
percpu.c 61.2 KB