Messages in this thread | | | Date | Thu, 24 Nov 2022 19:19:29 +0530 | From | "Naveen N. Rao" <> | Subject | Re: [PATCH] powerpc/bpf: Only update ldimm64 during extra pass when it is an address |
| |
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
| |