From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 724CCC41513 for ; Tue, 15 Aug 2023 14:10:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237518AbjHOOKU (ORCPT ); Tue, 15 Aug 2023 10:10:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237514AbjHOOJv (ORCPT ); Tue, 15 Aug 2023 10:09:51 -0400 Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5995199A; Tue, 15 Aug 2023 07:09:49 -0700 (PDT) Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2b9c907bc68so81609561fa.2; Tue, 15 Aug 2023 07:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692108588; x=1692713388; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=EUqwQFcaZ1oAyQ7RyvwgmK+J49GL+aD5dHjufsVvaSU=; b=Fqcetz549j/J1l7LSDGsSe0rc+gB4GcJOUV/CogTNYr5XSyP1gD1pBlqP91dbEx2Zb 0UXAfea9JiCp2OnOlL7RlxbkEXW6+Xp9qJe4AJCDFCDyV+ruyDmSWUespR7YjWPrwKVi QjEhFkTlJTSWxdhOxngxmNgT53CBEM3Dn2UxefEuob5LAK61LRHEnIVxX3nII3LAIlUV g9VIDt1FYfpXwwDsnLDR0XVqgvi59da+N2qJuSVQe6pJcYFYmnHgnsh6+QkYZz2Zjm74 N3maY4TkO1npeLmxgu+fKN9fjD+y8b9HHD9/9zXq7uhnIT9I0KH6n88NRtTxixcGE22g 4m9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692108588; x=1692713388; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EUqwQFcaZ1oAyQ7RyvwgmK+J49GL+aD5dHjufsVvaSU=; b=Z1RMGgdrw5IPlGX2/zpGh4NusLhsgGqJn5sFFcwTV0MTEdjKuFt6WnJhv8z1ZZxsCq hHqK/TGpj72KaWTfYIYm4kwZX+FgWyXkqvT4NeWzHO7iSUDykbkXqZZD4/5lEHDDbnQ2 1gdWYGciABEjx7OKNETSBYAf8RMa+5v4mWKJdvvRaOYrgNop2wbTuisjSmn4d7IdCN5K 8X2rOSaZMbtpNmaub7DYadZ+N0V42tqxW69atdSqJlDKmKM2gTtEYFt/oVE7Vg8D3CUJ FcER6JuhJ7FYuNHK4qDxxhdpzYCkoyUkX2Sl2YnaJTbWmewGFMsKdwhkgD85f5JLVc7P K55w== X-Gm-Message-State: AOJu0YwVbBRt/s1W2RAR96Nuf0DY0iSyWUK41w2ec/oajreWatmo72oS cp/RmdXBokZd7eUK6LwrzZcjeLrDhpfJZbQUID0= X-Google-Smtp-Source: AGHT+IHFVTgCbx+P55vV/Sr6NoK14EObWpnD7r3nmdPAejOctVxq7J9nAACPeju63tlaFmZYwqFjjngZMGJSVcA2eng= X-Received: by 2002:a2e:3e17:0:b0:2b7:33b9:8809 with SMTP id l23-20020a2e3e17000000b002b733b98809mr7755616lja.16.1692108587782; Tue, 15 Aug 2023 07:09:47 -0700 (PDT) MIME-Version: 1.0 References: <20230626085811.3192402-1-puranjay12@gmail.com> <20230626085811.3192402-4-puranjay12@gmail.com> In-Reply-To: <20230626085811.3192402-4-puranjay12@gmail.com> From: Puranjay Mohan Date: Tue, 15 Aug 2023 16:09:36 +0200 Message-ID: Subject: Re: [PATCH bpf-next v4 3/3] bpf, arm64: use bpf_jit_binary_pack_alloc To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, bpf@vger.kernel.org, kpsingh@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Everyone, [+cc Bj=C3=B6rn] On Mon, Jun 26, 2023 at 10:58=E2=80=AFAM Puranjay Mohan wrote: > > Use bpf_jit_binary_pack_alloc for memory management of JIT binaries in > ARM64 BPF JIT. The bpf_jit_binary_pack_alloc creates a pair of RW and RX > buffers. The JIT writes the program into the RW buffer. When the JIT is > done, the program is copied to the final RX buffer > with bpf_jit_binary_pack_finalize. > > Implement bpf_arch_text_copy() and bpf_arch_text_invalidate() for ARM64 > JIT as these functions are required by bpf_jit_binary_pack allocator. > > Signed-off-by: Puranjay Mohan > Acked-by: Song Liu [...] > +int bpf_arch_text_invalidate(void *dst, size_t len) > +{ > + __le32 *ptr; > + int ret; > + > + for (ptr =3D dst; len >=3D sizeof(u32); len -=3D sizeof(u32)) { > + ret =3D aarch64_insn_patch_text_nosync(ptr++, AARCH64_BRE= AK_FAULT); > + if (ret) > + return ret; > + } > + > + return 0; > +} > + While testing the same patch for riscv bpf jit, Bj=C3=B6rn found that ./test_tag is taking a lot of time to complete. He found that bpf_arch_text_invalidate() is calling patch_text_nosync() in RISCV and aarch64_insn_patch_text_nosync() here in ARM64. Both of the implementations call these functions in a loop for each word. The problem is that every call to patch_text_nosync()/aarch64_insn_patch_text_nosync() would clean the cache. This will make this function(bpf_arch_text_invalidate) really slow. I did some testing using the vmtest.sh script on ARM64 with and without the patches, here are the results: With Prog Pack patches applied: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D root@(none):/# time ./root/bpf/test_tag test_tag: OK (40945 tests) real 3m2.001s user 0m1.644s sys 2m40.132s Without Prog Pack: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D root@(none):/# time ./root/bpf/test_tag test_tag: OK (40945 tests) real 0m26.809s user 0m1.591s sys 0m24.106s As you can see the current implementation of bpf_arch_text_invalidate() is really slow. I need to implement a new function: aarch64_insn_set_text_nosync() and use it in bpf_arch_text_invalidate() rather than calling aarch64_insn_patch_text_nosync() in a loop. In the longer run, it would be really helpful if we have a standard text_poke API like x86 in every architecture. Thanks, Puranjay From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 15C0AC0015E for ; Tue, 15 Aug 2023 14:10:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=0PVpiIqI0uAq0x+JdIl3RA7Dfv3hZqS42rmVINaOybc=; b=oT4vsypIniRNmgXjeihsreZKP4 KYkEoXCZHRbj8/uvkXBtZWILsLkOT4Ha33uIholU3ImhjAB2W2qEGkMMw4dtaoVAwivs3cYKczJyO UrpMmIg7JP8z5qk5iObL1lSstO43/1LemlxCgA0H5VjzNVHGZ7aLqfe2wxzsU5ilczrYVWoco5iMm 6rEsRbumM5fk5aRfth1Yiz0DETHFRWScxFQxGsdyfto+rquaOVQm8KkaUsnDn1+GdQPZF5XYzgfg2 zCRUPvx6urT+YmGbwwpj8d2t19GXqABxqW/OKXUOT/jqsyFx0rZdKcLTHcUbA1z4r01gTjxcN6pUg LVmxSXUQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qVuk7-001jwV-2V; Tue, 15 Aug 2023 14:09:55 +0000 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qVuk5-001jvl-1K for linux-arm-kernel@lists.infradead.org; Tue, 15 Aug 2023 14:09:54 +0000 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2b703a0453fso81634151fa.3 for ; Tue, 15 Aug 2023 07:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692108588; x=1692713388; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=EUqwQFcaZ1oAyQ7RyvwgmK+J49GL+aD5dHjufsVvaSU=; b=Fqcetz549j/J1l7LSDGsSe0rc+gB4GcJOUV/CogTNYr5XSyP1gD1pBlqP91dbEx2Zb 0UXAfea9JiCp2OnOlL7RlxbkEXW6+Xp9qJe4AJCDFCDyV+ruyDmSWUespR7YjWPrwKVi QjEhFkTlJTSWxdhOxngxmNgT53CBEM3Dn2UxefEuob5LAK61LRHEnIVxX3nII3LAIlUV g9VIDt1FYfpXwwDsnLDR0XVqgvi59da+N2qJuSVQe6pJcYFYmnHgnsh6+QkYZz2Zjm74 N3maY4TkO1npeLmxgu+fKN9fjD+y8b9HHD9/9zXq7uhnIT9I0KH6n88NRtTxixcGE22g 4m9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692108588; x=1692713388; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EUqwQFcaZ1oAyQ7RyvwgmK+J49GL+aD5dHjufsVvaSU=; b=hTgMcSlhn4HzgSEzSS974eZRmgPB9qkPUZ0uzNQDz5e14QKdRFN5yHN7lqkhvGC1Mn CWejRJEA8txGkZQEEY7GSnX1d12OXLNuu7RlGWUeQumgKJ/UsABgoXgybJ8Kz2pVH33Q H5Na9k00fag8xhcls11u7M30aCrV4GPh1JyXRSmloxgj2Ok1wCx0lwHvzcVvsV1M772v EepfC6h8LaW7mxHwRa5fOcxihqIB6VbpmGoVeRCAeJp6fspuFCaQ3Ean7K1Gs3EtiT0y z0wFvGYAoOCRbo/30jEuBPhxiBR+xZAa5brG8uLSiKm2vj1FgIh8h/I3KnrHzyQM8POM tBYw== X-Gm-Message-State: AOJu0Ywj81eenjMhr4nmXz/UWteBTq3QX7LgPmqX4jS5zv7JNHOYJjZF nuTZYJtrXmQp5FVxxgwnPsrGDg9w51O9e3/uIB8= X-Google-Smtp-Source: AGHT+IHFVTgCbx+P55vV/Sr6NoK14EObWpnD7r3nmdPAejOctVxq7J9nAACPeju63tlaFmZYwqFjjngZMGJSVcA2eng= X-Received: by 2002:a2e:3e17:0:b0:2b7:33b9:8809 with SMTP id l23-20020a2e3e17000000b002b733b98809mr7755616lja.16.1692108587782; Tue, 15 Aug 2023 07:09:47 -0700 (PDT) MIME-Version: 1.0 References: <20230626085811.3192402-1-puranjay12@gmail.com> <20230626085811.3192402-4-puranjay12@gmail.com> In-Reply-To: <20230626085811.3192402-4-puranjay12@gmail.com> From: Puranjay Mohan Date: Tue, 15 Aug 2023 16:09:36 +0200 Message-ID: Subject: Re: [PATCH bpf-next v4 3/3] bpf, arm64: use bpf_jit_binary_pack_alloc To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, bpf@vger.kernel.org, kpsingh@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230815_070953_448342_5C632547 X-CRM114-Status: GOOD ( 20.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgRXZlcnlvbmUsCgpbK2NjIEJqw7Zybl0KCk9uIE1vbiwgSnVuIDI2LCAyMDIzIGF0IDEwOjU4 4oCvQU0gUHVyYW5qYXkgTW9oYW4gPHB1cmFuamF5MTJAZ21haWwuY29tPiB3cm90ZToKPgo+IFVz ZSBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jIGZvciBtZW1vcnkgbWFuYWdlbWVudCBvZiBKSVQg YmluYXJpZXMgaW4KPiBBUk02NCBCUEYgSklULiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxv YyBjcmVhdGVzIGEgcGFpciBvZiBSVyBhbmQgUlgKPiBidWZmZXJzLiBUaGUgSklUIHdyaXRlcyB0 aGUgcHJvZ3JhbSBpbnRvIHRoZSBSVyBidWZmZXIuIFdoZW4gdGhlIEpJVCBpcwo+IGRvbmUsIHRo ZSBwcm9ncmFtIGlzIGNvcGllZCB0byB0aGUgZmluYWwgUlggYnVmZmVyCj4gd2l0aCBicGZfaml0 X2JpbmFyeV9wYWNrX2ZpbmFsaXplLgo+Cj4gSW1wbGVtZW50IGJwZl9hcmNoX3RleHRfY29weSgp IGFuZCBicGZfYXJjaF90ZXh0X2ludmFsaWRhdGUoKSBmb3IgQVJNNjQKPiBKSVQgYXMgdGhlc2Ug ZnVuY3Rpb25zIGFyZSByZXF1aXJlZCBieSBicGZfaml0X2JpbmFyeV9wYWNrIGFsbG9jYXRvci4K Pgo+IFNpZ25lZC1vZmYtYnk6IFB1cmFuamF5IE1vaGFuIDxwdXJhbmpheTEyQGdtYWlsLmNvbT4K PiBBY2tlZC1ieTogU29uZyBMaXUgPHNvbmdAa2VybmVsLm9yZz4KClsuLi5dCgo+ICtpbnQgYnBm X2FyY2hfdGV4dF9pbnZhbGlkYXRlKHZvaWQgKmRzdCwgc2l6ZV90IGxlbikKPiArewo+ICsgICAg ICAgX19sZTMyICpwdHI7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGZvciAocHRy ID0gZHN0OyBsZW4gPj0gc2l6ZW9mKHUzMik7IGxlbiAtPSBzaXplb2YodTMyKSkgewo+ICsgICAg ICAgICAgICAgICByZXQgPSBhYXJjaDY0X2luc25fcGF0Y2hfdGV4dF9ub3N5bmMocHRyKyssIEFB UkNINjRfQlJFQUtfRkFVTFQpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0 dXJuIDA7Cj4gK30KPiArCgpXaGlsZSB0ZXN0aW5nIHRoZSBzYW1lIHBhdGNoIGZvciByaXNjdiBi cGYgaml0LCBCasO2cm4gZm91bmQgdGhhdAouL3Rlc3RfdGFnIGlzIHRha2luZyBhIGxvdCBvZgp0 aW1lIHRvIGNvbXBsZXRlLiBIZSBmb3VuZCB0aGF0IGJwZl9hcmNoX3RleHRfaW52YWxpZGF0ZSgp IGlzIGNhbGxpbmcKcGF0Y2hfdGV4dF9ub3N5bmMoKSBpbiBSSVNDVgphbmQgYWFyY2g2NF9pbnNu X3BhdGNoX3RleHRfbm9zeW5jKCkgaGVyZSBpbiBBUk02NC4gQm90aCBvZiB0aGUKaW1wbGVtZW50 YXRpb25zIGNhbGwgdGhlc2UgZnVuY3Rpb25zCmluIGEgbG9vcCBmb3IgZWFjaCB3b3JkLiBUaGUg cHJvYmxlbSBpcyB0aGF0IGV2ZXJ5IGNhbGwgdG8KcGF0Y2hfdGV4dF9ub3N5bmMoKS9hYXJjaDY0 X2luc25fcGF0Y2hfdGV4dF9ub3N5bmMoKQp3b3VsZCBjbGVhbiB0aGUgY2FjaGUuIFRoaXMgd2ls bCBtYWtlIHRoaXMKZnVuY3Rpb24oYnBmX2FyY2hfdGV4dF9pbnZhbGlkYXRlKSByZWFsbHkgc2xv dy4KCkkgZGlkIHNvbWUgdGVzdGluZyB1c2luZyB0aGUgdm10ZXN0LnNoIHNjcmlwdCBvbiBBUk02 NCB3aXRoIGFuZAp3aXRob3V0IHRoZSBwYXRjaGVzLCBoZXJlIGFyZSB0aGUgcmVzdWx0czoKCldp dGggUHJvZyBQYWNrIHBhdGNoZXMgYXBwbGllZDoKPT09PT09PT09PT09PT09PT09PT09PT09PQoK cm9vdEAobm9uZSk6LyMgdGltZSAuL3Jvb3QvYnBmL3Rlc3RfdGFnCnRlc3RfdGFnOiBPSyAoNDA5 NDUgdGVzdHMpCgpyZWFsICAgIDNtMi4wMDFzCnVzZXIgICAgMG0xLjY0NHMKc3lzICAgICAybTQw LjEzMnMKCldpdGhvdXQgUHJvZyBQYWNrOgo9PT09PT09PT09PT09PT0KCnJvb3RAKG5vbmUpOi8j IHRpbWUgLi9yb290L2JwZi90ZXN0X3RhZwp0ZXN0X3RhZzogT0sgKDQwOTQ1IHRlc3RzKQoKcmVh bCAgICAwbTI2LjgwOXMKdXNlciAgICAwbTEuNTkxcwpzeXMgICAgIDBtMjQuMTA2cwoKQXMgeW91 IGNhbiBzZWUgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YKYnBmX2FyY2hfdGV4dF9pbnZh bGlkYXRlKCkgaXMgcmVhbGx5IHNsb3cuIEkgbmVlZCB0bwppbXBsZW1lbnQgYSBuZXcgZnVuY3Rp b246IGFhcmNoNjRfaW5zbl9zZXRfdGV4dF9ub3N5bmMoKSBhbmQgdXNlIGl0IGluCmJwZl9hcmNo X3RleHRfaW52YWxpZGF0ZSgpCnJhdGhlciB0aGFuIGNhbGxpbmcgYWFyY2g2NF9pbnNuX3BhdGNo X3RleHRfbm9zeW5jKCkgaW4gYSBsb29wLgoKSW4gdGhlIGxvbmdlciBydW4sIGl0IHdvdWxkIGJl IHJlYWxseSBoZWxwZnVsIGlmIHdlIGhhdmUgYSBzdGFuZGFyZAp0ZXh0X3Bva2UgQVBJIGxpa2Ug eDg2IGluIGV2ZXJ5IGFyY2hpdGVjdHVyZS4KClRoYW5rcywKUHVyYW5qYXkKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK