Skip to content
  • Lorenzo Pieralisi's avatar
    arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot · c1e4659b
    Lorenzo Pieralisi authored
    
    
    When secondary cpus are booted through the ACPI parking protocol, the
    booted cpu should check that FW has correctly cleared its mailbox entry
    point value to make sure the boot process was correctly executed.
    The entry point check is carried in the cpu_ops->cpu_postboot method, that
    is executed by secondary cpus when entering the kernel with irqs disabled.
    
    The ACPI parking protocol cpu_ops maps/unmaps the mailboxes on the
    primary CPU to trigger secondary boot in the cpu_ops->cpu_boot method
    and on secondary processors to carry out FW checks on the booted CPU
    to verify the boot protocol was successfully executed in the
    cpu_ops->cpu_postboot method.
    
    Therefore, the cpu_ops->cpu_postboot method is forced to ioremap/unmap the
    mailboxes, which is wrong in that ioremap cannot be safely be carried out
    with irqs disabled.
    
    To fix this issue, this patch reshuffles the code so that the mailboxes
    are still mapped after the boot processor executes the cpu_ops->cpu_boot
    method for a given cpu, and the VA at which a mailbox is mapped for a given
    cpu is stashed in the per-cpu data struct so that secondary cpus can
    retrieve them in the cpu_ops->cpu_postboot and complete the required
    FW checks.
    
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reported-by: default avatarItaru Kitayama <itaru.kitayama@riken.jp>
    Tested-by: default avatarLoc Ho <lho@apm.com>
    Tested-by: default avatarItaru Kitayama <itaru.kitayama@riken.jp>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Hanjun Guo <hanjun.guo@linaro.org>
    Cc: Loc Ho <lho@apm.com>
    Cc: Itaru Kitayama <itaru.kitayama@riken.jp>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mark Salter <msalter@redhat.com>
    Cc: Al Stone <ahs3@redhat.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    c1e4659b