[PATCH] powerpc/bpf: Only update ldimm64 during extra pass when it is an address
Naveen N. Rao
naveen.n.rao at linux.ibm.com
Fri Nov 25 00:49:29 AEDT 2022
Christophe Leroy wrote:
>
>
> Le 24/11/2022 à 11:13, Naveen N. Rao a écrit :
>> Christophe Leroy wrote:
>>> ldimm64 is not only used for loading function addresses, and
>>
>> That's probably true today, but I worry that that can change upstream
>> and we may not notice at all.
>
> Not sure what you mean.
>
> Today POWERPC considers that ldimm64 is _always_ loading a function
> address whereas upstream BPF considers that ldimm64 is a function only
> when it is flagged BPF_PSEUDO_FUNC.
Not sure why you think we consider ldimm64 to always be loading a
function address. Perhaps it is due to the poorly chosen variable name
func_addr in bpf_jit_fixup_addresses(), or due to the fact that we
always update the JIT code for ldimm64. In any case, we simply overwrite
imm64 load instructions to ensure we are using the updated address.
>
> In what direction could that change in the future ?
>
> For me if they change that it becomes an API change.
More of an extension, which is exactly what we had when BPF_PSEUDO_FUNC
was introduced. Took us nearly a year before we noticed.
Because we do not do a full JIT during the extra pass today like other
architectures, we are the exception - there is always the risk of bpf
core changes breaking our JIT. So, I still think it is better if we do a
full JIT during extra pass.
- Naveen
More information about the Linuxppc-dev
mailing list