All of lore.kernel.org
 help / color / mirror / Atom feed
* s390x BPF JIT failures with test_bpf
@ 2018-06-27  9:40 ` Kleber Souza
  0 siblings, 0 replies; 6+ messages in thread
From: Kleber Souza @ 2018-06-27  9:40 UTC (permalink / raw)
  To: linux-s390, netdev; +Cc: Alexei Starovoitov, Daniel Borkmann

Hi,

When I load the test_bpf module from mainline (v4.18-rc2) with
CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:

test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
prog_create err=-524 len=4096
test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
prog_create err=-524 len=4096
[...]
test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
len=4096
test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
err=-524 len=4096

>From a quick look at the code it seems that
arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
compile the test code.

Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
on lib/test_bpf.c or are those caused by some issue with the s390x JIT
compiler that needs to be fixed?


Thanks,
Kleber

^ permalink raw reply	[flat|nested] 6+ messages in thread

* s390x BPF JIT failures with test_bpf
@ 2018-06-27  9:40 ` Kleber Souza
  0 siblings, 0 replies; 6+ messages in thread
From: Kleber Souza @ 2018-06-27  9:40 UTC (permalink / raw)
  To: linux-s390, netdev; +Cc: Alexei Starovoitov, Daniel Borkmann

Hi,

When I load the test_bpf module from mainline (v4.18-rc2) with
CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:

test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
prog_create err=-524 len=4096
test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
prog_create err=-524 len=4096
[...]
test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
len=4096
test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
err=-524 len=4096

From a quick look at the code it seems that
arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
compile the test code.

Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
on lib/test_bpf.c or are those caused by some issue with the s390x JIT
compiler that needs to be fixed?


Thanks,
Kleber

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s390x BPF JIT failures with test_bpf
  2018-06-27  9:40 ` Kleber Souza
  (?)
@ 2018-06-27 10:01 ` Daniel Borkmann
  2018-06-27 10:13   ` Kleber Souza
  -1 siblings, 1 reply; 6+ messages in thread
From: Daniel Borkmann @ 2018-06-27 10:01 UTC (permalink / raw)
  To: Kleber Souza, linux-s390, netdev; +Cc: Alexei Starovoitov

Hi Kleber,

On 06/27/2018 11:40 AM, Kleber Souza wrote:
[...]
> When I load the test_bpf module from mainline (v4.18-rc2) with
> CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:
> 
> test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
> prog_create err=-524 len=4096
> test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
> prog_create err=-524 len=4096
> [...]
> test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
> len=4096
> test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
> err=-524 len=4096
> 
> From a quick look at the code it seems that
> arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
> compile the test code.
> 
> Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
> on lib/test_bpf.c or are those caused by some issue with the s390x JIT
> compiler that needs to be fixed?

JIT doesn't guarantee in general to map really all programs to native insns,
so some, mostly crafted corner cases could fail. E.g. x86-64 JIT doesn't converge
on some programs in test_bpf.c and thus falls back to interpreter or simply
rejects the program in case of CONFIG_BPF_JIT_ALWAYS_ON=y. Above would seem
likely that it's hitting the BPF_SIZE_MAX that s390 would do. I think it might
make sense to either have the FLAG_EXPECTED_FAIL in lib/test_bpf.c more fine
grained as a flag per arch, so we could say it's expected to fail on e.g. s390
but not on x86 and the like, or just denote it as 'could potentially fail but
doesn't have to be the case everywhere'.

Thanks,
Daniel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s390x BPF JIT failures with test_bpf
  2018-06-27 10:01 ` Daniel Borkmann
@ 2018-06-27 10:13   ` Kleber Souza
  2018-06-27 10:36     ` Daniel Borkmann
  0 siblings, 1 reply; 6+ messages in thread
From: Kleber Souza @ 2018-06-27 10:13 UTC (permalink / raw)
  To: Daniel Borkmann, linux-s390, netdev; +Cc: Alexei Starovoitov

On 06/27/18 12:01, Daniel Borkmann wrote:
> Hi Kleber,
> 
> On 06/27/2018 11:40 AM, Kleber Souza wrote:
> [...]
>> When I load the test_bpf module from mainline (v4.18-rc2) with
>> CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:
>>
>> test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
>> prog_create err=-524 len=4096
>> test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
>> prog_create err=-524 len=4096
>> [...]
>> test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
>> len=4096
>> test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
>> err=-524 len=4096
>>
>> From a quick look at the code it seems that
>> arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
>> compile the test code.
>>
>> Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
>> on lib/test_bpf.c or are those caused by some issue with the s390x JIT
>> compiler that needs to be fixed?
> 
> JIT doesn't guarantee in general to map really all programs to native insns,
> so some, mostly crafted corner cases could fail. E.g. x86-64 JIT doesn't converge
> on some programs in test_bpf.c and thus falls back to interpreter or simply
> rejects the program in case of CONFIG_BPF_JIT_ALWAYS_ON=y. Above would seem
> likely that it's hitting the BPF_SIZE_MAX that s390 would do. I think it might
> make sense to either have the FLAG_EXPECTED_FAIL in lib/test_bpf.c more fine
> grained as a flag per arch, so we could say it's expected to fail on e.g. s390
> but not on x86 and the like, or just denote it as 'could potentially fail but
> doesn't have to be the case everywhere'.

Hi Daniel,

Thank you for your reply. I will run some more tests to make sure we are
hitting BPF_SIZE_MAX or what exactly is failing and send a patch to flag
it conditionally for s390x.


Thanks,
Kleber

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s390x BPF JIT failures with test_bpf
  2018-06-27 10:13   ` Kleber Souza
@ 2018-06-27 10:36     ` Daniel Borkmann
  2018-06-27 12:30       ` Kleber Souza
  0 siblings, 1 reply; 6+ messages in thread
From: Daniel Borkmann @ 2018-06-27 10:36 UTC (permalink / raw)
  To: Kleber Souza, linux-s390, netdev; +Cc: Alexei Starovoitov

On 06/27/2018 12:13 PM, Kleber Souza wrote:
> On 06/27/18 12:01, Daniel Borkmann wrote:
>> On 06/27/2018 11:40 AM, Kleber Souza wrote:
>> [...]
>>> When I load the test_bpf module from mainline (v4.18-rc2) with
>>> CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:
>>>
>>> test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
>>> prog_create err=-524 len=4096
>>> test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
>>> prog_create err=-524 len=4096
>>> [...]
>>> test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
>>> len=4096
>>> test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
>>> err=-524 len=4096
>>>
>>> From a quick look at the code it seems that
>>> arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
>>> compile the test code.
>>>
>>> Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
>>> on lib/test_bpf.c or are those caused by some issue with the s390x JIT
>>> compiler that needs to be fixed?
>>
>> JIT doesn't guarantee in general to map really all programs to native insns,
>> so some, mostly crafted corner cases could fail. E.g. x86-64 JIT doesn't converge
>> on some programs in test_bpf.c and thus falls back to interpreter or simply
>> rejects the program in case of CONFIG_BPF_JIT_ALWAYS_ON=y. Above would seem
>> likely that it's hitting the BPF_SIZE_MAX that s390 would do. I think it might
>> make sense to either have the FLAG_EXPECTED_FAIL in lib/test_bpf.c more fine
>> grained as a flag per arch, so we could say it's expected to fail on e.g. s390
>> but not on x86 and the like, or just denote it as 'could potentially fail but
>> doesn't have to be the case everywhere'.
> 
> Thank you for your reply. I will run some more tests to make sure we are
> hitting BPF_SIZE_MAX or what exactly is failing and send a patch to flag
> it conditionally for s390x.

Sounds good, thanks! In any case, please let us know your findings.

Best,
Daniel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: s390x BPF JIT failures with test_bpf
  2018-06-27 10:36     ` Daniel Borkmann
@ 2018-06-27 12:30       ` Kleber Souza
  0 siblings, 0 replies; 6+ messages in thread
From: Kleber Souza @ 2018-06-27 12:30 UTC (permalink / raw)
  To: Daniel Borkmann, linux-s390, netdev; +Cc: Alexei Starovoitov

On 06/27/18 12:36, Daniel Borkmann wrote:
> On 06/27/2018 12:13 PM, Kleber Souza wrote:
>> On 06/27/18 12:01, Daniel Borkmann wrote:
>>> On 06/27/2018 11:40 AM, Kleber Souza wrote:
>>> [...]
>>>> When I load the test_bpf module from mainline (v4.18-rc2) with
>>>> CONFIG_BPF_JIT_ALWAYS_ON=y on a s390x system I get the following errors:
>>>>
>>>> test_bpf: #289 BPF_MAXINSNS: Ctx heavy transformations FAIL to
>>>> prog_create err=-524 len=4096
>>>> test_bpf: #290 BPF_MAXINSNS: Call heavy transformations FAIL to
>>>> prog_create err=-524 len=4096
>>>> [...]
>>>> test_bpf: #296 BPF_MAXINSNS: exec all MSH FAIL to prog_create err=-524
>>>> len=4096
>>>> test_bpf: #297 BPF_MAXINSNS: ld_abs+get_processor_id FAIL to prog_create
>>>> err=-524 len=4096
>>>>
>>>> From a quick look at the code it seems that
>>>> arch/s390/net/bpf_jit_comp.c:bpf_int_jit_compile() is failing to JIT
>>>> compile the test code.
>>>>
>>>> Are those failures expected and could be flagged with FLAG_EXPECTED_FAIL
>>>> on lib/test_bpf.c or are those caused by some issue with the s390x JIT
>>>> compiler that needs to be fixed?
>>>
>>> JIT doesn't guarantee in general to map really all programs to native insns,
>>> so some, mostly crafted corner cases could fail. E.g. x86-64 JIT doesn't converge
>>> on some programs in test_bpf.c and thus falls back to interpreter or simply
>>> rejects the program in case of CONFIG_BPF_JIT_ALWAYS_ON=y. Above would seem
>>> likely that it's hitting the BPF_SIZE_MAX that s390 would do. I think it might
>>> make sense to either have the FLAG_EXPECTED_FAIL in lib/test_bpf.c more fine
>>> grained as a flag per arch, so we could say it's expected to fail on e.g. s390
>>> but not on x86 and the like, or just denote it as 'could potentially fail but
>>> doesn't have to be the case everywhere'.
>>
>> Thank you for your reply. I will run some more tests to make sure we are
>> hitting BPF_SIZE_MAX or what exactly is failing and send a patch to flag
>> it conditionally for s390x.
> 
> Sounds good, thanks! In any case, please let us know your findings.
> 
> Best,
> Daniel
> 
Hi Daniel,

Your presumption was correct, all four tests are failing because they
exceed BPF_SIZE_MAX. I'll send a patch shortly.

Thanks!
Kleber

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-06-27 12:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-27  9:40 s390x BPF JIT failures with test_bpf Kleber Souza
2018-06-27  9:40 ` Kleber Souza
2018-06-27 10:01 ` Daniel Borkmann
2018-06-27 10:13   ` Kleber Souza
2018-06-27 10:36     ` Daniel Borkmann
2018-06-27 12:30       ` Kleber Souza

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.