Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp7044963ybi; Thu, 13 Jun 2019 08:38:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqxhziHRNqLnHJVTD6ixFi2HUni5+93vwWE8ITcarjGqghy62N2YZIUzmQUMDsEkV1JnX4BC X-Received: by 2002:aa7:8d89:: with SMTP id i9mr54050898pfr.77.1560440328646; Thu, 13 Jun 2019 08:38:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560440328; cv=none; d=google.com; s=arc-20160816; b=OYKyERf3eQ6QZVZbTVXCYYjPfCdWcyaapdVjSGpDU3wPY/zE6QgVGiFO6nLpLxFRj9 Yg3L2bV98+yYuLpvxQBke0UsKt18xV1i0yodrZ7MBaIV8EHIX69cfH9/3ZimxbN8tHX9 /q5ktaUdhRbSCv6mNAjFKVIISzJwOx38oTM4bdaSFugVdpVId0bJV/HKCxG9kgjuQNeW TwOWGrTDSqdS4DXzXQNxTVa72ZZZ4fSyHQ46Wdq68iNp6TXJPrWN0XDE1u9kmUilR76b ZuLYH/ZiHSrpxddm+9no1qvw9ZAUjZNXg38AOQdCXD2DG/xgF5ZAnuuDHpKf/gVGDSFG hhww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=2348l/FeKO0fLrf6ja09AX8q1M6U7lCPDnZtWG1Smhc=; b=gcvuUabCGg6CmSPoEa43a7BCaoeE7nYeQMKnQIOf2mKZB9RV5VD2HdkFMd3ZwC04vS oBuF/e7NOnM5MQ9sQk+ZyOJ+T5jw4u3a4AcxDgqelii0GB0rrCtL79BmWM/Ub/BxybG4 1jND2IChhBaXp5pQpNFesfSMabkTiYQXLmv1hSqZtqjSoqVp1p0kceVEkrob89wTtKOQ QoIzQ7l/ko7SCX2zV4i/oLiRuCvkw2b/wLQOeaA7e4n0CsluwGalPuoP9EjPP8zIHrpN WGm8S6DsqwdYipmjZBiUBEUGL7ueFTDnr4naV5Q2FAs6eK0TknLMUsO7Hn+Q/vp+J0aI qkfw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w185si3698313pfb.170.2019.06.13.08.38.32; Thu, 13 Jun 2019 08:38:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731983AbfFMPgU (ORCPT + 99 others); Thu, 13 Jun 2019 11:36:20 -0400 Received: from app2.whu.edu.cn ([202.114.64.89]:50524 "EHLO whu.edu.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727379AbfFMKUJ (ORCPT ); Thu, 13 Jun 2019 06:20:09 -0400 Received: from localhost (unknown [111.202.192.3]) by email2 (Coremail) with SMTP id AgBjCgBHTvZJIwJdy3VkAQ--.48697S2; Thu, 13 Jun 2019 18:19:59 +0800 (CST) From: Peng Wang To: peterz@infradead.org, mingo@redhat.com, will.deacon@arm.com Cc: linux-kernel@vger.kernel.org, Peng Wang Subject: [PATCH] locking/rwsem: save unnecessary rwsem_set_owner() after slow path Date: Thu, 13 Jun 2019 18:18:09 +0800 Message-Id: <20190613101809.16231-1-rocking@whu.edu.cn> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: AgBjCgBHTvZJIwJdy3VkAQ--.48697S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Ar4ftr17GFWDCrWxJr4kCrg_yoW8JFy7pr 1FkFyqkr9FqFy7WrZrJa10va15Aw10yr97GanxCrW8AFnxAF4xJFs8Wr17tFy8GFyIkrWY qF4fCFWF9ayxKrUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkq14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4U JVW0owA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY02Avz4vE14v_Gw1l 42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJV WUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAK I48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r 4UMIIF0xvE42xK8VAvwI8IcIk0rVWrZr1j6s0DMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF 0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7VUboKZJUUUUU== X-CM-SenderInfo: qsqrijaqrviiqqxyq4lkxovvfxof0/ Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org rwsem_down_write_failed() and rwsem_down_write_failed_killable() return with sem->owner set if acquire semaphore successfully, so we can skip rwsem_set_owner() to keep pace with reading. Signed-off-by: Peng Wang --- kernel/locking/rwsem.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/locking/rwsem.h b/kernel/locking/rwsem.h index 64877f5294e3..4fa21f737151 100644 --- a/kernel/locking/rwsem.h +++ b/kernel/locking/rwsem.h @@ -225,7 +225,8 @@ static inline void __down_write(struct rw_semaphore *sem) &sem->count); if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS)) rwsem_down_write_failed(sem); - rwsem_set_owner(sem); + else + rwsem_set_owner(sem); } static inline int __down_write_killable(struct rw_semaphore *sem) @@ -234,10 +235,12 @@ static inline int __down_write_killable(struct rw_semaphore *sem) tmp = atomic_long_add_return_acquire(RWSEM_ACTIVE_WRITE_BIAS, &sem->count); - if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS)) + if (unlikely(tmp != RWSEM_ACTIVE_WRITE_BIAS)) { if (IS_ERR(rwsem_down_write_failed_killable(sem))) return -EINTR; - rwsem_set_owner(sem); + } else { + rwsem_set_owner(sem); + } return 0; } -- 2.19.1