• Quanyang Wang's avatar
    ARM: zynq: use physical cpuid in zynq_slcr_cpu_stop/start · 6c6b3f1f
    Quanyang Wang authored
    When kernel booting, it will create a cpuid map between the logical cpus
    and physical cpus. In a normal boot, the cpuid map is as below:
    
        Physical      Logical
            0    ==>     0
            1    ==>     1
    
    But in kdump, there is a condition that the crash happens at the
    physical cpu1, and the crash kernel will run at the physical cpu1 too,
    so the cpuid map in crash kernel is as below:
    
        Physical      Logical
            1    ==>     0
            0    ==>     1
    
    The functions zynq_slcr_cpu_stop/start is to stop/start the physical
    cpus, the parameter cpu should be the physical cpuid. So use
    cpu_logical_map to translate the logical cpuid to physical cpuid.
    Or else the logical cpu0(physical cpu1) will stop itself and
    the processor will hang.
    Signed-off-by: default avatarQuanyang Wang <quanyang.wang@windriver.com>
    Tested-by: default avatarMichal Simek <michal.simek@xilinx.com>
    Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
    6c6b3f1f
platsmp.c 3.9 KB