Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

s64ilp32: ebpf_jit: Fix the incorrect jump addresses and index offsets in tail_call #16

Merged
merged 1 commit into from
Apr 7, 2024

Commits on Apr 7, 2024

  1. s64ilp32: ebpf_jit: Fix the incorrect jump addresses and index offset…

    …s in tail_call
    
    This patch solves the 10 tail_call testing issues in test_bpf.
    At this point, all tests of test_bpf in BPF_JIT mode have passed.
    Here is the comparison between s64ilp32, s64lp64 and s32ilp32:
    
    - s64lp64
    
    ```
    ...
    test_bpf: Summary: 1026 PASSED, 0 FAILED, [1014/1014 JIT'ed]
    test_bpf: #0 Tail call leaf jited:1 188 PASS
    test_bpf: #1 Tail call 2 jited:1 180 PASS
    test_bpf: #2 Tail call 3 jited:1 203 PASS
    test_bpf: #3 Tail call 4 jited:1 225 PASS
    test_bpf: #4 Tail call load/store leaf jited:1 145 PASS
    test_bpf: #5 Tail call load/store jited:1 195 PASS
    test_bpf: #6 Tail call error path, max count reached jited:1 997 PASS
    test_bpf: #7 Tail call count preserved across function calls jited:1 155563 PASS
    test_bpf: #8 Tail call error path, NULL target jited:1 164 PASS
    test_bpf: #9 Tail call error path, index out of range jited:1 136 PASS
    test_bpf: test_tail_calls: Summary: 10 PASSED, 0 FAILED, [10/10 JIT'ed]
    ...
    test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED
    ```
    
    - s64ilp32
    
    ```
    ...
    test_bpf: Summary: 1026 PASSED, 0 FAILED, [1014/1014 JIT'ed]
    test_bpf: #0 Tail call leaf jited:1 160 PASS
    test_bpf: #1 Tail call 2 jited:1 221 PASS
    test_bpf: #2 Tail call 3 jited:1 251 PASS
    test_bpf: #3 Tail call 4 jited:1 275 PASS
    test_bpf: #4 Tail call load/store leaf jited:1 198 PASS
    test_bpf: #5 Tail call load/store jited:1 262 PASS
    test_bpf: #6 Tail call error path, max count reached jited:1 1390 PASS
    test_bpf: #7 Tail call count preserved across function calls jited:1 204492 PASS
    test_bpf: #8 Tail call error path, NULL target jited:1 199 PASS
    test_bpf: #9 Tail call error path, index out of range jited:1 168 PASS
    test_bpf: test_tail_calls: Summary: 10 PASSED, 0 FAILED, [10/10 JIT'ed]
    ...
    test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED
    ```
    
    - s32ilp32
    
    ```
    ...
    test_bpf: Summary: 1027 PASSED, 0 FAILED, [832/1015 JIT'ed]
    test_bpf: #0 Tail call leaf jited:1 266 PASS
    test_bpf: #1 Tail call 2 jited:1 409 PASS
    test_bpf: #2 Tail call 3 jited:1 481 PASS
    test_bpf: #3 Tail call 4 jited:1 537 PASS
    test_bpf: #4 Tail call load/store leaf jited:1 325 PASS
    test_bpf: #5 Tail call load/store jited:1 427 PASS
    test_bpf: #6 Tail call error path, max count reached jited:1 3050 PASS
    test_bpf: #7 Tail call count preserved across function calls jited:1 255522 PASS
    test_bpf: #8 Tail call error path, NULL target jited:1 315 PASS
    test_bpf: #9 Tail call error path, index out of range jited:1 280 PASS
    test_bpf: test_tail_calls: Summary: 10 PASSED, 0 FAILED, [10/10 JIT'ed]
    ...
    test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED
    ```
    
    Actually, s64ilp32 and s64lp64 perform consistently, both in terms of the number
    that can be executed by JIT and execution time. while, only 80% of cases in s32ilp32
    can be executed by JIT, and the execution time is also longer under the same JIT
    execution situation.
    
    Signed-off-by: Chen Pei <[email protected]>
    cp0613 committed Apr 7, 2024
    Configuration menu
    Copy the full SHA
    9003e7d View commit details
    Browse the repository at this point in the history