• Ming Lei's avatar
    ARM: 7669/1: keep __my_cpu_offset consistent with generic one · 9394c1c6
    Ming Lei authored
    Commit 14318efb(ARM: 7587/1: implement optimized percpu variable access)
    introduces arm's __my_cpu_offset to optimize percpu vaiable access,
    which really works well on hackbench, but will cause __my_cpu_offset
    to return garbage value before it is initialized in cpu_init() called
    by setup_arch, so accessing percpu variable before setup_arch may cause
    kernel hang. But generic __my_cpu_offset always returns zero before
    percpu area is brought up, and won't hang kernel.
    
    So the patch tries to clear __my_cpu_offset on boot CPU early
    to avoid boot hang.
    
    At least now percpu variable is accessed by lockdep before
    setup_arch(), and enabling CONFIG_LOCK_STAT or CONFIG_DEBUG_LOCKDEP
    can trigger kernel hang.
    Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    9394c1c6
setup.c 22.1 KB