Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp2240099rda; Tue, 24 Oct 2023 17:44:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE3agXlxPHQ+1iKWsMdaMXD+NgDn02fx0kjQ4BvlOXUa/oLYclBl48NToCgTx70avPnMBQN X-Received: by 2002:a05:6870:3893:b0:1dc:c65e:ded2 with SMTP id y19-20020a056870389300b001dcc65eded2mr14683773oan.12.1698194651083; Tue, 24 Oct 2023 17:44:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698194651; cv=none; d=google.com; s=arc-20160816; b=cBBiwtXUWmM1QlRUofuGHoe6P1mhu5pUBUaG0k6r6Dv60bIHeGDIeF63TCmOXheksq dVTl6mG3s3GgwJDEbALCfgTblWpYNShWPA4BuyY3xS7ODszjPmhazH0AZfuzUWSiOmvr PSM2HNPyGEe+NNWQHDGor45q1grfxS+LAxx7Kt7IF7KVULzWRzWeNYqBnUpb6KLxwHrC Um2uDfpvrmoP5JNDnne2fxwq5s1cJyY3Rr+SyIGXgIMLuBxBGYqArSocUWRtM3Aq+wAz 2eXpQVeY8HkPQmmh5dL/buXyGHIVCuSKedN8Jy7Hhc51H/Ya2DdWgWS0Yqy/MI41nERX yMBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:subject:from:to :content-language:user-agent:mime-version:date:message-id :dkim-signature; bh=UO/hFLLCVSGUQcpbxOQBk7OKmQn8mqkkoiQ7OUS4LCM=; fh=U0E2oue9IzKbPXNB16Yw1wWV+8jNv6A/mZY7VBras1A=; b=UHOntHoVmi/tAJzFdbUy5QtQugOh5QSM4220tO9nk8qPK0l8LPxpnznIlXtsk44wMf ytQCSokSBcRrE0cuOa7Rs8fEZJaubSmIbLuxQ0VEQZbErgup71O2xid2M6jvid9kAPCc vp8kGoTfWh6otIwzKv1R7PTuRLZ10PAeSkbGBjpe89l8OMDBbRwYwMWv2xxume5Wwikg A6Z7Of34VqhP7znFQGw65UwbIZGGR4XlZP3KfxHFqSGDx+K4tX9cpNP9xhBAL77uzI0D /DnvM6e0UovQ7F8U3BboCAb+eLi5SYB2zHZFqcEuW+mrcuxc+MGsRjpRkMEP6rqBtoyz Jvlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foxmail.com header.s=s201512 header.b=jUiSghDY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id u11-20020a6540cb000000b005b8aef54248si5531946pgp.411.2023.10.24.17.44.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 17:44:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@foxmail.com header.s=s201512 header.b=jUiSghDY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id E330C80C2573; Tue, 24 Oct 2023 17:44:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229537AbjJYAoE (ORCPT + 99 others); Tue, 24 Oct 2023 20:44:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229441AbjJYAoD (ORCPT ); Tue, 24 Oct 2023 20:44:03 -0400 Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F94E9F for ; Tue, 24 Oct 2023 17:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1698194633; bh=UO/hFLLCVSGUQcpbxOQBk7OKmQn8mqkkoiQ7OUS4LCM=; h=Date:To:From:Subject; b=jUiSghDYShUvrcJK3ZI2J3c8rXJBudZT4flPwCA4qBmNI7ltVHQXy1fTUf8qi3OnE A0tCYw/hF36vO/QM3Kioh5ESJTrYQR0S9TDo9CfqsxMRWf28D5ToUb92H2880UO2jT SmqDnpiAdPpTIbx9zpVlxWTCBhZdGcgqw6hJIQZw= Received: from [10.56.52.5] ([39.156.73.12]) by newxmesmtplogicsvrsza7-0.qq.com (NewEsmtp) with SMTP id AF418868; Wed, 25 Oct 2023 08:43:52 +0800 X-QQ-mid: xmsmtpt1698194632tp7q4unq7 Message-ID: X-QQ-XMAILINFO: NkHKfw09D6j8ksfWJEg0tBWe+hLpcLpPEnKLAuWz7OTLg257AlBAqEWPNGD1R0 1CFLH1RaDxd42UPYVn91UTsflPjAh4XOf8ROcHYqcC67HqmrXmke+5skhLxi9bW1p79IBjo1C65L ecoNBMDzQlWgjcX7MP/xw/VtjsCUoHWrJrX9MWnuoclrzxODyELh/N9eGJW9mdrzAKzE0jbSwLOJ fouwYB2TLVbh7syDLtJA76lZy7niZ68O7t/fL4WqDI0vhgb11UC1cO0h4MS3v/JSyBJ2FTLqu65R T0pYLT9dDEOZYPzKcjTc+DjDMSdkC0rQx2UrkUAp6pjQpg2fXDayuFZo7D98kPiZ+2NF3DBVM+Cn urjFOhn2gs0tOfzA2xz8O0L+Ou4p4BLg6LK/gWiF/UkeqB/dfw+IY4k1RVJimUYkrBfrjyg/UXE3 MK7Q6znPHhHpr/9WLNm6tFo5TzIwzGzbVkzJya/fBp5M0A8aaWgOrYRlULuGPgt6eX3Edm30c2Z5 o9ToPk3DjGFo8cWRAZLsgYETmQqGd/rlddpxSH7fjcIbNXQkJlOlHQxWG6agGxDfcIU/rcUgBwNo /yWjqmva/UDarFo5+spRWvXjMiAXW7GUD3iEN6c/+QyR7qVK+SC16FGolyrL8j1ITDoQfCEvCemk SIuoSeXaXFk0VlM907d7R5BYok8FWts3Y3WLFfxQeMhh1vaqMV8URK7P5IQZb82c2jWG0zat8R8k sfckrmZj3I3JIE6q5yCV1pPtLTVki/nixWHe+zn4Xrn6uot4Q8+NEM6O25cB/1dWy1HejNan3Fxg MU3onQXKv8+ls3WlGk7lEoDSTijMbXB3BWEib4ijk592rm9ItIPtEWxzjjMCaE0JpKl0d3SA2zUg HQ/Ie0B6O32Xqj+f67R2KjXNrZarFEm3bYKFVsTbg8d2w5ku60akgNrXogjzFMCAjo/SrYLDqv8S t+StogHQmwk22V3rG7Gx+WM/7hf05GhWnUkSEwOuzqhctzuLnOWreIayfGVNbqhrhvZVbLzULUez heptaR86nBtZ69xB+S X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= X-OQ-MSGID: Date: Wed, 25 Oct 2023 08:43:51 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: open list , rtoax@foxmail.com, Rong Tao From: Rong Tao Subject: [PATCH] stop_machine: pass curstate to ack_state() Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=1.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FORGED_MUA_MOZILLA,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 24 Oct 2023 17:44:09 -0700 (PDT) The multi_cpu_stop() state machine uses multi_stop_data::state to hold the current state, and this is read and written atomically except in ack_state(), which performs a non-atomic read. As ack_state() only performs this non-atomic read when there is a single writer, this is benign, but it makes reasoning about the state machine a little harder. Remove the non-atomic read and pass the (atomically read) curstate in instead. This makes it clear that we do not expect any racy writes, and avoids a redundant load. Acked-by: Mark Rutland Signed-off-by: Rong Tao ---  kernel/stop_machine.c | 7 ++++---  1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c index cedb17ba158a..268c2e581698 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -188,10 +188,11 @@ static void set_state(struct multi_stop_data *msdata,  }  /* Last one to ack a state moves to the next state. */ -static void ack_state(struct multi_stop_data *msdata) +static void ack_state(struct multi_stop_data *msdata, +              enum multi_stop_state curstate)  {      if (atomic_dec_and_test(&msdata->thread_ack)) -        set_state(msdata, msdata->state + 1); +        set_state(msdata, curstate + 1);  }  notrace void __weak stop_machine_yield(const struct cpumask *cpumask) @@ -242,7 +243,7 @@ static int multi_cpu_stop(void *data)              default:                  break;              } -            ack_state(msdata); +            ack_state(msdata, curstate);          } else if (curstate > MULTI_STOP_PREPARE) {              /*               * At this stage all other CPUs we depend on must spin -- 2.42.0