Message ID | 20240201171249.253097-2-hbathini@linux.ibm.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | [v2,1/2] powerpc/bpf: ensure module addresses are supported | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 23 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 6 jobs. |
Le 01/02/2024 à 18:12, Hari Bathini a écrit : > With module addresses supported, override bpf_jit_supports_kfunc_call() > to enable kfunc support. Module address offsets can be more than 32-bit > long, so override bpf_jit_supports_far_kfunc_call() to enable 64-bit > pointers. What's the impact on PPC32 ? There are no 64-bit pointers on PPC32. > > Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> > --- > > * No changes since v1. > > > arch/powerpc/net/bpf_jit_comp.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c > index 7b4103b4c929..f896a4213696 100644 > --- a/arch/powerpc/net/bpf_jit_comp.c > +++ b/arch/powerpc/net/bpf_jit_comp.c > @@ -359,3 +359,13 @@ void bpf_jit_free(struct bpf_prog *fp) > > bpf_prog_unlock_free(fp); > } > + > +bool bpf_jit_supports_kfunc_call(void) > +{ > + return true; > +} > + > +bool bpf_jit_supports_far_kfunc_call(void) > +{ > + return true; > +}
On 13/02/24 1:24 pm, Christophe Leroy wrote: > > > Le 01/02/2024 à 18:12, Hari Bathini a écrit : >> With module addresses supported, override bpf_jit_supports_kfunc_call() >> to enable kfunc support. Module address offsets can be more than 32-bit >> long, so override bpf_jit_supports_far_kfunc_call() to enable 64-bit >> pointers. > > What's the impact on PPC32 ? There are no 64-bit pointers on PPC32. Yeah. Not required to return true for PPC32 case and probably not a good thing to claim support for far kfunc calls for PPC32. Changing to: +bool bpf_jit_supports_far_kfunc_call(void) +{ + return IS_ENABLED(CONFIG_PPC64); +} >> >> Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> >> --- >> >> * No changes since v1. >> >> >> arch/powerpc/net/bpf_jit_comp.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >> diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c >> index 7b4103b4c929..f896a4213696 100644 >> --- a/arch/powerpc/net/bpf_jit_comp.c >> +++ b/arch/powerpc/net/bpf_jit_comp.c >> @@ -359,3 +359,13 @@ void bpf_jit_free(struct bpf_prog *fp) >> >> bpf_prog_unlock_free(fp); >> } >> + >> +bool bpf_jit_supports_kfunc_call(void) >> +{ >> + return true; >> +} >> + >> +bool bpf_jit_supports_far_kfunc_call(void) >> +{ >> + return true; >> +}
On Tue, Feb 13, 2024 at 07:54:27AM +0000, Christophe Leroy wrote: > > > Le 01/02/2024 à 18:12, Hari Bathini a écrit : > > With module addresses supported, override bpf_jit_supports_kfunc_call() > > to enable kfunc support. Module address offsets can be more than 32-bit > > long, so override bpf_jit_supports_far_kfunc_call() to enable 64-bit > > pointers. > > What's the impact on PPC32 ? There are no 64-bit pointers on PPC32. Looking at commit 1cf3bfc60f98 ("bpf: Support 64-bit pointers to kfuncs"), which added bpf_jit_supports_far_kfunc_call(), that does look to be very specific to platforms where module addresses are farther than s32. This is true for powerpc 64-bit, but shouldn't be needed for 32-bit. > > > > > Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> > > --- > > > > * No changes since v1. > > > > > > arch/powerpc/net/bpf_jit_comp.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c > > index 7b4103b4c929..f896a4213696 100644 > > --- a/arch/powerpc/net/bpf_jit_comp.c > > +++ b/arch/powerpc/net/bpf_jit_comp.c > > @@ -359,3 +359,13 @@ void bpf_jit_free(struct bpf_prog *fp) > > > > bpf_prog_unlock_free(fp); > > } > > + > > +bool bpf_jit_supports_kfunc_call(void) > > +{ > > + return true; > > +} > > + > > +bool bpf_jit_supports_far_kfunc_call(void) > > +{ > > + return true; > > +} I am not sure there is value in keeping this as a separate patch since all support code for kfunc calls is introduced in an earlier patch. Consider folding this into the previous patch. - Naveen
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c index 7b4103b4c929..f896a4213696 100644 --- a/arch/powerpc/net/bpf_jit_comp.c +++ b/arch/powerpc/net/bpf_jit_comp.c @@ -359,3 +359,13 @@ void bpf_jit_free(struct bpf_prog *fp) bpf_prog_unlock_free(fp); } + +bool bpf_jit_supports_kfunc_call(void) +{ + return true; +} + +bool bpf_jit_supports_far_kfunc_call(void) +{ + return true; +}
With module addresses supported, override bpf_jit_supports_kfunc_call() to enable kfunc support. Module address offsets can be more than 32-bit long, so override bpf_jit_supports_far_kfunc_call() to enable 64-bit pointers. Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> --- * No changes since v1. arch/powerpc/net/bpf_jit_comp.c | 10 ++++++++++ 1 file changed, 10 insertions(+)