Hi Greg and Sasha,
Please apply commit dbaee836d60a ("KVM: arm64: Don't use cbz/adr with external symbols") to linux-5.10.y, as a recent LLVM optimization around __cold functions [1] can cause hyp_panic() to be too far away from __guest_enter(), resulting in the same error that occurred with LTO (for the same reason):
ld.lld: error: arch/arm64/built-in.a(kvm/hyp/entry.o):(function __guest_enter: .text+0x120): relocation R_AARCH64_CONDBR19 out of range: 14339212 is not in [-1048576, 1048575]; references 'hyp_panic'
referenced by entry.S:88 (arch/arm64/kvm/hyp/vhe/../entry.S:88) defined in arch/arm64/built-in.a(kvm/hyp/vhe/switch.o)
ld.lld: error: arch/arm64/built-in.a(kvm/hyp/entry.o):(function __guest_enter: .text+0x134): relocation R_AARCH64_ADR_PREL_LO21 out of range: 14339192 is not in [-1048576, 1048575]; references 'hyp_panic'
referenced by entry.S:97 (arch/arm64/kvm/hyp/vhe/../entry.S:97) defined in arch/arm64/built-in.a(kvm/hyp/vhe/switch.o)
It applies cleanly with 'patch -p1' and I have verified that it fixes the issue.
[1]: https://github.com/llvm/llvm-project/commit/6b11573b8c5e3d36beee099dbe7347c2...
Cheers, Nathan
On Tue, Aug 27, 2024 at 03:21:59PM -0700, Nathan Chancellor wrote:
Hi Greg and Sasha,
Please apply commit dbaee836d60a ("KVM: arm64: Don't use cbz/adr with external symbols") to linux-5.10.y, as a recent LLVM optimization around __cold functions [1] can cause hyp_panic() to be too far away from __guest_enter(), resulting in the same error that occurred with LTO (for the same reason):
ld.lld: error: arch/arm64/built-in.a(kvm/hyp/entry.o):(function __guest_enter: .text+0x120): relocation R_AARCH64_CONDBR19 out of range: 14339212 is not in [-1048576, 1048575]; references 'hyp_panic'
referenced by entry.S:88 (arch/arm64/kvm/hyp/vhe/../entry.S:88) defined in arch/arm64/built-in.a(kvm/hyp/vhe/switch.o)
ld.lld: error: arch/arm64/built-in.a(kvm/hyp/entry.o):(function __guest_enter: .text+0x134): relocation R_AARCH64_ADR_PREL_LO21 out of range: 14339192 is not in [-1048576, 1048575]; references 'hyp_panic'
referenced by entry.S:97 (arch/arm64/kvm/hyp/vhe/../entry.S:97) defined in arch/arm64/built-in.a(kvm/hyp/vhe/switch.o)
It applies cleanly with 'patch -p1' and I have verified that it fixes the issue.
Now queued up, thanks. greg k-h
linux-stable-mirror@lists.linaro.org