Christophe Leroy wrote:


Le 27/07/2021 à 08:55, Jordan Niethe a écrit :
Implement commit 40272035e1d0 ("powerpc/bpf: Reallocate BPF registers to
volatile registers when possible on PPC32") for PPC64.

When the BPF routine doesn't call any function, the non volatile
registers can be reallocated to volatile registers in order to avoid
having to save them/restore on the stack. To keep track of which
registers can be reallocated to make sure registers are set seen when
used.

Maybe you could try and do as on PPC32, try to use r0 as much as possible 
instead of TMP regs.
r0 needs to be used carefully because for some instructions (ex: addi, lwz, etc) r0 means 0 instead of register 0, but it would help freeing one more register in several cases.

Yes, but I think the utility of register re-mapping is debatable on ppc64 since we are using NVRs only for BPF NVRs. Unlike the savings seen with the test case shown in the commit description (and with other test programs in test_bpf), most real world BPF programs will be generated by llvm which will only use the NVRs if necessary. I also suspect that most BPF programs will end up making at least one helper call.

On ppc32 though, there is value in re-mapping registers, especially BPF_REG_AX and TMP_REG, and to a lesser extent, BPF_REG_5, since those are volatile BPF registers and can be remapped regardless of a helper call.


- Naveen

Reply via email to