Commit e59997d
Alexei Starovoitov
Merge branch 'bpf-arm64-support-exceptions'
Puranjay Mohan says:
====================
bpf, arm64: Support Exceptions
Changes in V2->V3:
V2: https://lore.kernel.org/all/20230917000045.56377-1-puranjay12@gmail.com/
- Use unwinder from stacktrace.c rather than open coding the unwind logic.
- Fix a bug in the prologue related to BPF_FP (Xu Kuohai)
Changes in V1->V2:
V1: https://lore.kernel.org/all/20230912233942.6734-1-puranjay12@gmail.com/
- Remove exceptions from DENYLIST.aarch64 as they are supported now.
The base support for exceptions was merged with [1] and it was enabled for
x86-64.
This patch set enables the support on ARM64, all sefltests are passing:
# ./test_progs -a exceptions
#74/1 exceptions/exception_throw_always_1:OK
#74/2 exceptions/exception_throw_always_2:OK
#74/3 exceptions/exception_throw_unwind_1:OK
#74/4 exceptions/exception_throw_unwind_2:OK
#74/5 exceptions/exception_throw_default:OK
#74/6 exceptions/exception_throw_default_value:OK
#74/7 exceptions/exception_tail_call:OK
#74/8 exceptions/exception_ext:OK
#74/9 exceptions/exception_ext_mod_cb_runtime:OK
#74/10 exceptions/exception_throw_subprog:OK
#74/11 exceptions/exception_assert_nz_gfunc:OK
#74/12 exceptions/exception_assert_zero_gfunc:OK
#74/13 exceptions/exception_assert_neg_gfunc:OK
#74/14 exceptions/exception_assert_pos_gfunc:OK
#74/15 exceptions/exception_assert_negeq_gfunc:OK
#74/16 exceptions/exception_assert_poseq_gfunc:OK
#74/17 exceptions/exception_assert_nz_gfunc_with:OK
#74/18 exceptions/exception_assert_zero_gfunc_with:OK
#74/19 exceptions/exception_assert_neg_gfunc_with:OK
#74/20 exceptions/exception_assert_pos_gfunc_with:OK
#74/21 exceptions/exception_assert_negeq_gfunc_with:OK
#74/22 exceptions/exception_assert_poseq_gfunc_with:OK
#74/23 exceptions/exception_bad_assert_nz_gfunc:OK
#74/24 exceptions/exception_bad_assert_zero_gfunc:OK
#74/25 exceptions/exception_bad_assert_neg_gfunc:OK
#74/26 exceptions/exception_bad_assert_pos_gfunc:OK
#74/27 exceptions/exception_bad_assert_negeq_gfunc:OK
#74/28 exceptions/exception_bad_assert_poseq_gfunc:OK
#74/29 exceptions/exception_bad_assert_nz_gfunc_with:OK
#74/30 exceptions/exception_bad_assert_zero_gfunc_with:OK
#74/31 exceptions/exception_bad_assert_neg_gfunc_with:OK
#74/32 exceptions/exception_bad_assert_pos_gfunc_with:OK
#74/33 exceptions/exception_bad_assert_negeq_gfunc_with:OK
#74/34 exceptions/exception_bad_assert_poseq_gfunc_with:OK
#74/35 exceptions/exception_assert_range:OK
#74/36 exceptions/exception_assert_range_with:OK
#74/37 exceptions/exception_bad_assert_range:OK
#74/38 exceptions/exception_bad_assert_range_with:OK
#74/39 exceptions/non-throwing fentry -> exception_cb:OK
#74/40 exceptions/throwing fentry -> exception_cb:OK
#74/41 exceptions/non-throwing fexit -> exception_cb:OK
#74/42 exceptions/throwing fexit -> exception_cb:OK
#74/43 exceptions/throwing extension (with custom cb) -> exception_cb:OK
#74/44 exceptions/throwing extension -> global func in exception_cb:OK
#74/45 exceptions/exception_ext_mod_cb_runtime:OK
#74/46 exceptions/throwing extension (with custom cb) -> global func in exception_cb:OK
#74/47 exceptions/exception_ext:OK
#74/48 exceptions/non-throwing fentry -> non-throwing subprog:OK
#74/49 exceptions/throwing fentry -> non-throwing subprog:OK
#74/50 exceptions/non-throwing fentry -> throwing subprog:OK
#74/51 exceptions/throwing fentry -> throwing subprog:OK
#74/52 exceptions/non-throwing fexit -> non-throwing subprog:OK
#74/53 exceptions/throwing fexit -> non-throwing subprog:OK
#74/54 exceptions/non-throwing fexit -> throwing subprog:OK
#74/55 exceptions/throwing fexit -> throwing subprog:OK
#74/56 exceptions/non-throwing fmod_ret -> non-throwing subprog:OK
#74/57 exceptions/non-throwing fmod_ret -> non-throwing global subprog:OK
#74/58 exceptions/non-throwing extension -> non-throwing subprog:OK
#74/59 exceptions/non-throwing extension -> throwing subprog:OK
#74/60 exceptions/non-throwing extension -> non-throwing subprog:OK
#74/61 exceptions/non-throwing extension -> throwing global subprog:OK
#74/62 exceptions/throwing extension -> throwing global subprog:OK
#74/63 exceptions/throwing extension -> non-throwing global subprog:OK
#74/64 exceptions/non-throwing extension -> main subprog:OK
#74/65 exceptions/throwing extension -> main subprog:OK
#74/66 exceptions/reject_exception_cb_type_1:OK
#74/67 exceptions/reject_exception_cb_type_2:OK
#74/68 exceptions/reject_exception_cb_type_3:OK
#74/69 exceptions/reject_exception_cb_type_4:OK
#74/70 exceptions/reject_async_callback_throw:OK
#74/71 exceptions/reject_with_lock:OK
#74/72 exceptions/reject_subprog_with_lock:OK
#74/73 exceptions/reject_with_rcu_read_lock:OK
#74/74 exceptions/reject_subprog_with_rcu_read_lock:OK
#74/75 exceptions/reject_with_rbtree_add_throw:OK
#74/76 exceptions/reject_with_reference:OK
#74/77 exceptions/reject_with_cb_reference:OK
#74/78 exceptions/reject_with_cb:OK
#74/79 exceptions/reject_with_subprog_reference:OK
#74/80 exceptions/reject_throwing_exception_cb:OK
#74/81 exceptions/reject_exception_cb_call_global_func:OK
#74/82 exceptions/reject_exception_cb_call_static_func:OK
#74/83 exceptions/reject_multiple_exception_cb:OK
#74/84 exceptions/reject_exception_throw_cb:OK
#74/85 exceptions/reject_exception_throw_cb_diff:OK
#74/86 exceptions/reject_set_exception_cb_bad_ret1:OK
#74/87 exceptions/reject_set_exception_cb_bad_ret2:OK
#74/88 exceptions/check_assert_eq_int_min:OK
#74/89 exceptions/check_assert_eq_int_max:OK
#74/90 exceptions/check_assert_eq_zero:OK
#74/91 exceptions/check_assert_eq_llong_min:OK
#74/92 exceptions/check_assert_eq_llong_max:OK
#74/93 exceptions/check_assert_lt_pos:OK
#74/94 exceptions/check_assert_lt_zero:OK
#74/95 exceptions/check_assert_lt_neg:OK
#74/96 exceptions/check_assert_le_pos:OK
#74/97 exceptions/check_assert_le_zero:OK
#74/98 exceptions/check_assert_le_neg:OK
#74/99 exceptions/check_assert_gt_pos:OK
#74/100 exceptions/check_assert_gt_zero:OK
#74/101 exceptions/check_assert_gt_neg:OK
#74/102 exceptions/check_assert_ge_pos:OK
#74/103 exceptions/check_assert_ge_zero:OK
#74/104 exceptions/check_assert_ge_neg:OK
#74/105 exceptions/check_assert_range_s64:OK
#74/106 exceptions/check_assert_range_u64:OK
#74/107 exceptions/check_assert_single_range_s64:OK
#74/108 exceptions/check_assert_single_range_u64:OK
#74/109 exceptions/check_assert_generic:OK
#74/110 exceptions/check_assert_with_return:OK
#74 exceptions:OK
Summary: 1/110 PASSED, 0 SKIPPED, 0 FAILED
[1] https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?h=for-next&id=ec6f1b4db95b7eedb3fe85f4f14e08fa0e9281c3
====================
Link: https://lore.kernel.org/r/20240201125225.72796-1-puranjay12@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>3 files changed
Lines changed: 94 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
266 | 267 | | |
267 | 268 | | |
268 | 269 | | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
269 | 295 | | |
270 | 296 | | |
271 | 297 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
288 | | - | |
| 288 | + | |
| 289 | + | |
289 | 290 | | |
290 | 291 | | |
291 | 292 | | |
| |||
333 | 334 | | |
334 | 335 | | |
335 | 336 | | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
349 | 365 | | |
350 | 366 | | |
351 | 367 | | |
| |||
365 | 381 | | |
366 | 382 | | |
367 | 383 | | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
368 | 398 | | |
369 | 399 | | |
370 | 400 | | |
| |||
653 | 683 | | |
654 | 684 | | |
655 | 685 | | |
656 | | - | |
| 686 | + | |
657 | 687 | | |
658 | 688 | | |
659 | 689 | | |
| |||
666 | 696 | | |
667 | 697 | | |
668 | 698 | | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
669 | 708 | | |
670 | 709 | | |
671 | 710 | | |
| |||
1575 | 1614 | | |
1576 | 1615 | | |
1577 | 1616 | | |
1578 | | - | |
| 1617 | + | |
1579 | 1618 | | |
1580 | 1619 | | |
1581 | 1620 | | |
| |||
1586 | 1625 | | |
1587 | 1626 | | |
1588 | 1627 | | |
1589 | | - | |
| 1628 | + | |
1590 | 1629 | | |
1591 | 1630 | | |
1592 | 1631 | | |
| |||
1614 | 1653 | | |
1615 | 1654 | | |
1616 | 1655 | | |
1617 | | - | |
| 1656 | + | |
1618 | 1657 | | |
1619 | 1658 | | |
1620 | 1659 | | |
1621 | 1660 | | |
1622 | 1661 | | |
1623 | 1662 | | |
1624 | 1663 | | |
1625 | | - | |
| 1664 | + | |
1626 | 1665 | | |
1627 | 1666 | | |
1628 | 1667 | | |
| |||
2310 | 2349 | | |
2311 | 2350 | | |
2312 | 2351 | | |
| 2352 | + | |
| 2353 | + | |
| 2354 | + | |
| 2355 | + | |
| 2356 | + | |
| 2357 | + | |
| 2358 | + | |
| 2359 | + | |
| 2360 | + | |
| 2361 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
0 commit comments