Re: [PATCH v1 06/24] kvm: arm64: Support per_cpu_ptr in nVHE hyp code
From: Marc Zyngier <maz@kernel.org>
Date: 2020-11-11 12:46:38
Also in:
kvmarm, lkml
On 2020-11-11 12:32, David Brazdil wrote:
quoted
quoted
+ + cpu_base_array = kern_hyp_va(&kvm_arm_hyp_percpu_base[0]);There is no guarantee that this will not generate a PC relative addressing, resulting in kern_hyp_va() being applied twice. Consider using hyp_symbol_addr() instead, which always does the right by forcing a PC relative addressing and not subsequently mangling the address.quoted
+ this_cpu_base = kern_hyp_va(cpu_base_array[cpu]); + return this_cpu_base - (unsigned long)&__per_cpu_start;And this is the opposite case: if the compiler generates an absolute address, you're toast. Yes, this is just as unlikely, but hey... Same remedy should apply.Good point, and I'll probably keep forgetting about this in the future. Now that all .hyp.text is only executed under hyp page tables, should we start thinking about fixing up the relocations?
Why not, if you can deal with the hypervisor text being mapped at a
random
location, and make sure that the kernel doesn't process the relocations
for you. This would certainly save us a lot of runtime offsetting (which
I'm adding to in a separate series).
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel