| From 45a80af1c8dcf82421e42a52e08a161be279b8bf Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 25 Jun 2020 14:14:06 +0100 |
| Subject: KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe |
| |
| From: David Brazdil <dbrazdil@google.com> |
| |
| [ Upstream commit b38b298aa4397e2dc74a89b4dd3eac9e59b64c96 ] |
| |
| __hyp_call_panic_nvhe contains inline assembly which did not declare |
| its dependency on the __hyp_panic_string symbol. |
| |
| The static-declared string has previously been kept alive because of a use in |
| __hyp_call_panic_vhe. Fix this in preparation for separating the source files |
| between VHE and nVHE when the two users land in two different compilation |
| units. The static variable otherwise gets dropped when compiling the nVHE |
| source file, causing an undefined symbol linker error later. |
| |
| Signed-off-by: David Brazdil <dbrazdil@google.com> |
| Signed-off-by: Marc Zyngier <maz@kernel.org> |
| Link: https://lore.kernel.org/r/20200625131420.71444-2-dbrazdil@google.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/kvm/hyp/switch.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c |
| index 115b0955715f3..ed7e3a288b4e5 100644 |
| --- a/arch/arm64/kvm/hyp/switch.c |
| +++ b/arch/arm64/kvm/hyp/switch.c |
| @@ -412,7 +412,7 @@ static void __hyp_text __hyp_call_panic_nvhe(u64 spsr, u64 elr, u64 par, |
| * making sure it is a kernel address and not a PC-relative |
| * reference. |
| */ |
| - asm volatile("ldr %0, =__hyp_panic_string" : "=r" (str_va)); |
| + asm volatile("ldr %0, =%1" : "=r" (str_va) : "S" (__hyp_panic_string)); |
| |
| __hyp_do_panic(str_va, |
| spsr, elr, |
| -- |
| 2.25.1 |
| |