Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1695138pxb; Wed, 9 Feb 2022 02:24:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJwhkqkAQRGSMffffhjJo+pc62rBcrqvn+6lClniPBBcovLZ9WV4fsAljbSjM+hqcTqWFot8 X-Received: by 2002:a05:6a00:26e9:: with SMTP id p41mr1523693pfw.1.1644402293391; Wed, 09 Feb 2022 02:24:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644402293; cv=none; d=google.com; s=arc-20160816; b=b39dcxt+CyTY5n8McpoSLi0CT8ocaC0GSZpXEbeNvIgzQsLm5JoAYAU1GlynQkqw87 EzYIMuQv94ihOC9sk/RvDEZQWRCu/UPgCeBM2Ni/GZ/v+HfPgXxM9QNYMDQxJoxCgjZe Wdam/K+o53ytxSQSz2wb6hgAHUU+K8TMw3cGWSSBFPgheFS6ErcYF2uM1xTa3GNy7Kh3 dwDQg0B1ZYhoGNZg/U+Qd+bc20BhYiEFx+U++awHg01SH3fZjeSaPh9mkIyicbY04j3J dgkS2wjXxlZQOj/6l9H9eo2ijjhO9LAZDgLGAwNXE9RmsoYbzxlTMicZQrYJ3COvJ4hF HGeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:dkim-signature:dkim-signature:date; bh=n66/HLGuwk6U4j6T7sevm8VzSk/spXLEB/Pd7EnsaHo=; b=c0oNF48km43w1WRXoAEQc3BQYM1SgEY1RYi9fBIOwNvl2g6ujFLSQIjfBgae+WKtHQ LF9NjOrjBkmwjCVsyU/0vETG7lbw0U1ulkB6M9CPGkCR9YU1N76OY9ugwXiG65jN+q1K +t6nRKgyCzMDw0+4+lsDkmxNRt+ppXLPgfAqKui6KLDh3FzOrA6hj5QR/oInI+WHzhWp CzmP6H8/c3tpoIZHJwg4R/mYNwzEzzfVv19pYcDsuna8wOFfeyffY8iQeA5GO4wUmuvp c27FXnb89LByVqCwi97eZrOKLJMR7VZesq3+8wL/f9/tbfTKyREGiEg556sBn7qdgKzJ BEmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=nE5OCZkO; dkim=neutral (no key) header.i=@linutronix.de header.b=WkYuJ9bz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id mi11si4508171pjb.124.2022.02.09.02.24.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Feb 2022 02:24:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=nE5OCZkO; dkim=neutral (no key) header.i=@linutronix.de header.b=WkYuJ9bz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DA1B5C10368C; Wed, 9 Feb 2022 01:19:57 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1383708AbiBHRII (ORCPT + 99 others); Tue, 8 Feb 2022 12:08:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383626AbiBHRIH (ORCPT ); Tue, 8 Feb 2022 12:08:07 -0500 X-Greylist: delayed 834 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 08 Feb 2022 09:08:04 PST Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB7E9C061578 for ; Tue, 8 Feb 2022 09:08:04 -0800 (PST) Date: Tue, 8 Feb 2022 18:08:02 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1644340083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=n66/HLGuwk6U4j6T7sevm8VzSk/spXLEB/Pd7EnsaHo=; b=nE5OCZkOWASD252K/yqL0S/VkkBfDUUfzYab0D4nV9Ej/825xP3Hj6TfbOiBxP8Y771M7B lZCgC3drp0g3g1wGhfmHg4ZBvK3mYp48R2cK7lKJLdNreWolCD+d26Dp4VtUfKiDExj3mh zfkkChKpJs+Bgc9D/nyDLVYOMEkUCOGs7gO+RZuTP4u5mc52hXCvaDdN+5bDRfxKUM7kbj 37DJUra3anwNPqPE06zCgDyS0kKjIdcXZYk9tASEBAh3+rIiaxKjSQGQjrQH9JN3OvcNBM qggsFoEB3kHOcZiyvdbCSSW/DmSKSEd7D4NUF51ipG7qRB3RXPc3uqJUp9y/LA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1644340083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=n66/HLGuwk6U4j6T7sevm8VzSk/spXLEB/Pd7EnsaHo=; b=WkYuJ9bzgkebWvxdytpuU8cmInv0m7/974knsvzEfjkECmfUCiqy2g45e+2ZkYfE51jJs1 vX10mfW/uin0OZAQ== From: Sebastian Andrzej Siewior To: linux-kernel@vger.kernel.org Cc: Peter Zijlstra , Waiman Long , Ingo Molnar , Will Deacon , Thomas Gleixner Subject: [PATCH REPOST] locking/local_lock: Make the empty local_lock_*() function a macro. Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It has been said that local_lock() does not add any overhead compared to preempt_disable() in a !LOCKDEP configuration. A micro benchmark showed an unexpected result which can be reduced to the fact that local_lock() was not entirely optimized away. In the !LOCKDEP configuration local_lock_acquire() is an empty static inline function. On x86 the this_cpu_ptr() argument of that function is fully evaluated leading to an additional mov+add instructions which are not needed and not used. Replace the static inline function with a macro. The typecheck() macro ensures that the argument is of proper type while the resulting disassembly shows no traces of this_cpu_ptr(). Signed-off-by: Sebastian Andrzej Siewior Reviewed-by: Waiman Long --- Repost of https://lkml.kernel.org/r/20220105202623.1118172-1-bigeasy@linutronix.de include/linux/local_lock_internal.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- a/include/linux/local_lock_internal.h +++ b/include/linux/local_lock_internal.h @@ -44,9 +44,9 @@ static inline void local_lock_debug_init } #else /* CONFIG_DEBUG_LOCK_ALLOC */ # define LOCAL_LOCK_DEBUG_INIT(lockname) -static inline void local_lock_acquire(local_lock_t *l) { } -static inline void local_lock_release(local_lock_t *l) { } -static inline void local_lock_debug_init(local_lock_t *l) { } +# define local_lock_acquire(__ll) do { typecheck(local_lock_t *, __ll); } while (0) +# define local_lock_release(__ll) do { typecheck(local_lock_t *, __ll); } while (0) +# define local_lock_debug_init(__ll) do { typecheck(local_lock_t *, __ll); } while (0) #endif /* !CONFIG_DEBUG_LOCK_ALLOC */ #define INIT_LOCAL_LOCK(lockname) { LOCAL_LOCK_DEBUG_INIT(lockname) }