Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp2934213rdb; Tue, 12 Sep 2023 17:46:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGcYjFNxLnoKdAWGzHGGytFqp7DrJd3l0cO/nm3KDsQ/oOmPHMgaRamlQvphoJine7IxtI6 X-Received: by 2002:a17:903:48d:b0:1c3:3682:f83f with SMTP id jj13-20020a170903048d00b001c33682f83fmr1199543plb.30.1694565987652; Tue, 12 Sep 2023 17:46:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694565987; cv=none; d=google.com; s=arc-20160816; b=j4M63s50SWO3sD//AmvSPZpVvc1vyvGLEbxrzduJEcEPlNmX+BoEOf+av+GjkwY6KI QqaaiUL34lhm4W3yIfmEeEraG5divRRQ+TdM0xITfwx32rZ8RmGOimf9ALrUcBb3g2Ks 2HI9dpLTWW09LDnjoIfPiV2aD5CDFHhI5ejn1TH3/XaU1lJsik7dT+LggpR/p/VDOVop pq+oWwM4nz+sUOsYCj0rgCZIPleMg9p8Jv5vSZzk+dCKk8VvI2ZEo1sn5yLyYQhuY9rJ lL7R27J4+7KVLeNE8sN2gZsbl3SeiuFvK/lSbuGPNqu9+sFFGW/Q71PsKwdxvbC0wJGL P3qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=qXC78UUF3ibqz3zuiL6JsDX7Oj430gQiRowMpFwstOk=; fh=e1K/vwBHAtPTWSbfVFjMAXMuinM6QVnqWx2kkY1zGck=; b=bGyyxs7iH7VL4InMuvrG6a5GelZo7p/6fMIUqZspOWAmZAtgiVn73mYuHe/uVTwoDD GyG7jNfrcIYZ9bqlBd2uycHBUaPboH/8iwtpyUoceDkNuZxFihmnR2b2c4a6sy+/yBxL sXQw0Qs1RbuJVEpOY2hP5mVEEkuuvUWhQjlidDTOw7TrD1b7yikTN5QWLekFUk5YgmCW WuILFD6oBA9dpqraEw17Nx74e2mdXMre3YbnE8TPOXj8Oj4dafiznszKM9y9TtO5U40F sL4EoI/PIxYiKy0caCcFLGi7Pm4RCc0UOrP7m3orWjq34QZeCmm21EGdzh51PHTlxpOG 3mBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=i7AsW7K3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id jb22-20020a170903259600b001b9d0ad0d40si8775888plb.128.2023.09.12.17.46.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 17:46:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=i7AsW7K3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 965B38253538; Tue, 12 Sep 2023 16:39:51 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237465AbjILXju (ORCPT + 99 others); Tue, 12 Sep 2023 19:39:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232087AbjILXjt (ORCPT ); Tue, 12 Sep 2023 19:39:49 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 51C9D10C7; Tue, 12 Sep 2023 16:39:45 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-3ff1c397405so72674915e9.3; Tue, 12 Sep 2023 16:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694561984; x=1695166784; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=qXC78UUF3ibqz3zuiL6JsDX7Oj430gQiRowMpFwstOk=; b=i7AsW7K3SR+tcxUHyvGF0JANrnwAEuWRJaOU9tQd4sZgZwv8+knMx4LkFXgGNcb7SC c2GnDofodmIBLg0uq2d7RK5xw3zqyyu11qJobQqwdPUZ0PyA6sLWG6EvB7WEsY8dMCIu 8z1/Rwu6fUIebjB8f0dH45TEAEu8wenvugBLD8mneBAtzIyLkx3IluERZZapHJQmcNpV WcX0YgxYFdepwdsSA2pecWM0ygJmkQiEH131msIu7aMu2hlkhdaOuk2vNmVOEdAQjfVW 0zDwz/n/HmY+ZSF6y79/HHK/Qwpskbq0VbiHOtYImB+CzFCREWd9MDS6VelDFZcVh3Je F6fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694561984; x=1695166784; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qXC78UUF3ibqz3zuiL6JsDX7Oj430gQiRowMpFwstOk=; b=FUYVqUwaKHpUDQVmLQnS4vhI/zCezT+GmO6zvzKaur6UJ381Iqk8Hzm+SEN79l5gZm 3GSDBSn3ZZdwv073r09Hsm3Tph0ArAVm8SkoKiKWlLOZpExy26Uoxpxi9MKOUV0bLflE DBTr/QnN0CaPsnkTroaox0+uljruGMOigGqJXD9AjUuU9aJlVrFiAJKxVEQfTHiK0bDO /xXGg1H8uJ+dCjVvJ4AAQDtwfQsrbNoc+W1FF7t6yY21JMnd0hHqg5kbubcCTIUtIQom 0t8JgK7UHuAw9pzVN7a4/SAHJC8gsL6P4iZzriUnDlMaBSgg6vUQZn9mZL58hmP0eHcV 0lZg== X-Gm-Message-State: AOJu0YyI56ppB3mNIXS7sYYXL1UAamBhpQtbkne6GRwvzlTCDn9LJj4a 1JL4ANlCAM7PW6TTYxlNQB8= X-Received: by 2002:a05:600c:2318:b0:401:b1c6:97d8 with SMTP id 24-20020a05600c231800b00401b1c697d8mr643840wmo.35.1694561983527; Tue, 12 Sep 2023 16:39:43 -0700 (PDT) Received: from ip-172-31-30-46.eu-west-1.compute.internal (ec2-34-242-166-189.eu-west-1.compute.amazonaws.com. [34.242.166.189]) by smtp.gmail.com with ESMTPSA id k23-20020a05600c0b5700b00402fa98abe3sm296641wmr.46.2023.09.12.16.39.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 16:39:43 -0700 (PDT) From: Puranjay Mohan To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Zi Shen Lim , Catalin Marinas , Will Deacon , bpf@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: puranjay12@gmail.com, memxor@gmail.com Subject: [PATCH bpf-next 0/1] bpf, arm64: support exceptions Date: Tue, 12 Sep 2023 23:39:41 +0000 Message-Id: <20230912233942.6734-1-puranjay12@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 12 Sep 2023 16:39:51 -0700 (PDT) X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Kumar is working on adding exceptions to BPF and enabling it on x86 [1]. I am working with him to enable it on ARM64 and will later do it for other architectures when the basic exceptions support is upstream. This patch 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://lore.kernel.org/bpf/20230912233214.1518551-1-memxor@gmail.com/ Puranjay Mohan (1): bpf, arm64: support exceptions arch/arm64/net/bpf_jit_comp.c | 98 ++++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 19 deletions(-) -- 2.40.1