| From c35293d54b544af87c541538966fd7335725db24 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 10 Dec 2018 18:07:33 +0000 |
| Subject: arm64: smp: Handle errors reported by the firmware |
| |
| From: Suzuki K Poulose <Suzuki.Poulose@arm.com> |
| |
| [ Upstream commit f357b3a7e17af7736d67d8267edc1ed3d1dd9391 ] |
| |
| The __cpu_up() routine ignores the errors reported by the firmware |
| for a CPU bringup operation and looks for the error status set by the |
| booting CPU. If the CPU never entered the kernel, we could end up |
| in assuming stale error status, which otherwise would have been |
| set/cleared appropriately by the booting CPU. |
| |
| Reported-by: Steve Capper <steve.capper@arm.com> |
| Cc: Will Deacon <will.deacon@arm.com> |
| Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> |
| Signed-off-by: Will Deacon <will.deacon@arm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/kernel/smp.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c |
| index f0c41524b052f..b2d6de9f6f4fb 100644 |
| --- a/arch/arm64/kernel/smp.c |
| +++ b/arch/arm64/kernel/smp.c |
| @@ -173,6 +173,7 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle) |
| } |
| } else { |
| pr_err("CPU%u: failed to boot: %d\n", cpu, ret); |
| + return ret; |
| } |
| |
| secondary_data.stack = NULL; |
| -- |
| 2.20.1 |
| |