Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp769796pxp; Fri, 11 Mar 2022 14:39:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJw9wpOO6xr/vhsILOhhjWMl3wURUjXixnPWnYcLiIi0FCIIXjThLUJW1bwmmjUhcdXi28Nf X-Received: by 2002:a63:8348:0:b0:380:bcc4:861f with SMTP id h69-20020a638348000000b00380bcc4861fmr10241156pge.151.1647038361180; Fri, 11 Mar 2022 14:39:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647038361; cv=none; d=google.com; s=arc-20160816; b=VAqz9puXJXM6EqlzLkaKI2F0Yrc6WwGMzu5fErb7obfP8ft7Hz6kli4yDmoShcf570 NwAAwfROF9rxX8K0DxNVYV6glR8NozFWl7pcvFq/arnUxxlo7gESyMVttsWBG/E+sYPA vo4nL3YpURvXK78Add74X3X5h89ECy9pZ7XUfwzkRIP4+zmHeaZ9m+081yFtGjzbpMbE 9My5614OBCQXrogM/+QJyGJPb6sfMT/IPAHlud8muswuMapOkAgYQZQtev/aOnbSOu1w 7uis4Jc9FfZcv/sTHf+E0+7RqZKrlp/lVhzY9H+hZdIhC9UgXsb1Ah4VPvwV2SNyxqG/ nEOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=+KC9s1r8nZ85ZLo3Gp6J0dZAM5jN2Gpt+amDVLNZhCY=; b=NkB/cn80Iijr/QZKeK/k4W7XyaPYmgABcFaGXadxgnVp/oomWsTyCM8DfE0u3+R3oJ Nniuumz6ZvQwOorBLs8bYBsCIVlchSMAePdMftqZzYgxC2jjQprOgQjSHCbBBSPMYcbM y/UeNoFQ3qYuzK2qFy0jIDBZbI1/Gf39Alx2cTH/8NagLtThnoiOFKz3gCnFaa8f8qRl RiSjiS34MqOfSe0YKINpEUfQSLDdhM5qgSrGFvBHLSzqCU9lER/WinkTZpGtlfcEKGH2 gEM9eHiFOXux5xhZkDSQf8eKjyxLm5W+zaEwXFrcMXtzEPZKzFU9DNHkutAgr6D+nSFU +ANQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OwXmmgAg; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id h192-20020a636cc9000000b00372eb3a9c8fsi8616858pgc.138.2022.03.11.14.39.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 14:39:21 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OwXmmgAg; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 4CC8623A1BD; Fri, 11 Mar 2022 13:43:36 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348918AbiCKPZf (ORCPT + 99 others); Fri, 11 Mar 2022 10:25:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234259AbiCKPZd (ORCPT ); Fri, 11 Mar 2022 10:25:33 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59E181B30BA for ; Fri, 11 Mar 2022 07:24:30 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E568D61530 for ; Fri, 11 Mar 2022 15:24:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7921C340E9; Fri, 11 Mar 2022 15:24:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647012269; bh=g4Te640jhsFX03myFh35bEx8907G0PHqW4RzxS5KFHA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=OwXmmgAgHWk2WE72ZiDqiXEhpiv2kUeTzKx7xWaLwHT58FW/irdSuONjfDR7Ovcu2 wmGbY1+5emkNOvn5139VkIjTu1EMSjbFVMzHq8OM6GqmU14otz5mndAqOvtbBvI41E TCazz/mtoohL0HIIlQz69ZSIz3aeH8u6i8qx19raxM8zTPfhyTSByYTmwmWHLU8U5S 8rTAD3TVvP/VsWET4YJTbmZI2qX/NsfQaTwfaRXrXoy7GOe0YZFm/K6pXbxBd4HX2d JqyjEpNWkCrkRkEOukAdYkScjQ6SB9zyb73We6lPtVXuc6t9OfRKi4ISn6GBJqKhJj A9tL8sQyiOV2w== Date: Fri, 11 Mar 2022 16:24:26 +0100 From: Frederic Weisbecker To: nicolas saenz julienne Cc: LKML , Peter Zijlstra , Phil Auld , Alex Belits , Xiongfeng Wang , Neeraj Upadhyay , Thomas Gleixner , Yu Liao , Boqun Feng , "Paul E . McKenney" , Marcelo Tosatti , Paul Gortmaker , Uladzislau Rezki , Joel Fernandes Subject: Re: [PATCH 16/19] context_tracking: Convert state to atomic_t Message-ID: <20220311152426.GB227945@lothringen> References: <20220302154810.42308-1-frederic@kernel.org> <20220302154810.42308-17-frederic@kernel.org> <23cbcd6a467c211f792ff54d50635cd6536c9dcc.camel@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <23cbcd6a467c211f792ff54d50635cd6536c9dcc.camel@kernel.org> X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 On Wed, Mar 09, 2022 at 06:17:02PM +0100, nicolas saenz julienne wrote: > On Wed, 2022-03-02 at 16:48 +0100, Frederic Weisbecker wrote: > > Context tracking's state and dynticks counter are going to be merged > > in a single field so that both updates can happen atomically and at the > > same time. Prepare for that with converting the state into an atomic_t. > > > > Signed-off-by: Frederic Weisbecker > > Cc: Paul E. McKenney > > Cc: Peter Zijlstra > > Cc: Thomas Gleixner > > Cc: Neeraj Upadhyay > > Cc: Uladzislau Rezki > > Cc: Joel Fernandes > > Cc: Boqun Feng > > Cc: Nicolas Saenz Julienne > > Cc: Marcelo Tosatti > > Cc: Xiongfeng Wang > > Cc: Yu Liao > > Cc: Phil Auld > > Cc: Paul Gortmaker > > Cc: Alex Belits > > --- > > static __always_inline bool context_tracking_in_user(void) > > { > > - return __this_cpu_read(context_tracking.state) == CONTEXT_USER; > > + return __ct_state() == CONTEXT_USER; > > } > > I was wondering whether it'd make more sense to use ct_state() for extra safety > vs preemption, but it turns out the function isn't being used at all. > > I figure it'd be better to remove it altogether and leave ct_state() as the > goto function for this sort of checks. Ah even better! > > > #else > > static inline bool context_tracking_in_user(void) { return false; } > > diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c > > index de247e758767..69db43548768 100644 > > --- a/kernel/context_tracking.c > > +++ b/kernel/context_tracking.c > > @@ -337,6 +337,7 @@ static __always_inline void context_tracking_recursion_exit(void) > > */ > > void noinstr __ct_user_enter(enum ctx_state state) > > { > > + struct context_tracking *ct = this_cpu_ptr(&context_tracking); > > I wonder if there is any value to having __ct_state() take 'struct > context_tracking *ct' as an argument to avoid a redundant this_cpu_ptr()... > > > lockdep_assert_irqs_disabled(); > > > > /* Kernel threads aren't supposed to go to userspace */ > > @@ -345,8 +346,8 @@ void noinstr __ct_user_enter(enum ctx_state state) > > if (!context_tracking_recursion_enter()) > > return; > > > > - if ( __this_cpu_read(context_tracking.state) != state) { > > - if (__this_cpu_read(context_tracking.active)) { > > + if (__ct_state() != state) { > > ...here (and in __ct_user_exit()). Hmm, I'll check that. Thanks!