Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp433593ybg; Wed, 3 Jun 2020 04:45:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzX7jcbvYstKsegj8gFn+Gd/wUdx1jDNUvA/sEqC6/616MPZ6mh8LK7ejVVOhwuUBqs8pp+ X-Received: by 2002:a50:8fa1:: with SMTP id y30mr2430047edy.86.1591184708117; Wed, 03 Jun 2020 04:45:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591184708; cv=none; d=google.com; s=arc-20160816; b=Vu9LOh9QFTQDyMu3V8gsIs+eVhktqrRXD3tstJaUrWqw9xmQ388uEGVNgZJpMkgxhY bfSytDupDIkgXBU9AQ5gB7R52koQHSru96VP4P7hiAm4V8UlCRHOA9iDsNuGunzrnPS2 k3Rkcmil87oxwCv7CbXuQGu2tOeFvZANv8LPOhoDgDNsY9ygRcRsnY2B12Twm3MLQz7P NcuYQko2RYa5TSKi+pgCi+ZVrUANSGk6X2Kxjb28M+/u3++uy646vJQa3Ok9Gz/6uRMH 7jSEctksDWBNzhQaXHkUtHP5TK6vuX+Rwj1eXk08M9pRwe55ggbTkhm3dDBoMnbx1/eD D6nQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:subject:cc:to :from:date:user-agent:message-id:dkim-signature; bh=eh6qLnMP01li+GkyBkwrzOvionWO+kwixZvAmy7LHzM=; b=XUZBx8wrXiWIdbHrjuLILH//AYbF333gSyyg69O6747uxPKd8NgjRGrA0y/VdHy02C e20ig4tDavquK/3gzZ4OrQ89DYIT0Ah325xAjURqIsqXYJ1IbJtdeImG/LLk8WPvAKxV AizsA0Za8Tss5dOMNVXxg8qIl0AT59u9KxH20xITULeN/1Ncik4ax+iyRwxlkQRmPx/B oCTJnVTFCHCF2HU1q2T7R2rT0cwkGubKtxQFUrAVgEbcmivJj8tzyJLELqf2NDSkF89I AmnkLH8wziyeKRwna4Nccelob0iWQDx9WbiS1NPU3OsbRJSNRIZVamZP3rwXoUvW/9BH +NxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=POFaItYR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w24si952287edv.588.2020.06.03.04.44.45; Wed, 03 Jun 2020 04:45:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=POFaItYR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726095AbgFCLme (ORCPT + 99 others); Wed, 3 Jun 2020 07:42:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725859AbgFCLma (ORCPT ); Wed, 3 Jun 2020 07:42:30 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B60DDC08C5C0 for ; Wed, 3 Jun 2020 04:42:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Type:MIME-Version:References: Subject:Cc:To:From:Date:Message-ID:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:In-Reply-To; bh=eh6qLnMP01li+GkyBkwrzOvionWO+kwixZvAmy7LHzM=; b=POFaItYREuZql064eNyKjN7QRB 2DR2JV/dicM33EI8cd0q/J44uw1HA/Jj5h1PY0kJLwmjbPUZkqP0/yJqYJp/aaft8PIyXtQIShPgs BaTV+L9M4QCfw4dp0Hfjcuuakxifv+U0dWewO7EzH0qt91abOdLm14UOOnX1xDuMsbQiUPWHMmdCo zQR644MOGX9Lj0wyMJ5oIie/N+/UMUMR6LOLQjHDEj9Xeq0jm3gk67ag0yci6Kz9vuy9FUDTBWp4W RnCo3YnmobdUFtxP8Xq4atORNe/ZurpJzSRf2bqiy/bsHivkK0Yl2WXw5w7PLYOf9r+e4XV9zfWq5 Ad/y9A+w==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=noisy.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jgRmt-0005jt-8m; Wed, 03 Jun 2020 11:42:27 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id BC2D9306064; Wed, 3 Jun 2020 13:42:23 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 0) id A8020209DB0C0; Wed, 3 Jun 2020 13:42:23 +0200 (CEST) Message-ID: <20200603114051.896465666@infradead.org> User-Agent: quilt/0.66 Date: Wed, 03 Jun 2020 13:40:16 +0200 From: Peter Zijlstra To: tglx@linutronix.de Cc: x86@kernel.org, elver@google.com, paulmck@kernel.org, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, peterz@infradead.org, will@kernel.org, dvyukov@google.com, glider@google.com, andreyknvl@google.com Subject: [PATCH 2/9] rcu: Fixup noinstr warnings References: <20200603114014.152292216@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A KCSAN build revealed we have explicit annoations through atomic_*() usage, switch to arch_atomic_*() for the respective functions. vmlinux.o: warning: objtool: rcu_nmi_exit()+0x4d: call to __kcsan_check_access() leaves .noinstr.text section vmlinux.o: warning: objtool: rcu_dynticks_eqs_enter()+0x25: call to __kcsan_check_access() leaves .noinstr.text section vmlinux.o: warning: objtool: rcu_nmi_enter()+0x4f: call to __kcsan_check_access() leaves .noinstr.text section vmlinux.o: warning: objtool: rcu_dynticks_eqs_exit()+0x2a: call to __kcsan_check_access() leaves .noinstr.text section vmlinux.o: warning: objtool: __rcu_is_watching()+0x25: call to __kcsan_check_access() leaves .noinstr.text section Signed-off-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/20200603084818.GB2627@hirez.programming.kicks-ass.net --- kernel/rcu/tree.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -250,7 +250,7 @@ static noinstr void rcu_dynticks_eqs_ent * next idle sojourn. */ rcu_dynticks_task_trace_enter(); // Before ->dynticks update! - seq = atomic_add_return(RCU_DYNTICK_CTRL_CTR, &rdp->dynticks); + seq = arch_atomic_add_return(RCU_DYNTICK_CTRL_CTR, &rdp->dynticks); // RCU is no longer watching. Better be in extended quiescent state! WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && (seq & RCU_DYNTICK_CTRL_CTR)); @@ -274,13 +274,13 @@ static noinstr void rcu_dynticks_eqs_exi * and we also must force ordering with the next RCU read-side * critical section. */ - seq = atomic_add_return(RCU_DYNTICK_CTRL_CTR, &rdp->dynticks); + seq = arch_atomic_add_return(RCU_DYNTICK_CTRL_CTR, &rdp->dynticks); // RCU is now watching. Better not be in an extended quiescent state! rcu_dynticks_task_trace_exit(); // After ->dynticks update! WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && !(seq & RCU_DYNTICK_CTRL_CTR)); if (seq & RCU_DYNTICK_CTRL_MASK) { - atomic_andnot(RCU_DYNTICK_CTRL_MASK, &rdp->dynticks); + arch_atomic_andnot(RCU_DYNTICK_CTRL_MASK, &rdp->dynticks); smp_mb__after_atomic(); /* _exit after clearing mask. */ } } @@ -313,7 +313,7 @@ static __always_inline bool rcu_dynticks { struct rcu_data *rdp = this_cpu_ptr(&rcu_data); - return !(atomic_read(&rdp->dynticks) & RCU_DYNTICK_CTRL_CTR); + return !(arch_atomic_read(&rdp->dynticks) & RCU_DYNTICK_CTRL_CTR); } /* @@ -692,6 +692,7 @@ noinstr void rcu_nmi_exit(void) { struct rcu_data *rdp = this_cpu_ptr(&rcu_data); + instrumentation_begin(); /* * Check for ->dynticks_nmi_nesting underflow and bad ->dynticks. * (We are exiting an NMI handler, so RCU better be paying attention @@ -705,7 +706,6 @@ noinstr void rcu_nmi_exit(void) * leave it in non-RCU-idle state. */ if (rdp->dynticks_nmi_nesting != 1) { - instrumentation_begin(); trace_rcu_dyntick(TPS("--="), rdp->dynticks_nmi_nesting, rdp->dynticks_nmi_nesting - 2, atomic_read(&rdp->dynticks)); WRITE_ONCE(rdp->dynticks_nmi_nesting, /* No store tearing. */ @@ -714,7 +714,6 @@ noinstr void rcu_nmi_exit(void) return; } - instrumentation_begin(); /* This NMI interrupted an RCU-idle CPU, restore RCU-idleness. */ trace_rcu_dyntick(TPS("Startirq"), rdp->dynticks_nmi_nesting, 0, atomic_read(&rdp->dynticks)); WRITE_ONCE(rdp->dynticks_nmi_nesting, 0); /* Avoid store tearing. */