2022-06-30 21:37:58

by Daniel Borkmann

[permalink] [raw]
Subject: Re: [PATCH bpf-next v6 0/4] bpf trampoline for arm64

Hey Mark,

On 6/25/22 6:12 PM, Xu Kuohai wrote:
> This patchset introduces bpf trampoline on arm64. A bpf trampoline converts
> native calling convention to bpf calling convention and is used to implement
> various bpf features, such as fentry, fexit, fmod_ret and struct_ops.
>
> The trampoline introduced does essentially the same thing as the bpf
> trampoline does on x86.
>
> Tested on raspberry pi 4b and qemu:
>
> #18 /1 bpf_tcp_ca/dctcp:OK
> #18 /2 bpf_tcp_ca/cubic:OK
> #18 /3 bpf_tcp_ca/invalid_license:OK
> #18 /4 bpf_tcp_ca/dctcp_fallback:OK
> #18 /5 bpf_tcp_ca/rel_setsockopt:OK
> #18 bpf_tcp_ca:OK
> #51 /1 dummy_st_ops/dummy_st_ops_attach:OK
> #51 /2 dummy_st_ops/dummy_init_ret_value:OK
> #51 /3 dummy_st_ops/dummy_init_ptr_arg:OK
> #51 /4 dummy_st_ops/dummy_multiple_args:OK
> #51 dummy_st_ops:OK
> #57 /1 fexit_bpf2bpf/target_no_callees:OK
> #57 /2 fexit_bpf2bpf/target_yes_callees:OK
> #57 /3 fexit_bpf2bpf/func_replace:OK
> #57 /4 fexit_bpf2bpf/func_replace_verify:OK
> #57 /5 fexit_bpf2bpf/func_sockmap_update:OK
> #57 /6 fexit_bpf2bpf/func_replace_return_code:OK
> #57 /7 fexit_bpf2bpf/func_map_prog_compatibility:OK
> #57 /8 fexit_bpf2bpf/func_replace_multi:OK
> #57 /9 fexit_bpf2bpf/fmod_ret_freplace:OK
> #57 fexit_bpf2bpf:OK
> #237 xdp_bpf2bpf:OK
>
> v6:
> - Since Mark is refactoring arm64 ftrace to support long jump and reduce the
> ftrace trampoline overhead, it's not clear how we'll attach bpf trampoline
> to regular kernel functions, so remove ftrace related patches for now.
> - Add long jump support for attaching bpf trampoline to bpf prog, since bpf
> trampoline and bpf prog are allocated via vmalloc, there is chance the
> distance exceeds the max branch range.
> - Collect ACK/Review-by, not sure if the ACK and Review-bys for bpf_arch_text_poke()
> should be kept, since the changes to it is not trivial
> - Update some commit messages and comments

Given you've been taking a look and had objections in v5, would be great if you
can find some cycles for this v6.

Thanks a lot,
Daniel


2022-07-05 16:54:14

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH bpf-next v6 0/4] bpf trampoline for arm64

Hi Daniel,

On Thu, Jun 30, 2022 at 11:12:54PM +0200, Daniel Borkmann wrote:
> On 6/25/22 6:12 PM, Xu Kuohai wrote:
> > This patchset introduces bpf trampoline on arm64. A bpf trampoline converts
> > native calling convention to bpf calling convention and is used to implement
> > various bpf features, such as fentry, fexit, fmod_ret and struct_ops.
> >
> > The trampoline introduced does essentially the same thing as the bpf
> > trampoline does on x86.
> >
> > Tested on raspberry pi 4b and qemu:
> >
> > #18 /1 bpf_tcp_ca/dctcp:OK
> > #18 /2 bpf_tcp_ca/cubic:OK
> > #18 /3 bpf_tcp_ca/invalid_license:OK
> > #18 /4 bpf_tcp_ca/dctcp_fallback:OK
> > #18 /5 bpf_tcp_ca/rel_setsockopt:OK
> > #18 bpf_tcp_ca:OK
> > #51 /1 dummy_st_ops/dummy_st_ops_attach:OK
> > #51 /2 dummy_st_ops/dummy_init_ret_value:OK
> > #51 /3 dummy_st_ops/dummy_init_ptr_arg:OK
> > #51 /4 dummy_st_ops/dummy_multiple_args:OK
> > #51 dummy_st_ops:OK
> > #57 /1 fexit_bpf2bpf/target_no_callees:OK
> > #57 /2 fexit_bpf2bpf/target_yes_callees:OK
> > #57 /3 fexit_bpf2bpf/func_replace:OK
> > #57 /4 fexit_bpf2bpf/func_replace_verify:OK
> > #57 /5 fexit_bpf2bpf/func_sockmap_update:OK
> > #57 /6 fexit_bpf2bpf/func_replace_return_code:OK
> > #57 /7 fexit_bpf2bpf/func_map_prog_compatibility:OK
> > #57 /8 fexit_bpf2bpf/func_replace_multi:OK
> > #57 /9 fexit_bpf2bpf/fmod_ret_freplace:OK
> > #57 fexit_bpf2bpf:OK
> > #237 xdp_bpf2bpf:OK
> >
> > v6:
> > - Since Mark is refactoring arm64 ftrace to support long jump and reduce the
> > ftrace trampoline overhead, it's not clear how we'll attach bpf trampoline
> > to regular kernel functions, so remove ftrace related patches for now.
> > - Add long jump support for attaching bpf trampoline to bpf prog, since bpf
> > trampoline and bpf prog are allocated via vmalloc, there is chance the
> > distance exceeds the max branch range.
> > - Collect ACK/Review-by, not sure if the ACK and Review-bys for bpf_arch_text_poke()
> > should be kept, since the changes to it is not trivial
> > - Update some commit messages and comments
>
> Given you've been taking a look and had objections in v5, would be great if you
> can find some cycles for this v6.

Mark's out at the moment, so I wouldn't hold this series up pending his ack.
However, I agree that it would be good if _somebody_ from the Arm side can
give it the once over, so I've added Jean-Philippe to cc in case he has time
for a quick review. KP said he would also have a look, as he is interested
in this series landing.

Failing that, I'll try to look this week, but I'm off next week and I don't
want this to miss the merge window on my account.

Cheers,

Will

2022-07-05 19:07:49

by KP Singh

[permalink] [raw]
Subject: Re: [PATCH bpf-next v6 0/4] bpf trampoline for arm64

On Tue, Jul 5, 2022 at 6:00 PM Will Deacon <[email protected]> wrote:
>
> Hi Daniel,
>
> On Thu, Jun 30, 2022 at 11:12:54PM +0200, Daniel Borkmann wrote:
> > On 6/25/22 6:12 PM, Xu Kuohai wrote:
> > > This patchset introduces bpf trampoline on arm64. A bpf trampoline converts
> > > native calling convention to bpf calling convention and is used to implement
> > > various bpf features, such as fentry, fexit, fmod_ret and struct_ops.
> > >
> > > The trampoline introduced does essentially the same thing as the bpf
> > > trampoline does on x86.
> > >
> > > Tested on raspberry pi 4b and qemu:
> > >
> > > #18 /1 bpf_tcp_ca/dctcp:OK
> > > #18 /2 bpf_tcp_ca/cubic:OK
> > > #18 /3 bpf_tcp_ca/invalid_license:OK
> > > #18 /4 bpf_tcp_ca/dctcp_fallback:OK
> > > #18 /5 bpf_tcp_ca/rel_setsockopt:OK
> > > #18 bpf_tcp_ca:OK
> > > #51 /1 dummy_st_ops/dummy_st_ops_attach:OK
> > > #51 /2 dummy_st_ops/dummy_init_ret_value:OK
> > > #51 /3 dummy_st_ops/dummy_init_ptr_arg:OK
> > > #51 /4 dummy_st_ops/dummy_multiple_args:OK
> > > #51 dummy_st_ops:OK
> > > #57 /1 fexit_bpf2bpf/target_no_callees:OK
> > > #57 /2 fexit_bpf2bpf/target_yes_callees:OK
> > > #57 /3 fexit_bpf2bpf/func_replace:OK
> > > #57 /4 fexit_bpf2bpf/func_replace_verify:OK
> > > #57 /5 fexit_bpf2bpf/func_sockmap_update:OK
> > > #57 /6 fexit_bpf2bpf/func_replace_return_code:OK
> > > #57 /7 fexit_bpf2bpf/func_map_prog_compatibility:OK
> > > #57 /8 fexit_bpf2bpf/func_replace_multi:OK
> > > #57 /9 fexit_bpf2bpf/fmod_ret_freplace:OK
> > > #57 fexit_bpf2bpf:OK
> > > #237 xdp_bpf2bpf:OK
> > >
> > > v6:
> > > - Since Mark is refactoring arm64 ftrace to support long jump and reduce the
> > > ftrace trampoline overhead, it's not clear how we'll attach bpf trampoline
> > > to regular kernel functions, so remove ftrace related patches for now.
> > > - Add long jump support for attaching bpf trampoline to bpf prog, since bpf
> > > trampoline and bpf prog are allocated via vmalloc, there is chance the
> > > distance exceeds the max branch range.
> > > - Collect ACK/Review-by, not sure if the ACK and Review-bys for bpf_arch_text_poke()
> > > should be kept, since the changes to it is not trivial

+1 I need to give it another pass.

> > > - Update some commit messages and comments
> >
> > Given you've been taking a look and had objections in v5, would be great if you
> > can find some cycles for this v6.
>
> Mark's out at the moment, so I wouldn't hold this series up pending his ack.
> However, I agree that it would be good if _somebody_ from the Arm side can
> give it the once over, so I've added Jean-Philippe to cc in case he has time

Makes sense, Jean-Philippe had worked on BPF trampolines for ARM.

> for a quick review. KP said he would also have a look, as he is interested

Thank you so much Will, I will give this another pass before the end
of the week.

> in this series landing.
>
> Failing that, I'll try to look this week, but I'm off next week and I don't
> want this to miss the merge window on my account.

Thanks for being considerate. Much appreciated.

- KP

>
> Cheers,
>
> Will

2022-07-06 16:11:52

by Jean-Philippe Brucker

[permalink] [raw]
Subject: Re: [PATCH bpf-next v6 0/4] bpf trampoline for arm64

On Tue, Jul 05, 2022 at 05:00:46PM +0100, Will Deacon wrote:
> > Given you've been taking a look and had objections in v5, would be great if
> you
> > can find some cycles for this v6.
>
> Mark's out at the moment, so I wouldn't hold this series up pending his ack.
> However, I agree that it would be good if _somebody_ from the Arm side can
> give it the once over, so I've added Jean-Philippe to cc in case he has time
> for a quick review.

I'll take a look. Sorry for not catching this earlier, all versions of the
series somehow ended up in my spams :/

Thanks,
Jean

> KP said he would also have a look, as he is interested
> in this series landing.
>
> Failing that, I'll try to look this week, but I'm off next week and I don't
> want this to miss the merge window on my account.
>
> Cheers,
>
> Will

2022-07-06 16:54:50

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH bpf-next v6 0/4] bpf trampoline for arm64

On Wed, Jul 06, 2022 at 05:08:49PM +0100, Jean-Philippe Brucker wrote:
> On Tue, Jul 05, 2022 at 05:00:46PM +0100, Will Deacon wrote:
> > > Given you've been taking a look and had objections in v5, would be great if
> > you
> > > can find some cycles for this v6.
> >
> > Mark's out at the moment, so I wouldn't hold this series up pending his ack.
> > However, I agree that it would be good if _somebody_ from the Arm side can
> > give it the once over, so I've added Jean-Philippe to cc in case he has time
> > for a quick review.
>
> I'll take a look. Sorry for not catching this earlier, all versions of the
> series somehow ended up in my spams :/

Yeah, same here. It was only Daniel's mail that hit my inbox!

Will