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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFC43C48BC1 for ; Wed, 14 Feb 2024 16:47:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 67B248D0017; Wed, 14 Feb 2024 11:47:42 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 62AC68D000E; Wed, 14 Feb 2024 11:47:42 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CCD98D0017; Wed, 14 Feb 2024 11:47:42 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 38F298D000E for ; Wed, 14 Feb 2024 11:47:42 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 1382B14078C for ; Wed, 14 Feb 2024 16:47:42 +0000 (UTC) X-FDA: 81790990764.03.9DB19CE Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by imf20.hostedemail.com (Postfix) with ESMTP id 08AEA1C0006 for ; Wed, 14 Feb 2024 16:47:39 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OBOaT8JU; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=eddyz87@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707929260; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=H8S0aZ7m3AZ1Bg6wTpUAa+vASF6aVcAUXwMA7Rr53/M=; b=fE7yXIGk/teGEDjkY9IlqaktDFcYtM5N8gPOePZH7cxYiu1xUh1gyPZ/o6zOnknO+0JIz6 ymj5ePOCXtDyIyCE0jCVCMpDTv01z3Seugoxryh0ihfUk3xQ54WYZ2WpZapkhPge+cu1X4 nwzIj9VoLPn3ksTnaCbso/eTPikxjcM= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OBOaT8JU; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=eddyz87@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707929260; a=rsa-sha256; cv=none; b=38+cESpJjEk1BK0VZd26O0MesXE+dx+FGTx2H/Pye4l3IAulN7xcQXFCOHBHqr46s1w4Qr kRlCq3DbdJPZ9meTjfSR46f48n+/uflqL1Erqm7BGE/hKSOq3qqxRABwR1h2kzJGyot+Me O0j3LX9JwWAddvHQAjoLNJfSs73smoY= Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a26ed1e05c7so341393266b.2 for ; Wed, 14 Feb 2024 08:47:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707929258; x=1708534058; darn=kvack.org; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to; bh=H8S0aZ7m3AZ1Bg6wTpUAa+vASF6aVcAUXwMA7Rr53/M=; b=OBOaT8JUAjnsBsdgGxlkHopMfObMITRHFxt+oyr7My3JCcvog6Uts8lMPXzDj8e3dq AJU4HJpEd4kTvEJcy7xS0t1WGh4ncfoqLOct0H8jkYHYkIgny3JsXUnsMXu7Dn1ngPtG 7gGQQpmgNUxZVioM5f6iAiOE9ccmyK/q+gEUV02dXAupNos3niFFkwFkPKWUVcasFjfB /rV54JDj5FoeTHflikhVruiHIMHZmOImaFygT7egzNeee35pSPXmxS7HIKBqc4ORBiLY iwVlxFVhyAmd3bGqXny5W77VwAvLNKb0v6yUf3XKVXqqwM2rAobl70z23YJuXWECJDYm lq5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707929258; x=1708534058; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:cc:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=H8S0aZ7m3AZ1Bg6wTpUAa+vASF6aVcAUXwMA7Rr53/M=; b=OnPkgCuOYmzDl4ml/JXaTm7JUgbp/m+0591+OmNmkV+xXJGomg0c0yPIgUjsPsYWdh HqNHU/T0iEi6jnj2UfSsQr95rZ1prvJDnl3kW4404T2tEJOxBVwRpduB/JDxYCnaorOW YbM/q7SuspPxRwcNfu8YGcYHSpee6em2heUTlVH/ZfO9yz8n/9PffYytVaE4dVJJPChV S0tGQa6fZIGUG94gMOtoCnQaKubRO67on4Y7NtDsdS1pzjTgdQHxO8my5nUUpHgEsZMw d4yxy/JXJfAfGm//3JYAGsN7r778JQQZOP8cqQu29UB1RJ0rK0a/PuZWL3kEO4xOSmR5 lc+g== X-Forwarded-Encrypted: i=1; AJvYcCU46QOb8w14kQHs2h3hPJ3SBkQ1eT2GGTKL44Ruyl1R9oxHu2ZcvmuNO+bRuQ0x27Y23iymZu2+p3ifJIy4Yg+iXec= X-Gm-Message-State: AOJu0YyipjbRZkIzQsGm/LaygOkHMOv9eIb1cUuNeJsiMuT+4Nv5qdRf jbieQ32E2TIV/LNC7BCWFndsSKbb0zLCCouuOXBOUbhH5TuTWyKs X-Google-Smtp-Source: AGHT+IElKCTod01GfS4G6wCUT1411vNkzeR1DKrixPi2f8MlzihRx/1sj1eFUXvx1IcutXOqujBqow== X-Received: by 2002:a17:906:e0ce:b0:a3c:a65:7bd8 with SMTP id gl14-20020a170906e0ce00b00a3c0a657bd8mr2196420ejb.24.1707929258166; Wed, 14 Feb 2024 08:47:38 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUAsr4yTD8iGtwUj94aSBxWxH40jBcxHbrUSbsF6amB710cZuu/fbB64GLIGAfJkkCLes0kpuzdfCUyvZcvNdUvQ5fYpi7Kp0T8C5jmY30Opqpu63YB3K/K2KpbHvN5K90+7LWSF0z+lGxzlTivKE3RyM4aMzw7yUzlx5DfAUqE7qfl5zskmrP1IVTrvVpzTqtMZd7putFRX/ZB8ajz9F5YLqjMZNFFOlxSlpy/TQGyYgxCDu/QR7HPaR+y26KCMqb5B86fywjfzd8O7RIgfkzBUEXNeEXroXvHwil4DQkRCBPfgI32anlcu6hsaoHTypqdIUtvYcT+mtKxA6q52B2v7InWlCPif/jzzdRjsl0neinoXI+yg20WbA== Received: from [192.168.1.94] (host-176-36-0-241.b024.la.net.ua. [176.36.0.241]) by smtp.gmail.com with ESMTPSA id lg25-20020a170907181900b00a3d4b1c13bcsm694033ejc.162.2024.02.14.08.47.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Feb 2024 08:47:37 -0800 (PST) Message-ID: <86d1f3c1483d07815ad1dd542abf6038da1da24a.camel@gmail.com> Subject: Re: [PATCH v2 bpf-next 16/20] bpf: Add helper macro bpf_arena_cast() From: Eduard Zingerman To: Alexei Starovoitov , Kumar Kartikeya Dwivedi Cc: bpf , Daniel Borkmann , Andrii Nakryiko , Tejun Heo , Barret Rhoden , Johannes Weiner , Lorenzo Stoakes , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , linux-mm , Kernel Team Date: Wed, 14 Feb 2024 18:47:36 +0200 In-Reply-To: References: <20240209040608.98927-1-alexei.starovoitov@gmail.com> <20240209040608.98927-17-alexei.starovoitov@gmail.com> Autocrypt: addr=eddyz87@gmail.com; prefer-encrypt=mutual; keydata=mQGNBGKNNQEBDACwcUNXZOGTzn4rr7Sd18SA5Wv0Wna/ONE0ZwZEx+sIjyGrPOIhR14/DsOr3ZJer9UJ/WAJwbxOBj6E5Y2iF7grehljNbLr/jMjzPJ+hJpfOEAb5xjCB8xIqDoric1WRcCaRB+tDSk7jcsIIiMish0diTK3qTdu4MB6i/sh4aeFs2nifkNi3LdBuk8Xnk+RJHRoKFJ+C+EoSmQPuDQIRaF9N2m4yO0eG36N8jLwvUXnZzGvHkphoQ9ztbRJp58oh6xT7uH62m98OHbsVgzYKvHyBu/IU2ku5kVG9pLrFp25xfD4YdlMMkJH6l+jk+cpY0cvMTS1b6/g+1fyPM+uzD8Wy+9LtZ4PHwLZX+t4ONb/48i5AKq/jSsb5HWdciLuKEwlMyFAihZamZpEj+9n91NLPX4n7XeThXHaEvaeVVl4hfW/1Qsao7l1YjU/NCHuLaDeH4U1P59bagjwo9d1n5/PESeuD4QJFNqW+zkmE4tmyTZ6bPV6T5xdDRHeiITGc00AEQEAAbQkRWR1YXJkIFppbmdlcm1hbiA8ZWRkeXo4N0BnbWFpbC5jb20+iQHUBBMBCgA+FiEEx+6LrjApQyqnXCYELgxleklgRAkFAmKNNQECGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQLgxleklgRAlWZAv/cJ5v3zlEyP0/jMKQBqbVCCHTirPEw+nqxbkeSO6r2FUds0NnGA9a6NPOpBH+qW7a6+n6q3sIbvH7jlss4pzLI7LYlDC6z+egTv7KR5X1xFrY1uR5UGs1beAjnzYeV2hK4yqRUfygsT0Wk5e4FiNBv4+DUZ8r0cNDkO6swJxU55DO21mcteC147+4aDoHZ40R0tsAu+brDGSSoOPpb0RWVsEf9XOBJqWW A+T7mluw nYzhLWGcczc6J71q1Dje0l5vIPaSFOgwmWD4DA+WvuxM/shH4rtWeodbv iCTce6yYIygHgUAtJcHozAlgRrL0jz44cggBTcoeXp/atckXK546OugZPnl00J3qmm5uWAznU6T5YDv2vCvAMEbz69ib+kHtnOSBvR0Jb86UZZqSb4ATfwMOWe9htGTjKMb0QQOLK0mTcrk/TtymaG+T4Fsos0kgrxqjgfrxxEhYcVNW8v8HISmFGFbqsJmFbVtgk68BcU0wgF8oFxo7u+XYQDdKbI1uQGNBGKNNQEBDADbQIdo8L3sdSWGQtu+LnFqCZoAbYurZCmUjLV3df1b+sg+GJZvVTmMZnzDP/ADufcbjopBBjGTRAY4L76T2niu2EpjclMMM3mtrOc738Kr3+RvPjUupdkZ1ZEZaWpf4cZm+4wH5GUfyu5pmD5WXX2i1r9XaUjeVtebvbuXWmWI1ZDTfOkiz/6Z0GDSeQeEqx2PXYBcepU7S9UNWttDtiZ0+IH4DZcvyKPUcK3tOj4u8GvO3RnOrglERzNCM/WhVdG1+vgU9fXO83TB/PcfAsvxYSie7u792s/I+yA4XKKh82PSTvTzg2/4vEDGpI9yubkfXRkQN28w+HKF5qoRB8/L1ZW/brlXkNzA6SveJhCnH7aOF0Yezl6TfX27w1CW5Xmvfi7X33V/SPvo0tY1THrO1c+bOjt5F+2/K3tvejmXMS/I6URwa8n1e767y5ErFKyXAYRweE9zarEgpNZTuSIGNNAqK+SiLLXt51G7P30TVavIeB6s2lCt1QKt62ccLqUAEQEAAYkBvAQYAQoAJhYhBMfui64wKUMqp1wmBC4MZXpJYEQJBQJijTUBAhsMBQkDwmcAAAoJEC4MZXpJYEQJkRAMAKNvWVwtXm/WxWoiLnXyF2WGXKoDe5+itTLvBmKcV/b1OKZF1s90V7WfSBz712eFAynEzyeezPbwU8QBiTpZcHXwQni3 IYKvsh7s t1iq+gsfnXbPz5AnS598ScZI1oP7OrPSFJkt/z4acEbOQDQs8aUqrd46PV jsdqGvKnXZxzylux29UTNby4jTlz9pNJM+wPrDRmGfchLDUmf6CffaUYCbu4FiId+9+dcTCDvxbABRy1C3OJ8QY7cxfJ+pEZW18fRJ0XCl/fiV/ecAOfB3HsqgTzAn555h0rkFgay0hAvMU/mAW/CFNSIxV397zm749ZNLA0L2dMy1AKuOqH+/B+/ImBfJMDjmdyJQ8WU/OFRuGLdqOd2oZrA1iuPIa+yUYyZkaZfz/emQwpIL1+Q4p1R/OplA4yc301AqruXXUcVDbEB+joHW3hy5FwK5t5OwTKatrSJBkydSF9zdXy98fYzGniRyRA65P0Ix/8J3BYB4edY2/w0Ip/mdYsYQljBY0A== Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Rspamd-Queue-Id: 08AEA1C0006 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: wj8rexbdyictjfar158zu8prbmyrak6d X-HE-Tag: 1707929259-566820 X-HE-Meta: U2FsdGVkX1/zSz5i4cN2qMRcOydKo7houJhuZ09V+e2rrnunKldqYrglusbwqVIYD0pUcrqCm3P03pCaP66Ly9ZGurEoHQ99M1T8Ttsq7ujWVIDoG8HduJbxLLw59C82vw+QVazJVNkiEfrNMsLx7IgJV4KardzsOIJrsgyQ9tp8xN85EDONcW2Hy4tX1rlB5jqub9paE5meOiK2MYEUrMunJ7JoSnTbf49c5OOM9Fz6SFIIL3vG0fzKZboGfgQTDbyxBQHEbTUUqZnZPH/vXES3tpmwDZwdUJeXUIEUhY2cDsBz7RLH4fAig59WuV6VBZpgLOuuJ/JHGzspdFzDt1pPYNgTzCjdhFWKvLsWQkchncRQ+4zf0qLL0c0S/Zfd90IwgnC8xzvr5KQQaA8PrtLgh01hD5k0nEVExnilYpXSs085xEutoh5hMU5EHwkE0bAK3WurcdZHSPS1pk8z7IZeM5DfbRMVavgvrzRY7mzGVeoBXeW5sdVpuqxJSt5MpI8WsQ/v00NHmXGKoSAapEVgs201FvJvvWiJvcWOBiXvxCUfREs+J7QGgMWpaDleNxwhpAUgkFtYNx3YH3bMNhbUBlfY2WwLqS26q0mRLPMmTnhNA07sInfD+D/MPUjf+d/j1Tu47ZgxsrXH0KClRVL3SZrBDSl0DDhf3DYw2SXvvi61FHJ4RGhdOzJMz/OSpCBbBr38S5uJXlEh4R0ttR1wy4LeVnj8gspf646bvLu+KgKBti+ZRWaVNGlOQo/dYB7/8WkTCwOYTlXvYU/RAOCVNjjPc6Xp5eGu/xXXcE5SRxOI9eO2l+1Ooh0D6aQN28zVwBTM1jq2jucEp8alEaAhbAJ3s7y/0K51PnD7R3DAjQ9PEjGJawoOgOiXG6hucvX1oczfw33xFKfQlmUzMYILUW8I8r2Zu9WhaiFjeor3LIoC5ZBY518MKh12Z1eEzBFd/dmCskpGkrrdohM 1HBJB2gz uXpbE3BhbeTiX8pW/SbMJN8awSowrx5q76PG16c1vnRMdYPsQ2Lk0gBfjkyzxFW982u6/+vlMZbM4lQc/k0eHePlsnwKsRrK3vLEYXi1MsKUDiATzZUxFrLMQHQ/r/Os2sjeekw9fgPiNPkZB+dCED76LPOaT2Psx7x0+hkR9QLFad3YfgE9EFpHpUha5ySbYT7yIuhOI9WLUFoZZ5v2UAIj8HMuh4VNNmuxhK1yJbZEopJDc0V/mHPu1dm+lJ5M/K4yTDYjTNCUP/qkvduV7KYm4r6xcu1HPNMWMT+29v0hsv5KfN/+WuBylbCUALtXDJS4F8YRHs1KRKqQNa4FlKAK0lufcAAnupSUEnEGI1tlIrjJFLOvapE3bUmEzlzTlE1bohzfMaReBhbi8IiJlGKVdB+9Sm87aXhnBgWoIWvz1m+DrDRnR2ALyHmXjaG4lmBI0/ZY70z2hXvp4Gm9myVDAOhs/lDJ7rvHl6x/NLI8DRXubUb9QiG37sa2gjP4PRfo6KWgueHvIeR3uIe7F9HBP4lfhpc/RTAgWY4JQaK1CWdY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 2024-02-13 at 14:35 -0800, Alexei Starovoitov wrote: [...] > This arena bpf_arena_cast() macro probably will be removed > once llvm 19 is released and we upgrade bpf CI to it. > It's here for selftests only. > It's quite tricky and fragile to use in practice. > Notice it does: > "r"(__var) > which is not quite correct, > since llvm won't recognize it as output that changes __var and > will use a copy of __var in a different register later. > But if the macro changes to "=3Dr" or "+r" then llvm allocates > a register and that screws up codegen even more. >=20 > The __var;}) also doesn't always work. > So this macro is not suited for all to use. Could you please elaborate a bit on why is this macro fragile? I toyed a bit with a version patched as below and it seems to work fine. Don't see how ": [reg]"+r"(var) : ..." could be broken by the compiler (when "+r" is in the "output constraint" position): from clang pov the variable 'var' would be in register and updated after the asm volatile part. --- diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing= /selftests/bpf/bpf_experimental.h index e73b7d48439f..488001236506 100644 --- a/tools/testing/selftests/bpf/bpf_experimental.h +++ b/tools/testing/selftests/bpf/bpf_experimental.h @@ -334,8 +334,6 @@ l_true: = \ /* emit instruction: rX=3DrX .off =3D mode .imm32 =3D address_space */ #ifndef bpf_arena_cast #define bpf_arena_cast(var, mode, addr_space) \ - ({ \ - typeof(var) __var =3D var; \ asm volatile(".byte 0xBF; \ .ifc %[reg], r0; \ .byte 0x00; \ @@ -368,8 +366,7 @@ l_true: = \ .byte 0x99; \ .endif; \ .short %[off]; .long %[as]" \ - :: [reg]"r"(__var), [off]"i"(mode), [as]"i"(addr_space= )); __var; \ - }) + : [reg]"+r"(var) : [off]"i"(mode), [as]"i"(addr_space)= ) #endif