Skip to content
  • Matt Redfearn's avatar
    MIPS: PCI: Fix smp_processor_id() in preemptible · 73530266
    Matt Redfearn authored
    Commit 1c3c5eab ("sched/core: Enable might_sleep() and
    smp_processor_id() checks early") enables checks for might_sleep() and
    smp_processor_id() being used in preemptible code earlier in the boot
    than before. This results in a new BUG from
    pcibios_set_cache_line_size().
    
    BUG: using smp_processor_id() in preemptible [00000000] code:
    swapper/0/1 caller is pcibios_set_cache_line_size+0x10/0x70
    CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.13.0-rc1-00007-g3ce3e4ba4275 #615
    Stack: 0000000000000000 ffffffff81189694 0000000000000000 ffffffff81822318
           000000000000004e 0000000000000001 800000000e20bd08 20c49ba5e3540000
           0000000000000000 0000000000000000 ffffffff818d0000 0000000000000000
           0000000000000000 ffffffff81189328 ffffffff818ce692 0000000000000000
           0000000000000000 ffffffff81189bc8 ffffffff818d0000 0000000000000000
           ffffffff81828907 ffffffff81769970 800000020ec78d80 ffffffff818c7b48
           0000000000000001 0000000000000001 ffffffff818652b0 ffffffff81896268
           ffffffff818c0000 800000020ec7fb40 800000020ec7fc58 ffffffff81684cac
           0000000000000000 ffffffff8118ab50 0000000000000030 ffffffff81769970
           0000000000000001 ffffffff81122a58 0000000000000000 0000000000000000 ...
    Call Trace:
    [<ffffffff81122a58>] show_stack+0x90/0xb0
    [<ffffffff81684cac>] dump_stack+0xac/0xf0
    [<ffffffff813f7050>] check_preemption_disabled+0x120/0x128
    [<ffffffff818855e8>] pcibios_set_cache_line_size+0x10/0x70
    [<ffffffff81100578>] do_one_initcall+0x48/0x140
    [<ffffffff81865dc4>] kernel_init_freeable+0x194/0x24c
    [<ffffffff8169c534>] kernel_init+0x14/0x118
    [<ffffffff8111ca84>] ret_from_kernel_thread+0x14/0x1c
    
    Fix this by using the cpu_*cache_line_size() macros instead. These
    macros are the "proper" way to determine the CPU cache sizes.
    This makes use of the newly added cpu_tcache_line_size.
    
    Fixes: 1c3c5eab
    
     ("sched/core: Enable might_sleep() and smp_processor_id() checks early")
    Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
    Suggested-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Reviewed-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    73530266