Received: by 2002:a05:7412:d1aa:b0:fc:a2b0:25d7 with SMTP id ba42csp1490356rdb; Tue, 30 Jan 2024 23:16:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IFUFQwpSro4BPk1w+rZKpvRNRO5nek50/Pbe9dlQXJWXTtjSTVr/dOQhwUJYIICKPExP/9O X-Received: by 2002:a05:6402:371:b0:55e:aca4:aab5 with SMTP id s17-20020a056402037100b0055eaca4aab5mr429026edw.36.1706685390104; Tue, 30 Jan 2024 23:16:30 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706685390; cv=pass; d=google.com; s=arc-20160816; b=RhgDr17F5zKDmR+913efs9m9LC1bMClTOm4YiKkUyKiL2mI3WRGgHOPIwwfFox0b7K OXqwKh1OOlqifQMKq6dgjMR6tsbMh/WfHQ0oAS7apUPtjRumAc7QVzEGaPcV5xwRNOTX Rl68WhVdyaCbvsQUBZIYr0l10vWZLYcPSJT0oVJT2CAgrfrmWeRwrZ0veRhkMyn4jHTN Qo91GrUwicj4GToPDG54n+Lm7jxWmQ+VvnLt49Trrh4U1bprw1T4/m51J65hW8bIjm/U A5c2EIm+F3ihXVnnf9j6RHOj6YTJgAey3MSHMrkuum1pgzmXVV2bSbKPE330/d1CHFwf lCIw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :dkim-signature; bh=MVBkqsMuwgdY4KI6ix6aEkoEevSyfYkrtUzZmLQpqRs=; fh=exV0sDGjF30iqjKR9nA5EB6PDyR7VILbqy7Ce1xEyQc=; b=Gj854qOHAX6wkKvAF9OBz2TdbhzjJbDw3OW0O3xkt/umU6JT1hKngp52sJ4tWRrRND VEfZ1zIws2vQHgNt0jPppRLRWYJ1BA688b+++npZS/kBlRTgPRB/Kl/eL6tJpp+uAXAw KHGIQgGTpMw7r5ppnxdw3g2r2NqusABoxSg0ovMjxmRBUqeRy1hQQD358O1qO8wNo1rR 6K6GpnvTe/RoJ9mK/enJMLgjHhQ20J2y26RIMhgN6Qh1vA7IE53ks1SjzhHcoDpzHUde pW23Hf7wXtcacJDQ/tMu712/o3Ve7G4T6ddtn3YUsg+QtKgO4807BK7AIhIFklTTg/EH vyOQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WRMVNJB6; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-45882-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45882-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org X-Forwarded-Encrypted: i=1; AJvYcCXvuLfQW3u7d+yZ85FNnmlgn4tzdElPY8dNhDOuNxJbDfV1mBpp0i6M2a27ZE0FWGt+LiV0hbhcmhV3gOQo9V0ruEumuQCk2IVAuOAgMg== Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id n17-20020a5099d1000000b0055f63fd6152si630270edb.602.2024.01.30.23.16.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 23:16:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-45882-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WRMVNJB6; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-45882-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-45882-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 943DA1F260A0 for ; Wed, 31 Jan 2024 07:16:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 15C4656471; Wed, 31 Jan 2024 07:16:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WRMVNJB6" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E85D55C18 for ; Wed, 31 Jan 2024 07:16:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706685378; cv=none; b=TIOGF+F8b4luC372lEaD+Yes9dSrvJea6HzHnLEKC42md/LOAzbsJ6ZEtS1YekL90BhowYya/9XQiq4eu1Bys8KF+QOkEEY/hvbN0i5vfh8b3B8M46dD6e5jt56FfHJjDzH1LU9iBDXuWe9NosoNLncFFD0zH8kruOAJAPOzJto= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706685378; c=relaxed/simple; bh=bxaTZPOIsT8/v/Vj4KDp4NSxc016wqx9zKxXiJMGM60=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=DEQk/H8uvjX2RNvBON09RAFnRcOYFLjrK6iqTdUOuJMalpZnAqjZf2fKemPiaWoXKaOWFfiGKAH5A5IZeOw2+v4hRAV1u3rIQTv1tuIkdk1qUtW6OpFoNhBBXOTfMN+e1JbznJ2ArcP1vnugOtTSYT4W1k4RjMfUkfkPcWx1t7Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WRMVNJB6; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D3EAC43390 for ; Wed, 31 Jan 2024 07:16:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706685377; bh=bxaTZPOIsT8/v/Vj4KDp4NSxc016wqx9zKxXiJMGM60=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=WRMVNJB6gIbwUFbPJsGgU4P0PIVAuXr1sk6RkyldhhlOyx+IJe8tMO8drzB06KIMJ cyUEVpZNeezdTCYRpVO+L1mO3vL6TEEkA29zNQO+bbpXalQ5JFFX1qp84hTIZNxwBB LWMVL0Yorq6OQNG3XE3UoF14X8yF7rxzhDS0hlL89ep5d6xHkD0ZTwK2xsSQf/Nh4x GKn7rByogCFMDR99zsMwkRvgomcibqE77Xe3RUY12K2cy+T36H5bel/++kf6DGiOoi KVpcfAwehQp3DBV7ltJm5csGvpfD5mGkt0zsX0pzOUN2oCxtnuytu4W82xlHG2Mwtp I0SF8HFzBrF9g== Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-51124d43943so537734e87.2 for ; Tue, 30 Jan 2024 23:16:17 -0800 (PST) X-Gm-Message-State: AOJu0YybLjrW2OynLjv89g03Mmqs5NTNjA9b/15RKSMtc+lavWxGJ8Sk M2raBq5kTIeNPRiz/kbqDBstxFcYOJV9dZOZIkWBlvLwzT8rxZzrSxShqi+nU2D/PWshPIppyhf hL6+6+o3UxuU3VIiUa6iUYRF25d8= X-Received: by 2002:a05:6512:449:b0:511:150f:6363 with SMTP id y9-20020a056512044900b00511150f6363mr560083lfk.32.1706685375813; Tue, 30 Jan 2024 23:16:15 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240131065322.1126831-1-maskray@google.com> In-Reply-To: <20240131065322.1126831-1-maskray@google.com> From: Ard Biesheuvel Date: Wed, 31 Jan 2024 08:16:04 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] arm64: jump_label: use constraint "S" instead of "i" To: Fangrui Song Cc: Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, Jisheng Zhang , llvm@lists.linux.dev, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Hello Fangrui, On Wed, 31 Jan 2024 at 07:53, Fangrui Song wrote: > > The constraint "i" seems to be copied from x86 (and with a redundant > modifier "c"). It works with -fno-PIE but not with -fPIE/-fPIC in GCC's > aarch64 port. > > The constraint "S", which denotes a symbol reference (e.g. function, > global variable) or label reference, is more appropriate, and has been > available in GCC since 2012 and in Clang since 7.0. > > Signed-off-by: Fangrui Song > Link: https://maskray.me/blog/2024-01-30-raw-symbol-names-in-inline-assembly > --- > arch/arm64/include/asm/jump_label.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/include/asm/jump_label.h b/arch/arm64/include/asm/jump_label.h > index 48ddc0f45d22..31862b3bb33d 100644 > --- a/arch/arm64/include/asm/jump_label.h > +++ b/arch/arm64/include/asm/jump_label.h > @@ -23,9 +23,9 @@ static __always_inline bool arch_static_branch(struct static_key * const key, > " .pushsection __jump_table, \"aw\" \n\t" > " .align 3 \n\t" > " .long 1b - ., %l[l_yes] - . \n\t" > - " .quad %c0 - . \n\t" > + " .quad %0 - . \n\t" > " .popsection \n\t" > - : : "i"(&((char *)key)[branch]) : : l_yes); > + : : "S"(&((char *)key)[branch]) : : l_yes); 'key' is not used as a raw symbol name. We should make this " .quad %0 + %1 - ." and :: "S"(key), "i"(branch) :: l_yes); if we want to really clean this up. > > return false; > l_yes: > @@ -40,9 +40,9 @@ static __always_inline bool arch_static_branch_jump(struct static_key * const ke > " .pushsection __jump_table, \"aw\" \n\t" > " .align 3 \n\t" > " .long 1b - ., %l[l_yes] - . \n\t" > - " .quad %c0 - . \n\t" > + " .quad %0 - . \n\t" > " .popsection \n\t" > - : : "i"(&((char *)key)[branch]) : : l_yes); > + : : "S"(&((char *)key)[branch]) : : l_yes); > > return false; > l_yes: > -- > 2.43.0.429.g432eaa2c6b-goog >