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 CD23CC48BC1 for ; Wed, 14 Feb 2024 17:45:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4F7DF6B0089; Wed, 14 Feb 2024 12:45:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4A7D06B008A; Wed, 14 Feb 2024 12:45:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 36FC66B008C; Wed, 14 Feb 2024 12:45:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 23E9E6B0089 for ; Wed, 14 Feb 2024 12:45:45 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 84F1C160E6D for ; Wed, 14 Feb 2024 17:45:44 +0000 (UTC) X-FDA: 81791137008.07.94EE62D Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by imf26.hostedemail.com (Postfix) with ESMTP id A1DA914001A for ; Wed, 14 Feb 2024 17:45:42 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QZWf6RYN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707932742; 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=XRnImQ9uQNGNma8u5QxFrBkc6zo/zvivQCNl6ZYCdKg=; b=BF8trz8Pcy3vFmvXUgdX0pQ0ptj0UFQrFMoNb8GrsEZkP8KDGfSuYb1vbXuMYoJ7C6sLI+ ObkiUKImD1QjYGiAPf6yrIVt81habe5L0YEC510bQrEA0wJGokqJpRyPDX7l0QkeCnpXUF Nyuq5TXw65xv6Kh3q0y1e+q3YT1xlgQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QZWf6RYN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707932742; a=rsa-sha256; cv=none; b=JlnrBCoKNizHpWB86ozSqB2PlypXfCETMhEK2PYQ5lVdYiMDqd6f7eXDzueRq1Sj64vdv9 mtEPMwaxXDc5rWBndtInxxXUmEejqQN8Eju3ZdtyqvhJanQLnn/SE21R7hP3NmaZBg9xIW rJco508ncccjWWUaM25UOYCNNqQbJIE= Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-337cc8e72f5so4016211f8f.1 for ; Wed, 14 Feb 2024 09:45:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707932741; x=1708537541; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=XRnImQ9uQNGNma8u5QxFrBkc6zo/zvivQCNl6ZYCdKg=; b=QZWf6RYNWsILeCdvVscdcTSL7YFC5SxJvu7+fiC3fRnIwDchFn32jxkS88shdlRYVC ByD1QHRY0IjMPpyeIJ8DnCzqR5vmCVsORMaiJpZD1wTDyP2sQyXf/Ou1P/q9Hv1faJK3 S67csXnwY6A3iY2WcIwqUD7Wsmn/oyfmVdsUIcaFbsKJU2zMeyxwDy/H9CWgd5U0fpdn Wxlik/27d51EAmZgXMk5sVK1H0CJM8L8jSTGzG8ooVERu5CFOCBJy2pfdf7lUO1Ppps4 H8sgjeYoW9gZqlA0y4/dCerGCiFdzQgfXUT4j6wUzdmG1Dh2pRQywAYIpXfrxCY0lmc4 gh6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707932741; x=1708537541; h=content-transfer-encoding:cc: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=XRnImQ9uQNGNma8u5QxFrBkc6zo/zvivQCNl6ZYCdKg=; b=RxYNTOj0ftSOmDSiGOsJHCoFGVxgTNYMxvzc12MSiGuvw2zDaKkpdSjPICBt7FSsvF +gqDvP7RZonWeCgL6qgzBB+iYU1Z+bkNqqJPfnYaC4TM0zId3bDWHeVLMpjMwDeJw43U 33Wyg2xp5pT4e/gWDhzkI1/6F4g9EwALlnJsawTQkZCncwIjYLc1O/5o5tMA8eu89Q1o oTMEORTtyzXYeZCofoxaW0D3ViPtGIAF3W9G90gLflvRY3xSoUTPRfqV4aN0KPwlKgG2 dN/bC8hClyMiFAESOH9EogIi7b7+7v9DrXyyV2lFwMnRFhr9vJElBKvu0UzeSefaP4mS R3LQ== X-Forwarded-Encrypted: i=1; AJvYcCWMnNkkrrzh2G/tA6OgMMkv/AOO9o3dTRS9/GQ2PyAQXThL7JnCSbVy3sC7j9TsFT7jCh74hUmrwWizD9Wa3PkhuYo= X-Gm-Message-State: AOJu0Yy5FrtbYfyMqb6f2i6kQI3+2z895ueY2jHijwwcUSyRQ8omYMwZ Jx4WksvvPvo7uzoC3ehCjsyisY0IWOA2/ezAXCTHPw2Z/BV+r6Sc0WkAJKSWS1sxjfN8dIsvWUB 7ByGqv/1UTfDLjlzffUpi9FSQ2fA= X-Google-Smtp-Source: AGHT+IEvnWdPGyANBhQyWpY5MEDDuPQQKY9U5zDC7KouTbQemr995NrQ8zf7AR/TvaBlj54W1Odqa7YTbdxrBjHrbKc= X-Received: by 2002:adf:eac5:0:b0:33b:7b43:4ea4 with SMTP id o5-20020adfeac5000000b0033b7b434ea4mr2096763wrn.28.1707932740781; Wed, 14 Feb 2024 09:45:40 -0800 (PST) MIME-Version: 1.0 References: <20240209040608.98927-1-alexei.starovoitov@gmail.com> <20240209040608.98927-17-alexei.starovoitov@gmail.com> <86d1f3c1483d07815ad1dd542abf6038da1da24a.camel@gmail.com> In-Reply-To: <86d1f3c1483d07815ad1dd542abf6038da1da24a.camel@gmail.com> From: Alexei Starovoitov Date: Wed, 14 Feb 2024 09:45:29 -0800 Message-ID: Subject: Re: [PATCH v2 bpf-next 16/20] bpf: Add helper macro bpf_arena_cast() To: Eduard Zingerman Cc: Kumar Kartikeya Dwivedi , bpf , Daniel Borkmann , Andrii Nakryiko , Tejun Heo , Barret Rhoden , Johannes Weiner , Lorenzo Stoakes , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A1DA914001A X-Stat-Signature: ij7mo6z13j66bua7sbdhi5y9qacisd7s X-HE-Tag: 1707932742-705331 X-HE-Meta: U2FsdGVkX18aH3aeMG/g7h6u5yPN9USPkNDHQZf2TluSuDOndMX+d4ikb0k94M751OWjkOmWqv2KO9ws4u5NZ3iOAYgjkfQ/lyHT0BHJnk53JEHpUiP6Lm9DwDqI5Jes/SYTDs88zXFgSOxtWgNYjp6ItIMPgxKpJ3SwLldmF1H8A0WCGIdKDfa8OD2cf0j7KqSiwTOt11XXoQfrWI21EhmPm+VdoHCDn0ocj+wMPq3PpwxjhyA8jl2nfvh1oaXunIbgojkXkMw+klB0gGATYEYzMbURshV7RPyK4raZGkCyWdL0mW8b4sB9hKnD6Bw9EhcOix9ZRRpVSO+p8tTkV1BXMJJXruCunxMSjo4eDxW/qv3pq2oyn/hSnmNKQDBrOxGGupg8Jv5AmiJHrfziIO/HdyETWzO5NFNa3W6qPG9fIQ6NjkFvKO2fOqTlNCNOFYU6HbE7+AucPOF7dJzRFo4FKDc3FBKChwbd6P9Cw6B+1uxZdKTDwIRQ4bNOoC5GbyZufY+AgQsUwhLRulzT3zOfqXjvPPpVN+MzOOfroHs/PBr6Ixi5D0LmG3XdXBP+UyMYphzRd44tHZEcx5Fs0pP0wRzX/eHWRkae8DtTO6mJwTW8zAOIY+vk0jN7mMn7EXFSZNqBLQlYmWZdJqv+sOhG5ML4xGR8f/lwdruiv0wl2M3fbMQxT/K6x1AcJ5RAdd4FTMbMGrPpybsA+LFvNu8mtgw1TmMJ/GNyyvgXYNdQ/KkCVxGJ83gFBFJ7PUvLI8jXkWBbv/X2ujzfAE3nDt6f6r3201yu/LmcZMMNr9SzpJyJGnaQLHRzU9t65mh8tiY+afNhzZaQEGnHvq7Jcs79+0zI1l9Agfdi0+6h4Sc+FuBzUwU28pQckBPNgZOH5SF1ohHUrwMNaMqrh7Gio7wUynqpRzV/n2QGditV2wrRZi4jDFzEVFdfuHbt79OJ67OpLPKBlOhLng1lViz M+Vk6450 rnPFsFxO2isu5ao6kiM/yI6aCoMkacbc1cZpDaUaSL4lz1lPiEcGIcInNGqernbwyVrPnoLEVrYaTnjnY000f0VrzfuTMOpXn4DYI5a7nmiy7oCFzZFQNAWTtelJw8NnVGWO8XZKkkemdUAeub4Mhro7u/hzwK3AIFrbxdsl2/hehDuT7/kOwrI2/mLax1Vi337yLOzHmm67s9bf34RLPfav7PC/vZqu8nHDwBAbonHlqLZxeOT7gPcRHLYzA9j1V8etY3RYG4UABNUXMvhaHgp4uiJzvm4swxifzjw7NpAtKFgoebqk1fzNa6yTyRJVoQfUcJAHSRmOE7w2+ZsasjpHIGp6q0Y+5EVcJzeHN4aft29M7BM0yFfmy08EikEb+Bj6lMo9uQJn/tvQ+oFUvLyboB7WIIKUnqx4tnpJm8z2oe+TtXU6Dh9cWZMaLE+Aq/hpyCVoPCtgo8pk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000748, 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 Wed, Feb 14, 2024 at 8:47=E2=80=AFAM Eduard Zingerman wrote: > > 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. > > > > 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/testi= ng/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_spa= ce)); __var; \ > - }) > + : [reg]"+r"(var) : [off]"i"(mode), [as]"i"(addr_spac= e)) Earlier I tried "+r" while keeping __var. Directly using var seems to work indeed. I'll apply this change.