eBPF on powerpc

4 messages, 2 authors, 2020-11-24 · open the first message on its own page

eBPF on powerpc

From: Christophe Leroy <hidden>
Date: 2020-11-24 15:04:50

Hi Naveen,

Few years ago, you implemented eBPF on PPC64.

Is there any reason for implementing it for PPC64 only ? Is there something that makes it impossible to have eBPF for PPC32 as well ?

Thanks
Christophe

eBPF on powerpc

From: Naveen N. Rao <hidden>
Date: 2020-11-24 16:38:07

Hi Christophe,

Christophe Leroy wrote:
Hi Naveen,

Few years ago, you implemented eBPF on PPC64.

Is there any reason for implementing it for PPC64 only ?
I focused on ppc64 since eBPF is a 64-bit VM and it was more straight-forward to target.
Is there something that makes it impossible to have eBPF for PPC32 as well ?
No, I just wasn't sure if it would be performant enough to warrant it.  Since then however, there have been arm32 and riscv 32-bit JIT implementations and atleast the arm32 JIT seems to be showing ~50% better performance compared to the interpreter (*). So, it would be worthwhile to add support for ppc32.

Note that there might be a few instructions which would be difficult to support on 32-bit, but those can fallback to the interpreter, while allowing other programs to be JIT'ed.


- Naveen

(*) http://lkml.kernel.org/r/CAGXu5jLYunVCJGCfHPebKDaoQ71hdMGq4HhdDxTYpBQw_HXUYQ@mail.gmail.com
(*) http://lkml.kernel.org/r/b63fae4b-cb74-1928-b210-80914f3c8995@fb.com
(*) http://lkml.kernel.org/r/20200305050207.4159-1-luke.r.nels@gmail.com

Re: eBPF on powerpc

From: Christophe Leroy <hidden>
Date: 2020-11-24 18:47:41


Le 24/11/2020 à 17:35, Naveen N. Rao a écrit :
Hi Christophe,

Christophe Leroy wrote:
quoted
Hi Naveen,

Few years ago, you implemented eBPF on PPC64.

Is there any reason for implementing it for PPC64 only ?
I focused on ppc64 since eBPF is a 64-bit VM and it was more straight-forward to target.
quoted
Is there something that makes it impossible to have eBPF for PPC32 as well ?
No, I just wasn't sure if it would be performant enough to warrant it. Since then however, there have been arm32 and riscv 32-bit JIT implementations and atleast the arm32 JIT seems to be showing ~50% better performance compared to the interpreter (*). So, it would be worthwhile to add support for ppc32.
That's great.

I know close to nothing about eBPF. Is there any interesting documentation on it somewhere that would allow me to easily understand how it works and allow me to extend the 64 bit powerpc to 32 bits ?
Note that there might be a few instructions which would be difficult to support on 32-bit, but those can fallback to the interpreter, while allowing other programs to be JIT'ed.


- Naveen

(*) http://lkml.kernel.org/r/CAGXu5jLYunVCJGCfHPebKDaoQ71hdMGq4HhdDxTYpBQw_HXUYQ@mail.gmail.com
(*) http://lkml.kernel.org/r/b63fae4b-cb74-1928-b210-80914f3c8995@fb.com
(*) http://lkml.kernel.org/r/20200305050207.4159-1-luke.r.nels@gmail.com
Christophe

Re: eBPF on powerpc

From: Naveen N. Rao <hidden>
Date: 2020-11-24 19:56:29

Christophe Leroy wrote:

Le 24/11/2020 à 17:35, Naveen N. Rao a écrit :
quoted
Hi Christophe,

Christophe Leroy wrote:
quoted
Hi Naveen,

Few years ago, you implemented eBPF on PPC64.

Is there any reason for implementing it for PPC64 only ?
I focused on ppc64 since eBPF is a 64-bit VM and it was more straight-forward to target.
quoted
Is there something that makes it impossible to have eBPF for PPC32 as well ?
No, I just wasn't sure if it would be performant enough to warrant it. Since then however, there have been arm32 and riscv 32-bit JIT implementations and atleast the arm32 JIT seems to be showing ~50% better performance compared to the interpreter (*). So, it would be worthwhile to add support for ppc32.
That's great.

I know close to nothing about eBPF. Is there any interesting documentation on it somewhere that would allow me to easily understand how it works and allow me to extend the 64 bit powerpc to 32 bits ?
I don't think there was ever a formal spec written for the eBPF VM. Here are a few resources which should help, alongside the existing JIT implementations:
- BPF Kernel Internals:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/filter.rst#n604
- https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/bpf
- BPF and XDP Reference Guide: https://docs.cilium.io/en/stable/bpf/


- Naveen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help