From patchwork Tue May 9 01:50:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91331 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2558221vqo; Mon, 8 May 2023 18:52:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6HvYLcQNNfMSMrx44af3IBIM4pmFF0O5BephC9pkXBp1hmgQRPqS2hIw2UvRhDCHR45pdJ X-Received: by 2002:a05:6a20:9151:b0:101:466b:58cb with SMTP id x17-20020a056a20915100b00101466b58cbmr754918pzc.38.1683597128520; Mon, 08 May 2023 18:52:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597128; cv=none; d=google.com; s=arc-20160816; b=NV9c46it+rlK8kKd9FoqSrvPzYPa0hUDFB3fcgoMSlWysLMoMn3M3kqOMf37VeHaaZ SoiGfC9pBwsW4qTjMqFEXxuKsp8f+mB+orMqG4mzF95ICV/GtVx5sttbW94Nzh6a0eQN HIC3yc8yZYh0JvyHkd3pL2ACH2hIODNWEXPfXACPLj46d6osBEIYHe7QsztfdQv6EBKV hLtxZEYzuAlXA0dBgbObB5axTtPY9yeu/QG6ioBQfwxR8vY0DVSqLhDHTaqF+79HEiVl NcISYyC5LErqVkoBIK2ewVPNCwFNMP8BjpvSuHGqtjaNqFiLImwr63Gl9579Ej9rlJIJ DyMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=69dtD77xWGRukQB2MDn4hI1tJ2O9vxVlVuI3XoQDR04=; b=SZWpXSaX0gPSbBPK87uZcE+ysZB2oLbugbMMCvgLxqT0InWcc6DanFybMbIDLnpbyp pV6viJV2Y7zy7FUHvNdoZNqhtGSFBj2GXt3ZWG/i746hmqUqo7Ii0VRV4K+S0g+2+hie AE/ESeXM90Bcn6Eyxl9DQpqeE6g+dq4rGVTdP6hLpPwXtuIsmly1NbtuqbZxW1EjCbvJ n+pNYmJxquHpLmEaLZq2zyA6n2ErsFaEnuizX6BQV12sivTb7TCIC+uH+sGfImpXUHVC nIo2ROZiC+9AXhcMlie0uVdRRZfdM5E9WeTY/92bcDLhots8bwXSEfhS5q5yq5VGQYRo TFmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=AwWm5gb7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p19-20020a637f53000000b0051a8a22a42dsi374525pgn.268.2023.05.08.18.51.52; Mon, 08 May 2023 18:52:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=AwWm5gb7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233333AbjEIBuq (ORCPT + 99 others); Mon, 8 May 2023 21:50:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233491AbjEIBuj (ORCPT ); Mon, 8 May 2023 21:50:39 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 754109EF5 for ; Mon, 8 May 2023 18:50:38 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-643557840e4so5697011b3a.2 for ; Mon, 08 May 2023 18:50:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597038; x=1686189038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=69dtD77xWGRukQB2MDn4hI1tJ2O9vxVlVuI3XoQDR04=; b=AwWm5gb76OB4SKaLAzgqBacTPLuC/BNCfvcmrLdYW+xfwFs/3tbHMiFvUgWDLiLBQC 6S6pvbaHRT6niLxq62NVz0ePJwzK9L4U1REPXCdsZnFlKoXuo6BwjZRtmgAEaKxDum0Y 4bGiCNs1iSz8kKfH/SnwBm5YfDtNxdb6G4EfOU5Z9qdTOxQX83bZ8p4yUB22wQqm0yUx /r0jUFlpXap7gQSkFZPXxiXVOJndefpIfsc5u0y3sOXJzZUVox75UD89oElys4PwVM+A P2Nw9EMNngpzMQl9IdR0OVNhIEmme0tTSvUBuyCVipW/f+ZWLDn/2BwMvaF0y28dMJUD u3SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597038; x=1686189038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=69dtD77xWGRukQB2MDn4hI1tJ2O9vxVlVuI3XoQDR04=; b=c1Ng89ckOhdr/t9RaYdo6ZnUpgpnMe2BXbUD0qJXvVEbN0/qRvaZBR1Eau73snIymD u+9IbQtRMoU6Xm93zFT8k/kFUoRJt/VXtkZ/X9ZIhmDJUzYSscbnEBmEqPOB50ctp0KF zt8dZWhryu2t0/q2pMTKR4Eu1YG6ICkmN0HAk3dDMfcJCTN/gYqy93BI09TPkqxoUwlM XTi/2P0bbL6BFRanfOQGhcdn66ispl/RnjDQYDt5QXc9OtMuKzUvm4dA14+GnSFzizfz JfqcJBBkUudjjbure9BENbPBuT+XpgAJqd4GClz3EqYwNiiBpxillX4SIhs9ejJLJvny KFHA== X-Gm-Message-State: AC+VfDykZRvv3PfIM34TSU6N1IP4+CKF58uTxB3LYnJ/0QeU3YOA9VYr TMCJpxEglz8/SkHFU9Ax0KE= X-Received: by 2002:a05:6a00:2d25:b0:643:6b94:374b with SMTP id fa37-20020a056a002d2500b006436b94374bmr18692731pfb.1.1683597037710; Mon, 08 May 2023 18:50:37 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id k13-20020aa792cd000000b0063f1430dd57sm597843pfa.49.2023.05.08.18.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:36 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo Subject: [PATCH 01/13] scsi: ncr53c8xx: Use default @max_active for hostdata->work_q Date: Mon, 8 May 2023 15:50:20 -1000 Message-Id: <20230509015032.3768622-2-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379542398953831?= X-GMAIL-MSGID: =?utf-8?q?1765379542398953831?= hostdata->work_q only hosts a single work item, hostdata->main_task, and thus doesn't need explicit concurrency limit. Let's use the default @max_active. This doesn't cost anything and clearly expresses that @max_active doesn't matter. Signed-off-by: Tejun Heo Finn Thain Michael Schmitz "James E.J. Bottomley" "Martin K. Petersen" linux-scsi@vger.kernel.org linux-kernel@vger.kernel.org --- drivers/scsi/NCR5380.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index ca85bddb582b..cea3a79d538e 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c @@ -417,7 +417,7 @@ static int NCR5380_init(struct Scsi_Host *instance, int flags) INIT_WORK(&hostdata->main_task, NCR5380_main); hostdata->work_q = alloc_workqueue("ncr5380_%d", WQ_UNBOUND | WQ_MEM_RECLAIM, - 1, instance->host_no); + 0, instance->host_no); if (!hostdata->work_q) return -ENOMEM; From patchwork Tue May 9 01:50:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91332 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2558236vqo; Mon, 8 May 2023 18:52:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7+t9rPKX/BlozPqWNYKD9guvkYSYMEL1oX2Jve7x6MqMdNVHrun6H1mwvBzMWwmaVT/osI X-Received: by 2002:a05:6a21:33a2:b0:100:11c9:8c06 with SMTP id yy34-20020a056a2133a200b0010011c98c06mr9118371pzb.18.1683597130324; Mon, 08 May 2023 18:52:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597130; cv=none; d=google.com; s=arc-20160816; b=JKKLFgC7sUW6Xy8+uix87fz02tlzXlaBi46cet+0p6fg4P2kac0c97u2U72t8879Xf iX+PkYi45yDBeKXi6AlebGYLPEEALKSCowUTomhqZ3AZc1MiDct8UxoSv3jdDYXhXApy GQzG3IyABGzEaCgbo6R8FuIroCtv62UBaqIRRZC+W0+nDLriJtzqfg0pUL2zbkbTDwsi tSnzoZCrtse0NghpyqmE3KKmn2uDK2+wPOfoMb1EIv+PBkEjI9F3f1u14zUJbuEy2uGf 7KaJCfUNUvj9DGZE/zP4l/FpIc66jX3jh+p8pmMXPBHEji31hGZGAxk3326WYAi8n1Vy olDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=qmncjnYD0YCdbiAl0XbmIMAaaEtLkUY+JzhiUY0+yqE=; b=JhTlqhmAGysuxtSOWaPwD4YPPVeH8jEHFfHdzKevLBvQ9ixuLI9bupiXOtKFLVEJLP wM/Dikckp+o5M5BM4RkaLPlpZvITvp4u0cFz91y0YuXBI7YQ2rwXsGhVtedB7MkpFYLY gG3+hRVsxdJD3NyG4eCkjKqi93R6TI+6KtO2k2hIZnERnH+yGiBUTLflpmOmSG9Re7PV /LUVBJnPdND2fqqtTiVLfOWxUlUbV877wD9bIIhpxb8WuIzI+Br0+SFFfycpDp6eQvQi shm2WLB9XYq/lg6ENPysV12az/RrkUqwIOAbrr5/rWRRZf4vfLGpJ7bUVjmbWzjoYlqg 6O0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=mv4gwcby; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z128-20020a626586000000b00642fedf28e2si1174003pfb.332.2023.05.08.18.51.54; Mon, 08 May 2023 18:52:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=mv4gwcby; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233849AbjEIBuy (ORCPT + 99 others); Mon, 8 May 2023 21:50:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233815AbjEIBum (ORCPT ); Mon, 8 May 2023 21:50:42 -0400 Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83A41A279; Mon, 8 May 2023 18:50:40 -0700 (PDT) Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1aaec9ad820so49939085ad.0; Mon, 08 May 2023 18:50:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597040; x=1686189040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=qmncjnYD0YCdbiAl0XbmIMAaaEtLkUY+JzhiUY0+yqE=; b=mv4gwcbyAom9v/ntOCrdkUNTBnkSLE3OOiSUtx6dQ8HkLqT/mVu7JDDB5Le9seWEEd WG1G4VJ0jXB9J4Gh+9NGBPHBHN69z4cLU71mMesa1qSIVoz4SAMd5D43GgBYcr4/eOF5 z6veea5w9lhlE+i9g77L6ZJ8nWrjS5pMA6yALEGdzh++U2t92996kBHuNNOdRTgdUBTH x6+7yeuDY1yYej+NZcqwW2g8m4jLfcpGYadW1uPpfO734plAo3mo81gjPbQPWthmt+sk Go/DSTsxb+NKYc9TfxS0hn6CkVutlx1YNvj/QSPebwnWbntwuyFhZaatY5iguhCP7hNz gKaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597040; x=1686189040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qmncjnYD0YCdbiAl0XbmIMAaaEtLkUY+JzhiUY0+yqE=; b=dztFFMGVcBGKZGr+o3EmJRYl79qclNkBOjAN8yMdXAAN3Q+wrkY3EEvd1vhwhNsIUE yddBNqxSF93Gp3XyxvQER+O/zD/nfGautuRsAqW8sNnOFQRBJd+HXWfgTaYpdbmE5mzq EckKY2LQ5DbCbuYar3vX1OU3NMI6IBHVWz0y8le79rMM1skyKrYCbrJAM5SuCYhduyGL rma8KAVI15EjPDFDZ6oXivRTXY8iFwk4IyxmgkmOO3U6eYSFxHEKeNqF5SD5LIQtUR6U QqbPobN4Vg9629+b1RSNIP5b+8ocGNpz74IBtvfwap9g63zf8zp23NtQ2HVa8ObRVDYY mVPQ== X-Gm-Message-State: AC+VfDxMSFrevwhEwyPn27tDoIafAmA4bnrw548ThoNpgVqBcC2fR7p6 JtcYgBN3vxpPCBZETnLB1Xc= X-Received: by 2002:a17:902:efc5:b0:19c:f096:bbef with SMTP id ja5-20020a170902efc500b0019cf096bbefmr11597712plb.49.1683597039617; Mon, 08 May 2023 18:50:39 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id u9-20020a170902e5c900b001ab12545508sm160050plf.67.2023.05.08.18.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:39 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Amitkumar Karwar , Ganapathi Bhat , Sharvari Harisangam , Xinming Hu , Kalle Valo , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 02/13] wifi: mwifiex: Use default @max_active for workqueues Date: Mon, 8 May 2023 15:50:21 -1000 Message-Id: <20230509015032.3768622-3-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379544439237037?= X-GMAIL-MSGID: =?utf-8?q?1765379544439237037?= These workqueues only host a single work item and thus doen't need explicit concurrency limit. Let's use the default @max_active. This doesn't cost anything and clearly expresses that @max_active doesn't matter. Signed-off-by: Tejun Heo Cc: Amitkumar Karwar Cc: Ganapathi Bhat Cc: Sharvari Harisangam Cc: Xinming Hu Cc: Kalle Valo Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org Acked-by: Kalle Valo Reviewed-by: Brian Norris --- drivers/net/wireless/marvell/mwifiex/cfg80211.c | 4 ++-- drivers/net/wireless/marvell/mwifiex/main.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index bcd564dc3554..5337ee4b6f10 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -3127,7 +3127,7 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy, priv->dfs_cac_workqueue = alloc_workqueue("MWIFIEX_DFS_CAC%s", WQ_HIGHPRI | WQ_MEM_RECLAIM | - WQ_UNBOUND, 1, name); + WQ_UNBOUND, 0, name); if (!priv->dfs_cac_workqueue) { mwifiex_dbg(adapter, ERROR, "cannot alloc DFS CAC queue\n"); ret = -ENOMEM; @@ -3138,7 +3138,7 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy, priv->dfs_chan_sw_workqueue = alloc_workqueue("MWIFIEX_DFS_CHSW%s", WQ_HIGHPRI | WQ_UNBOUND | - WQ_MEM_RECLAIM, 1, name); + WQ_MEM_RECLAIM, 0, name); if (!priv->dfs_chan_sw_workqueue) { mwifiex_dbg(adapter, ERROR, "cannot alloc DFS channel sw queue\n"); ret = -ENOMEM; diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c index ea22a08e6c08..1cd9d20cca16 100644 --- a/drivers/net/wireless/marvell/mwifiex/main.c +++ b/drivers/net/wireless/marvell/mwifiex/main.c @@ -1547,7 +1547,7 @@ mwifiex_reinit_sw(struct mwifiex_adapter *adapter) adapter->workqueue = alloc_workqueue("MWIFIEX_WORK_QUEUE", - WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 1); + WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 0); if (!adapter->workqueue) goto err_kmalloc; @@ -1557,7 +1557,7 @@ mwifiex_reinit_sw(struct mwifiex_adapter *adapter) adapter->rx_workqueue = alloc_workqueue("MWIFIEX_RX_WORK_QUEUE", WQ_HIGHPRI | WQ_MEM_RECLAIM | - WQ_UNBOUND, 1); + WQ_UNBOUND, 0); if (!adapter->rx_workqueue) goto err_kmalloc; INIT_WORK(&adapter->rx_work, mwifiex_rx_work_queue); @@ -1702,7 +1702,7 @@ mwifiex_add_card(void *card, struct completion *fw_done, adapter->workqueue = alloc_workqueue("MWIFIEX_WORK_QUEUE", - WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 1); + WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 0); if (!adapter->workqueue) goto err_kmalloc; @@ -1712,7 +1712,7 @@ mwifiex_add_card(void *card, struct completion *fw_done, adapter->rx_workqueue = alloc_workqueue("MWIFIEX_RX_WORK_QUEUE", WQ_HIGHPRI | WQ_MEM_RECLAIM | - WQ_UNBOUND, 1); + WQ_UNBOUND, 0); if (!adapter->rx_workqueue) goto err_kmalloc; From patchwork Tue May 9 01:50:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91339 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2563538vqo; Mon, 8 May 2023 19:06:36 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ43NjOBabJ2UgZOEUq1ZcAfjo4wDLXlWj1cU71bSrY/MFiYoA9HUryONdk1iPgD8EXY2OO5 X-Received: by 2002:a17:90a:604b:b0:24e:403d:488f with SMTP id h11-20020a17090a604b00b0024e403d488fmr12271475pjm.20.1683597996229; Mon, 08 May 2023 19:06:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597996; cv=none; d=google.com; s=arc-20160816; b=Bnr5ci7kDFFADDvXgZzEJZvBNQgytRbrrT4mno1MG45d/dX/7ZP1PePuZlybvzQsVD aRpsUtkzUh4g/fFtk7meKnsdP1D9BFD+Ywx9uP8AKxurl/EWbeBTtiEWvxD/bI0fXREs iXGF0oIN44fySPExooFy07cCn2Ko/aCL1aAeEWhF3xCoxkyd6GOa5ytVTn5DfJt6d0+d 0cK8rM5iG0p//NRQwV688Kho9CqszRQ5f38EuL+Nul0eg+v+Pl9Pesc+xD2er4XDZhlI pHjDiIbM4bIwrTTl9c6OcmOGwsSAz7w0nc4MwZb/ZiB+bzlUrxgUSw96rn7HCJciWoh2 JLyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=iNyRxdWCADhD9rUKa2TrMn4tF/rgjlUTD8AJ6N7yTPI=; b=jrS1YWfHr/c23qbSC4OuundgxhQKg9EIOad4iPfqb7XrFEk3pL13ZacflCe5f1sI7e Vl7eaQiCYjdmFZ8hmtVQEsy3Vn7Op9hzpUuxSZNIN+FEVh3qL2mhfCtTxi1QJeOvydg4 7U4q06bLr5Ul9wt63cOOYdCu+Sf8W+W8xLnVykXcN1q05Wx+YLMR4vaP+ueKMVSVQ2NJ o9sn754d9Ia/VDQjX/Dj92RBd/7hWX7J7wywnsMSvBFZVX+4hqc+KoiwYFmY2FnivECm 2YBjbDb6YkhcgpFXOCCO9Syy3LBFnZ0jmtlD/EQAdqqL0p8ifiuwf970XqmaqQ9pPmJy 0ciA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=rBOB2kT8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rj14-20020a17090b3e8e00b002500b162449si11615323pjb.57.2023.05.08.19.06.21; Mon, 08 May 2023 19:06:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=rBOB2kT8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233559AbjEIBu5 (ORCPT + 99 others); Mon, 8 May 2023 21:50:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233867AbjEIBuw (ORCPT ); Mon, 8 May 2023 21:50:52 -0400 Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BBCEA5F3 for ; Mon, 8 May 2023 18:50:42 -0700 (PDT) Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-51b603bb360so4798245a12.2 for ; Mon, 08 May 2023 18:50:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597041; x=1686189041; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=iNyRxdWCADhD9rUKa2TrMn4tF/rgjlUTD8AJ6N7yTPI=; b=rBOB2kT81esTLEMd+gDqzUt84C67pQDXt/JWeZFo0f8IHt9KsY/WzZ6a112t8trmzd EuzBz5nZX9viQThMm+m7ZNmLqo10/MGU1PxDfRcnOoI1U49Do/egyLicMs1mkA68bLCE habdUM3yEPZ8Qw/fITzRdmec5qQ+WNoER2A1WWyxqPWl/iPkt+fXyLi9xbOsV4Upyi3u afdBEyRDazd7wbUqlnW9M/o9fleryQRG2thqB0jHrfrvibbV2zqD8byrPiOzZ5YqTFPO IPhNDhA/tI6J4ouzjIGUJDZU3QajxjldnoyLZffyDtbh4F5kRC3AMdEv2B4dGRmCtCwz bC3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597041; x=1686189041; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iNyRxdWCADhD9rUKa2TrMn4tF/rgjlUTD8AJ6N7yTPI=; b=UyRgqKdS0MT3+0ZEodr+QU7nrF1Cweyjl4yrKdfsw08kbW4LRCVNC+hzial+1lTJEc qxJCbvFh7W+fa+YU8eExfD5PRVFVsqd8F4zL1zyUQp+V5PpDBgHNxxkONvc5JDelm9jj QLOGXc0c5RQpIw9IZnUZP/orhTZ6epF7yn6aKo91QtOHeswiOHtE8of/nn3tKFqzw5fu huzu3T/x6y5d/Lyn2eL+UjZYmvEcVVeybVoTfMvbLklq9kHQPg8yxu3YxW0t4vmHBXo7 McEIJmLVcVRsxAqwlf9CmyK7qXVeH6C4cpmcVcGvgZ2EBhGAi0Yh0HQGH298wHt5y4x9 vX9A== X-Gm-Message-State: AC+VfDyuZLGjFH4n4AvEVdLWrelUqeteNfPRMo67BNcRUZLcVuf5+QMg irWAmu6jUvkQI+KMRn5zLB0= X-Received: by 2002:a05:6a21:32a0:b0:ff:f2c3:c103 with SMTP id yt32-20020a056a2132a000b000fff2c3c103mr10292465pzb.18.1683597041398; Mon, 08 May 2023 18:50:41 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id p36-20020a634f64000000b0050f56964426sm145085pgl.54.2023.05.08.18.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:41 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Alasdair Kergon , Mike Snitzer , dm-devel@redhat.com Subject: [PATCH 03/13] dm integrity: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:22 -1000 Message-Id: <20230509015032.3768622-4-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765380452683859729?= X-GMAIL-MSGID: =?utf-8?q?1765380452683859729?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Alasdair Kergon Cc: Mike Snitzer Cc: dm-devel@redhat.com Cc: linux-kernel@vger.kernel.org --- drivers/md/dm-integrity.c | 4 ++-- drivers/md/dm.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c index 31838b13ea54..63ec502fcb12 100644 --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -4268,10 +4268,10 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned int argc, char **argv } /* - * If this workqueue were percpu, it would cause bio reordering + * If this workqueue weren't ordered, it would cause bio reordering * and reduced performance. */ - ic->wait_wq = alloc_workqueue("dm-integrity-wait", WQ_MEM_RECLAIM | WQ_UNBOUND, 1); + ic->wait_wq = alloc_ordered_workqueue("dm-integrity-wait", WQ_MEM_RECLAIM); if (!ic->wait_wq) { ti->error = "Cannot allocate workqueue"; r = -ENOMEM; diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 3b694ba3a106..9599d76cc9a9 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -207,7 +207,7 @@ static int __init local_init(void) if (r) return r; - deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1); + deferred_remove_workqueue = alloc_ordered_workqueue("kdmremove", 0); if (!deferred_remove_workqueue) { r = -ENOMEM; goto out_uevent_exit; From patchwork Tue May 9 01:50:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91340 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2564164vqo; Mon, 8 May 2023 19:08:04 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6kLltU3D8glimlzib3NHvywLU8BofcSIHcZuVeXURW13QyEpe52oJCwjUcs6Hmi40htsHV X-Received: by 2002:a17:902:6b49:b0:1aa:d235:6dce with SMTP id g9-20020a1709026b4900b001aad2356dcemr10279957plt.12.1683598083861; Mon, 08 May 2023 19:08:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683598083; cv=none; d=google.com; s=arc-20160816; b=AIBnF9v364tbFE4wr0869R9tHHicAiZqOQyYud7S4h2GMuhOJxcMMcajAIfNTeN0W8 sYDsW5lgk2EeywvguHSmq53Wi+932QzO8ZT4WSf7q4+ymTdygQuZANalnEwJfi1FS9Od oZT31EERBS0hGlp/SHPErtDVarcz1y1U10Vu25iZM2nUyJU8h+bTXjHVSG5nL3xTS3s1 myHqK6SeK/GoyVyQHtjRVGzOT1WXRczKq4N6Pf+OOsNxwy73gIIp0/fnqcAbMYmEcZvQ o5jD0JOVMwB3glrnGok0XTTACyUb0bJc9fGBI2qGIMKEBZhorZR9LlpUiW7bE9JZy/ok r8Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=NrqNc+2n+X33D/fyVH+5OCxvofzF9jLKnUEj7w+cHec=; b=kkEOLH53kR1p1CtPVT+OU8MRXgsYDDPEpxsBDAuh/KUKzXSjJTYrAfRFIdxgAKnKvv 1HeSl04u6Z2OSI321MGVa9zSHRPDe/DFV/x4jSo76ew339XYk298EtPdob2pLbAK5uRG AS4ZYdoJkChA2OFaxdZ5iwLYiFLuRoydZUrBuK4enX/LA6OqrzcTDSlQ2Yzq249t/tCP IQS1qDy7zxTlggdLT+2ig6q5ynqRgsx0nqkmpBXEVl1VYBqZ8XzJ4C2zK+RmmUXdzZiH tJ7+0Y3PhSzfoW3kUHvqSDGaoWkyuV4tQo5imrje8OcNPkuGAThxxUC/kR27L4kynfcU tWIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=qTyTEfIW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s24-20020a170902a51800b001a6ff6a83e2si319350plq.522.2023.05.08.19.07.50; Mon, 08 May 2023 19:08:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=qTyTEfIW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233676AbjEIBvG (ORCPT + 99 others); Mon, 8 May 2023 21:51:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233842AbjEIBuy (ORCPT ); Mon, 8 May 2023 21:50:54 -0400 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FB43AD0E; Mon, 8 May 2023 18:50:44 -0700 (PDT) Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1aafa03f541so51937305ad.0; Mon, 08 May 2023 18:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597043; x=1686189043; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=NrqNc+2n+X33D/fyVH+5OCxvofzF9jLKnUEj7w+cHec=; b=qTyTEfIWrUl9clnLrbs+ALzV4ZhzxV2eoI+Kuj2xBGhIyJVv0N3NVspv9peRBOHID1 sPkT+dUsRKrBL8q+TKygynxiD3IlS0YGAOBz9jbme2oVJmrHo2yX8wKEVovFxi2mbUs1 W1f3bGszis45Hl34x16mfSstXnM+F5hYajB0Es9XjcBl7GezD8hH6OtU8lXC7ZfsV7YA 2mFqfp3eQXVWdIGW049QdLTN4oSAzkXW/VD1LLM3R9+jfT+9kWH800fo7mv0VFmRDCA3 UuThLAjMEfwOxJjQol6FL2YKoUUsoTWU3mcZmhsGwqo1zqvatM1efVr/wx419Z5hOMom bT1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597043; x=1686189043; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NrqNc+2n+X33D/fyVH+5OCxvofzF9jLKnUEj7w+cHec=; b=XFC+oOKBrNS7AMwdBrqepBVUoyRcjgD5dEFuv+Qdz4trGSBPWpgi8mTingmoGuMjKf 6UGtUt/1qcd/fNXWMOJs8kZgkA5rf+4a/IP9vBRSDokeifaPvYLJVdydR3/MVLNKACmW cCcMukwPDK3+cT8Ug4jiMteP1mL6yU1qtmVFj6e+6h12KrV9JeWD7U8cjxe5GufrZpQ4 EydtDy7VfXG/IbZMC3feh9RMEoPlLw1onXsqmi2CGulBWl+vKzTI3ICZpsZA2tYN0KZ3 k7rG021yqDYyCmf++8jlgfExjCfxSDeLajZ+uBx+qNXm/7k9atxYa6hYCM/FSPF0Tn8q OqFg== X-Gm-Message-State: AC+VfDz3cratzc3W5h0IyT3QVMXskbb6MsiPFwkABjxEASEsGX7TypJP LCfgD1j1JhiCAh5QhEKOrv4= X-Received: by 2002:a17:903:2289:b0:1a6:84be:a08f with SMTP id b9-20020a170903228900b001a684bea08fmr14901133plh.64.1683597043293; Mon, 08 May 2023 18:50:43 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id b4-20020a170902d50400b001a9af8ddb64sm123818plg.298.2023.05.08.18.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:42 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Ming Qian , Shijie Qin , Zhou Peng , Mauro Carvalho Chehab , linux-media@vger.kernel.org Subject: [PATCH 04/13] media: amphion: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:23 -1000 Message-Id: <20230509015032.3768622-5-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765380544378416160?= X-GMAIL-MSGID: =?utf-8?q?1765380544378416160?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Ming Qian Cc: Shijie Qin Cc: Zhou Peng Cc: Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org Acked-by: Hans Verkuil --- drivers/media/platform/amphion/vpu_core.c | 2 +- drivers/media/platform/amphion/vpu_v4l2.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/amphion/vpu_core.c b/drivers/media/platform/amphion/vpu_core.c index de23627a119a..43d85a54268b 100644 --- a/drivers/media/platform/amphion/vpu_core.c +++ b/drivers/media/platform/amphion/vpu_core.c @@ -254,7 +254,7 @@ static int vpu_core_register(struct device *dev, struct vpu_core *core) if (vpu_core_is_exist(vpu, core)) return 0; - core->workqueue = alloc_workqueue("vpu", WQ_UNBOUND | WQ_MEM_RECLAIM, 1); + core->workqueue = alloc_ordered_workqueue("vpu", WQ_MEM_RECLAIM); if (!core->workqueue) { dev_err(core->dev, "fail to alloc workqueue\n"); return -ENOMEM; diff --git a/drivers/media/platform/amphion/vpu_v4l2.c b/drivers/media/platform/amphion/vpu_v4l2.c index 6773b885597c..a48edb445eea 100644 --- a/drivers/media/platform/amphion/vpu_v4l2.c +++ b/drivers/media/platform/amphion/vpu_v4l2.c @@ -740,7 +740,7 @@ int vpu_v4l2_open(struct file *file, struct vpu_inst *inst) inst->fh.ctrl_handler = &inst->ctrl_handler; file->private_data = &inst->fh; inst->state = VPU_CODEC_STATE_DEINIT; - inst->workqueue = alloc_workqueue("vpu_inst", WQ_UNBOUND | WQ_MEM_RECLAIM, 1); + inst->workqueue = alloc_ordered_workqueue("vpu_inst", WQ_MEM_RECLAIM); if (inst->workqueue) { INIT_WORK(&inst->msg_work, vpu_inst_run_work); ret = kfifo_init(&inst->msg_fifo, From patchwork Tue May 9 01:50:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91341 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2566654vqo; Mon, 8 May 2023 19:14:31 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7LmfVBtG6T6yl4piqmAo+FVRAMmDPp1hb5MzFMLUOGf+oJaUuvm5Y10F00NSnEb2euymT2 X-Received: by 2002:a17:902:bd44:b0:1a9:b8c7:bf9 with SMTP id b4-20020a170902bd4400b001a9b8c70bf9mr12095483plx.22.1683598471598; Mon, 08 May 2023 19:14:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683598471; cv=none; d=google.com; s=arc-20160816; b=s5fq2d4tJlu4gkD3/T4cwfHkh4b8bgKOeu2pmiDqfpNExE3tZqAv9nOp22IYsHaK0K Q2vFuN5dArF/PZIKeVaK5yws4UMheZ3jA44OxKjCujFEMDXTocWeFD9tzX4Q0RL7w6SV uqb3R11hY8dHiKUbBELe5i2uvqYvpjmUZu8Pw4m6oE+tLvLVzBMVDmXa7yU9pXzYaAi9 kwq/L/kelDYKxEABXjUrnnqyvQ8rPvOf+g9ZYGaDLE+kcaZoxGHLGMAQd7SmR02ULObr gM2yol4rBK8TulvGNnGDoKBmoqa21Xg6cU/52qoY15rHYVauMqWJDzSQwbY1XV8HCKVB ocBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=QMTTy8Xq3DQysjr0Apwc28XqtPWPIN/Qk2iVDooviS4=; b=h+K8LqvYm0focQkK4PDNA+TW5KxUtXC+XJnC0N68zP/gs6FBfaC3uHJXDWP1/EcyU2 jOGvbekC29Za0PrbvbVfqfidcQWxUVEh3pJMixD2OyjMmi6qY9cndmCVsOatE5vMVW5k GQnpj7ar8yv/JW6vPPo2rF8kl1huSBZOsx79xS6ieJB9JUNlwpr/SMOEep/XvK81STyY n4ev77Rv3D6QRGhP55zuKINva9FMQcGTkh6oLhSaUJgwsG1Z57YJDU/OJ4MlFjFMthWV YoBPNC5uL2F54+o5w1Ptd4S9CU7F6DIqbJmZtxfBBXXtmFdY9okwsQnsFasnqbotNtnq 79RQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="DcJ7t//r"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y10-20020a17090322ca00b001ac8defdaf5si430824plg.76.2023.05.08.19.14.15; Mon, 08 May 2023 19:14:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="DcJ7t//r"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229637AbjEIBvK (ORCPT + 99 others); Mon, 8 May 2023 21:51:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233895AbjEIBvD (ORCPT ); Mon, 8 May 2023 21:51:03 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37473AD23; Mon, 8 May 2023 18:50:46 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1aaebed5bd6so37148685ad.1; Mon, 08 May 2023 18:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597045; x=1686189045; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=QMTTy8Xq3DQysjr0Apwc28XqtPWPIN/Qk2iVDooviS4=; b=DcJ7t//ro7U/ttHMBFC9attG41EeH8VZtSXuwOroBYbJWhoKZNI4AV1KG5CeHOcRmO ECsAMMzBkOBp29bRrORU2z666uQHw0dYQm+6fgQkpamYB4oKMGKokl0W8OZrujBS6ltA oJkH2HEjJ/yL50TyNebQGtX6iXTrrOCoja74sdoYXYeZ36wllotLKdhFh6JwLGfRZJvZ XXy8Sfcu2kvmbNC4oHLLSbLaM40HpkKcN8u4d+BFupNEL5GNVORMOj1sRkjxxbEovwk8 ySdD1vMNYGpJZXuXyMdszB62AKUBeDypRwSg7TaF1EN00A3P4fDhAvnQrY8Rhzixh4Cu sONQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597045; x=1686189045; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QMTTy8Xq3DQysjr0Apwc28XqtPWPIN/Qk2iVDooviS4=; b=LaUZsJrc4COiF5Ik6UCdJxCoWH9zTIxpGsFFxLX2L0CUa+YmbF8q0h21j2cdmSq1OM w0yrgcuTJ4S1joDnKAgiQlE6pgljP11IAVWtMzAKi6BK3nacigyNh3KwMjflQHG7vfIs mDa64VRw8eax3LXJ30ZM14WHQ5EsIQbr1ZkBjcGVGip6fa9Rdv63MT0NHGynV4NzHibA AMbdAggVLKRtoTbT016EeX4Cdo+hs2XhdjlVuXhXvWAGtNYnzFmq04OYywGLSz77qqO2 NHZ1CDWqOkFyG3l+8gbb1hyJag0lJKQzmDXGjzuEHvvzUx7AyMtYNa9vLWF3tQ9yWCgP 1tbw== X-Gm-Message-State: AC+VfDwma+Hk9fYb5w4pEsQYz+/ZoXPTUPBG2FEhYIWvsAeuCoOjOLyS srRtQZC7Ny7EDuyqWiVNHO4= X-Received: by 2002:a17:902:ef96:b0:1aa:ce4d:c77d with SMTP id iz22-20020a170902ef9600b001aace4dc77dmr11830781plb.24.1683597045176; Mon, 08 May 2023 18:50:45 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id i12-20020a17090332cc00b001ac5896e96esm139330plr.207.2023.05.08.18.50.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:44 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Kalle Valo , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 05/13] wifi: ath10/11/12k: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:24 -1000 Message-Id: <20230509015032.3768622-6-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765380950510936567?= X-GMAIL-MSGID: =?utf-8?q?1765380950510936567?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Kalle Valo Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Acked-by: Kalle Valo --- drivers/net/wireless/ath/ath10k/qmi.c | 3 +-- drivers/net/wireless/ath/ath11k/qmi.c | 3 +-- drivers/net/wireless/ath/ath12k/qmi.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/ath/ath10k/qmi.c index 038c5903c0dc..52c1a3de8da6 100644 --- a/drivers/net/wireless/ath/ath10k/qmi.c +++ b/drivers/net/wireless/ath/ath10k/qmi.c @@ -1082,8 +1082,7 @@ int ath10k_qmi_init(struct ath10k *ar, u32 msa_size) if (ret) goto err; - qmi->event_wq = alloc_workqueue("ath10k_qmi_driver_event", - WQ_UNBOUND, 1); + qmi->event_wq = alloc_ordered_workqueue("ath10k_qmi_driver_event", 0); if (!qmi->event_wq) { ath10k_err(ar, "failed to allocate workqueue\n"); ret = -EFAULT; diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c index ab923e24b0a9..26b252e62909 100644 --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c @@ -3256,8 +3256,7 @@ int ath11k_qmi_init_service(struct ath11k_base *ab) return ret; } - ab->qmi.event_wq = alloc_workqueue("ath11k_qmi_driver_event", - WQ_UNBOUND, 1); + ab->qmi.event_wq = alloc_ordered_workqueue("ath11k_qmi_driver_event", 0); if (!ab->qmi.event_wq) { ath11k_err(ab, "failed to allocate workqueue\n"); return -EFAULT; diff --git a/drivers/net/wireless/ath/ath12k/qmi.c b/drivers/net/wireless/ath/ath12k/qmi.c index 03ba245fbee9..0a7892b1a8f8 100644 --- a/drivers/net/wireless/ath/ath12k/qmi.c +++ b/drivers/net/wireless/ath/ath12k/qmi.c @@ -3056,8 +3056,7 @@ int ath12k_qmi_init_service(struct ath12k_base *ab) return ret; } - ab->qmi.event_wq = alloc_workqueue("ath12k_qmi_driver_event", - WQ_UNBOUND, 1); + ab->qmi.event_wq = alloc_ordered_workqueue("ath12k_qmi_driver_event", 0); if (!ab->qmi.event_wq) { ath12k_err(ab, "failed to allocate workqueue\n"); return -EFAULT; From patchwork Tue May 9 01:50:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91333 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2558350vqo; Mon, 8 May 2023 18:52:31 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ71K9xcoRWkxuGWkp+qnqtF3qAk5bAA6YyvM0KaONoBF/4fSnFCdVxbKi3Wry2NJydB5MfC X-Received: by 2002:a17:903:230e:b0:1ab:19f6:ef0f with SMTP id d14-20020a170903230e00b001ab19f6ef0fmr20817177plh.33.1683597151077; Mon, 08 May 2023 18:52:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597151; cv=none; d=google.com; s=arc-20160816; b=myYHT1GJRNtxshtK7wwssjUcW8Q9K7xwBozPTAbiRO3378bgFfVx6dfZcEkGwxEmef fKYZGk5tRSB8UQaDGGOzegSDi6kPVBKBbrgq0lwLpBFHRvEH96/9kjNxUMuQyn9zlOsk t/sG5xlYrJMgn2qh3E6ROUegVNL2UG3p8ohlnh7p8FWSfQvfwYeUgb162BHzvZ+jr1Sk X4Rb7y5IvUG/DM3+gtPBjHFnvXFed3bgzfb9AWYpevqFiqSV14UiNqUU5Gi6Umar+L9b 7kop190mBzRIEwxxpzQjkiCm56wiYWJsTkb6G9HXX2wA82+0/YzviaBYrRpe+pz6tvSt H2JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=81wtSULTB0ChL61hyyooDIvEy586bIFEIldimjXDoCw=; b=U7keZVQF3/MEB4bX7fCdAbqkQqGvvcoKv9XfOfmpUcCt+p08fyitE+eB6JDQ9bNnYi FE1iMSVcoanAO3Qq1V8sgfuRL5rPq1glOw8r4NOPQvq2KSdZY3Al2MSEkKaa34gVEA8+ UpUz0XCU1/RKJCt3Ws5HIKTTOjlan2Gch6Mmad4xJ2duWUCPSZc65NbHGQTuxksJPjFW D3kAcz7JMQ3yh6+1ahlrjsCRUvT5ZPcU0cc2WbqduDRy+Yohqex3nCV7YvAa3Up+FNNI lkJF6jGo0THsj6gO7zkXh0iUQaSUuM+xdHBkAPAJ4nW46dyI9O6I+ZgZlWTKDvPC1/Yl FVMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="Wus/yyNb"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z3-20020a637e03000000b005303c39c3a6si312982pgc.600.2023.05.08.18.52.16; Mon, 08 May 2023 18:52:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="Wus/yyNb"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233949AbjEIBvP (ORCPT + 99 others); Mon, 8 May 2023 21:51:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233906AbjEIBvD (ORCPT ); Mon, 8 May 2023 21:51:03 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06C8FAD1A; Mon, 8 May 2023 18:50:48 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-64115eef620so38952521b3a.1; Mon, 08 May 2023 18:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597047; x=1686189047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=81wtSULTB0ChL61hyyooDIvEy586bIFEIldimjXDoCw=; b=Wus/yyNbT6hCeCqfAjbRPgG9xEFpVMm+qPLAE/Id1SAoC/43EZnAXhfUrPO/0lxqEI EmY7kmttOyTPtq/JaLn0n92/O7yWkKXK+jeT1RsnV3G55QL8dnn7tROfuIEzSScjpCYc cLRoiZ2I9idWdzZ+2wOOY1Rwh5WQX84C8LaFkYB7+Ej42dR2pnebYgzcySmg5WSFOCTM rjvEfJ5phohVQQjckUxQNzndDGd1NV9wGmfeFACjGqYxGqU/XBlzhUIZrPxZEmS8QN9C XuOHeIavBlij1/aHO0rrrdQthhKwFR499hjKCG/fWzYrmTv9PIz4tQu7MwMbZsAMk154 2Ptw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597047; x=1686189047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=81wtSULTB0ChL61hyyooDIvEy586bIFEIldimjXDoCw=; b=W8ZSwpXILmsNnB6FfsjNR8idBtzjTeYvZWmIqP0iG4Cw8ownjelXl3XqFpy+IuCgil 6yMVHqIT7f12+qc8XwNysrRXjghKND8rcyJLH3+S6ncjLY6afOZH4P2gIs1CxPAlogZK SHKvIQA/HpTuNx2UNrxw5es7RlkHk4FRCRcw3u13K88TrUn7qna/xlFw4x3/OF1ftquZ FFiEP91SrF0Dr5xmvxiNWLC11+A0KjbEYMLqpx4wLr8U3FZW40mQr5soQwY1X8XnhNUN taNHdCMV9+bJWF+OEdsgnD//5XMlS63e7gR/CedrhPpkInNl/qiviUwUPJknRyOvU0bJ 11Gw== X-Gm-Message-State: AC+VfDySLrUj80jx+wlbEmHfL+B4fsSRC/xCdpaSKol1LyUOWK2nbT1p JETAU8YcsC13Ah7Tfpbzs6M= X-Received: by 2002:a17:90a:744c:b0:246:9c75:351a with SMTP id o12-20020a17090a744c00b002469c75351amr14109220pjk.12.1683597047142; Mon, 08 May 2023 18:50:47 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id g20-20020a17090ace9400b0024dfbac9e2fsm10533231pju.21.2023.05.08.18.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:46 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Chandrashekar Devegowda , Intel Corporation , Chiranjeevi Rapolu , Liu Haijun , M Chetan Kumar , Ricardo Martinez , Loic Poulain , Sergey Ryazanov , Johannes Berg , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org Subject: [PATCH 06/13] net: wwan: t7xx: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:25 -1000 Message-Id: <20230509015032.3768622-7-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379565994068617?= X-GMAIL-MSGID: =?utf-8?q?1765379565994068617?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Chandrashekar Devegowda Cc: Intel Corporation Cc: Chiranjeevi Rapolu Cc: Liu Haijun Cc: M Chetan Kumar Cc: Ricardo Martinez Cc: Loic Poulain Cc: Sergey Ryazanov Cc: Johannes Berg Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: netdev@vger.kernel.org --- drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 13 +++++++------ drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 5 +++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c index aec3a18d44bd..7162bf38a8c9 100644 --- a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c +++ b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c @@ -1293,9 +1293,9 @@ int t7xx_cldma_init(struct cldma_ctrl *md_ctrl) for (i = 0; i < CLDMA_TXQ_NUM; i++) { md_cd_queue_struct_init(&md_ctrl->txq[i], md_ctrl, MTK_TX, i); md_ctrl->txq[i].worker = - alloc_workqueue("md_hif%d_tx%d_worker", - WQ_UNBOUND | WQ_MEM_RECLAIM | (i ? 0 : WQ_HIGHPRI), - 1, md_ctrl->hif_id, i); + alloc_ordered_workqueue("md_hif%d_tx%d_worker", + WQ_MEM_RECLAIM | (i ? 0 : WQ_HIGHPRI), + md_ctrl->hif_id, i); if (!md_ctrl->txq[i].worker) goto err_workqueue; @@ -1306,9 +1306,10 @@ int t7xx_cldma_init(struct cldma_ctrl *md_ctrl) md_cd_queue_struct_init(&md_ctrl->rxq[i], md_ctrl, MTK_RX, i); INIT_WORK(&md_ctrl->rxq[i].cldma_work, t7xx_cldma_rx_done); - md_ctrl->rxq[i].worker = alloc_workqueue("md_hif%d_rx%d_worker", - WQ_UNBOUND | WQ_MEM_RECLAIM, - 1, md_ctrl->hif_id, i); + md_ctrl->rxq[i].worker = + alloc_ordered_workqueue("md_hif%d_rx%d_worker", + WQ_MEM_RECLAIM, + md_ctrl->hif_id, i); if (!md_ctrl->rxq[i].worker) goto err_workqueue; } diff --git a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c index 46514208d4f9..8dab025a088a 100644 --- a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c +++ b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c @@ -618,8 +618,9 @@ int t7xx_dpmaif_txq_init(struct dpmaif_tx_queue *txq) return ret; } - txq->worker = alloc_workqueue("md_dpmaif_tx%d_worker", WQ_UNBOUND | WQ_MEM_RECLAIM | - (txq->index ? 0 : WQ_HIGHPRI), 1, txq->index); + txq->worker = alloc_ordered_workqueue("md_dpmaif_tx%d_worker", + WQ_MEM_RECLAIM | (txq->index ? 0 : WQ_HIGHPRI), + txq->index); if (!txq->worker) return -ENOMEM; From patchwork Tue May 9 01:50:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91338 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2561120vqo; Mon, 8 May 2023 19:00:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4b4ZX+qlZeGTu74eXSHSsGgzAfFlfP3KWLi4u40ZwuvriRseZZ5/ntMNsQO1FhU5d814Yr X-Received: by 2002:a17:903:2448:b0:1ac:63b6:f1ca with SMTP id l8-20020a170903244800b001ac63b6f1camr9752057pls.0.1683597657928; Mon, 08 May 2023 19:00:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597657; cv=none; d=google.com; s=arc-20160816; b=FluMcSbCQckeIZUvuL4IewTAHTtx7Rh4QzYyl8dEE/5mLRLkRwUtxpF5/gu503b1dy mJjxBrwd/oWB3HHBj+Gs+O7PXAQcJYNmYAO9vQap3qdCvlfY+TnFFcuu1ekNa5w1sXa2 Ft4PgaCDSL5GAB0u6x585bfcciujykoDiY1XuRDvVZqHQSbJUF/pKMl7tRw+Yd2t5Rd5 b+lU2EjKW/miw4lFgFYlJdzcVhXlqQ2TLfhTRKyw15uczv4FoksB0C1JjyoV3xD12ELE HKkrtFk2YWAImqzqubd4wCBGLmJegJDX+e4u7W7A3ojJVICwVKhWLieE2qMeA3xfBrtV gokg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=7zbQywKsauWYv9va8GGE0qTax/82YpmoRVj80/h7hkk=; b=zV8xKMvU/jQddpDy6CtfVXqiK7ijxFDRbc4V+7mPzuSDyMUliXrxm9Go5PScng+50x 68HQ62FL9MPvBAt3XSC0cbRqCl2ph8bb2GnUNNQbQtpU8FtGjOIqPQEupT+HIRgarARF O/OdMI+g/OXMhKnqZfqp1fDW3FqgXSjK/eojcHGD528rlesmWl273oQGURV40/MpuL2G ykwN7L7UKV91/ip3QZ27C9Vc9jPK16c9cMCpwb9xx01h4QIliif2KkTLlf7r3rbjgiaK vPGbXbS0YKReQy11KS2zVXsDS0c1ibg3DwUQbCyrc6KiRaAE5qAt0aXWwL2SewZEbHF1 TQww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=icIui2MU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x1-20020a170902b40100b001a63af5f8d8si396847plr.4.2023.05.08.19.00.41; Mon, 08 May 2023 19:00:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=icIui2MU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233842AbjEIBvS (ORCPT + 99 others); Mon, 8 May 2023 21:51:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233867AbjEIBvF (ORCPT ); Mon, 8 May 2023 21:51:05 -0400 Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24F61D056; Mon, 8 May 2023 18:50:50 -0700 (PDT) Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-24e09b4153eso3751484a91.2; Mon, 08 May 2023 18:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597049; x=1686189049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=7zbQywKsauWYv9va8GGE0qTax/82YpmoRVj80/h7hkk=; b=icIui2MU1ql4m1vL7wZDdh6SMZWysVDcJbhMsSWpo47t5+z6KVN5QjRLsl8++RgXEX QytsjgSlOqeiS0dOcUDXXhgQ2GcBZjo4IbmvKGAwultCY5E6kDmPWJHpV4mgjrChdJkw D8/PZX3aZLhD8/EldHVTewAmdEZKRqOaT4KFTBEW0EvdCCBgUkBjUDtiOCWzBqBuUM3z YAg1TAA/AYE/WE2gjJU22YD7MOC3d/ugB7lVEzkZ9wHQ73K8GjHJoJv7hQU+r7BMhuZB iwBMUSX/LQvSg/3TMfyJHTYvq1nqfJEos3laRYtfXOaKAxEZOI+2s9uRQmoS6S+0Cne8 rFPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597049; x=1686189049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7zbQywKsauWYv9va8GGE0qTax/82YpmoRVj80/h7hkk=; b=KFIHu7vLkOrBbrxy772MEYj8+ctnAXxG4t3e6Y1BRRhMtMi6x3SWP7zm8y2NQelrnC gh5pKVWlRG6hIxBeFAUtwr5l81PksAF9eq7fi60+CLsPQ2pmtiPaLG1vBLVQTtbiGHTU s/NRWj8hlOv7xORN+cVlzYUxJiPdfK6FGjLOYjNi41aXMcRjoDbOW51iOWKStKHfs/Sh T5KmJZ/cUNeyJrgKPMmi/aF/unKZ4XshMBfSkj93WDuBmZ60JRAGqPP/roww0eGkPfEo kmsudEF/Pt0T+50RFwABlSmTkTMx6+Pu5BHjkor408PfFbt89KmYTKKef3diiHfDZXfb L5eA== X-Gm-Message-State: AC+VfDxRk6ArawSjStZkp1WSrjU+WA6WGMrmgG9doRwvpMyUT5Revu1C RsoVl/JaKuzgoA9f2R7fnEsOdGMmHSE= X-Received: by 2002:a17:90a:4611:b0:23d:3549:82b7 with SMTP id w17-20020a17090a461100b0023d354982b7mr12078229pjg.46.1683597049162; Mon, 08 May 2023 18:50:49 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id m7-20020a654387000000b0052873a7cecesm160074pgp.0.2023.05.08.18.50.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:48 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Andy Gross , Bjorn Andersson , Konrad Dybcio , linux-arm-msm@vger.kernel.org Subject: [PATCH 07/13] soc: qcom: qmi: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:26 -1000 Message-Id: <20230509015032.3768622-8-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765380097612697643?= X-GMAIL-MSGID: =?utf-8?q?1765380097612697643?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Andy Gross Cc: Bjorn Andersson Cc: Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org --- drivers/soc/qcom/qmi_interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/qcom/qmi_interface.c b/drivers/soc/qcom/qmi_interface.c index 820bdd9f8e46..78d7361fdcf2 100644 --- a/drivers/soc/qcom/qmi_interface.c +++ b/drivers/soc/qcom/qmi_interface.c @@ -650,7 +650,7 @@ int qmi_handle_init(struct qmi_handle *qmi, size_t recv_buf_size, if (!qmi->recv_buf) return -ENOMEM; - qmi->wq = alloc_workqueue("qmi_msg_handler", WQ_UNBOUND, 1); + qmi->wq = alloc_ordered_workqueue("qmi_msg_handler", 0); if (!qmi->wq) { ret = -ENOMEM; goto err_free_recv_buf; From patchwork Tue May 9 01:50:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91334 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2558473vqo; Mon, 8 May 2023 18:52:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6GpvKVnJisUcPhTFt0LG0r2EFb5E1b8Uk4RYDEIWFmX5wJTjhse7793CjoQRGaZa0OVylm X-Received: by 2002:a17:902:d487:b0:1a9:9a18:346a with SMTP id c7-20020a170902d48700b001a99a18346amr16208202plg.5.1683597175653; Mon, 08 May 2023 18:52:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597175; cv=none; d=google.com; s=arc-20160816; b=Nj6J5lIwlmGTWyJbYkmAk2PdiBDp2T/UO0QU0NwALh58nmGg9idg4HpuNeUIQkMsy0 wgULA4Yw8YWLOeEKMxtzgI+kMy/1Mp4LtfVOLYGW/heTAhyl+Mz4LYHxOevPIqhHeb+z zspY6CWj2uHc0dpSeM6mZjRZQiPBV46LOd/5qkYwS4LveCJktXDCmWAv8zUlvasiaG5o rJuReX9mqmSXEHaTWI7yRPBqENPxu1TWrcebx+TMZvKszDK++5M+l4FrmT0+1Eqitnx8 mvD7wG2jIJ+vIM+6KxJr9wnZT0yQre34/3SWK2dAp7M7+S7h4tIAvL8uuWQiZ32zsvug IgsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=E1J6Uhx7TdNa04N1msjENwvqnJR9gOFa4BQJITMRpS4=; b=MMehGytfLsNHeN5PTwQdke0IAhFlGkpiIiy5FwFWECV7aWc9dd48E2dqo8uTfVm8MF lk8dmvuWKwrhxS6WuQq0+bax54kvgJ0fgoJBeWr1+xDubkRw/Ren5msoKvNLFvsSdQsY YEdrzCJHwSxKxNjY6SoBnz44LLSgM5oBOycXz/ySHx8ppUDqW/eEIW75SpC3iokyXtXq BpbbQ1oZTIkfMBa/czUkVJ+jO47v0U4WClOZa8+O97KcL2S8uvtrD1ma/NMMMsMHzn1d FABZeEJLWvo9tS9XUUqdzff/5fPzFAY0WA6KGpJWHFKN2em8k9kwOWZgqItkq9neqgJZ s0VA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=gzWF12j+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s20-20020a639254000000b0052cb36e0bfcsi363708pgn.197.2023.05.08.18.52.41; Mon, 08 May 2023 18:52:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=gzWF12j+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234195AbjEIBvd (ORCPT + 99 others); Mon, 8 May 2023 21:51:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233989AbjEIBvN (ORCPT ); Mon, 8 May 2023 21:51:13 -0400 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5597293FB; Mon, 8 May 2023 18:50:52 -0700 (PDT) Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1ab032d9266so49781765ad.0; Mon, 08 May 2023 18:50:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597051; x=1686189051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=E1J6Uhx7TdNa04N1msjENwvqnJR9gOFa4BQJITMRpS4=; b=gzWF12j+f8UHaykX6yDNVACmPlRUC0e+ltWVDGfncxHVSKQf3wuisdYV7wzrDGAt+p AAxNEgDFuPtKZ6xyu1JIbH/T8eeOGBPkUwxP8y9DaE188kc2J9E23SJEi364QtiVKKHB GkP6iRWoOS+BX9waw50uSbCgDIaOa9qfvRYtjcb5yBJX1O89QozI+FAKzgGz1QyqZNaZ V0lBc4ofgtARKJe8sPuxOQlBYsJfcgubXLYT9csuQA59a/ggbw3ipSYez5FeuqhJwREO bO7QG394ITobJfja44AzxtPCw2UiLxvnQtOWsI6CsoUpfX+rEcsJkXk2GsejhX0x2wuA Mxrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597051; x=1686189051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E1J6Uhx7TdNa04N1msjENwvqnJR9gOFa4BQJITMRpS4=; b=fWPZNB4R+s5vIUkE4WjCePh0k1f6EvKWhQ+WxH+F/Wc4/rsYf3aI5IG5c+KdZ4G9La LDnVDPniWMi7OUZPvvXGE2ZmLh42SUJPdyQIrU95M3gkieGhSLSMyg8xU4EDPlZO/ay7 6tJGK1mhVXz8eWp4NZxbyAYZlr5GhrzZHopdw8Rfj6STyyuiFPGWkd8OAeUxEcqFjk9J rwU+3AJ655sc5knQN3Z3G7g9G/82XYUFYl+nujh1fel7YnTnmYQAKLMqh+UX8aUTGCiG vQ51cJXFGozcVsssnzVDiYTHnGKA+6Iczgr92/YO2b4DS+eqtl/PDldTLDc4hosFW4KY npCw== X-Gm-Message-State: AC+VfDwG9UrF33wHWJZ3Rd3m7YkJqV87O9cJNXgSf7c5dt9CCYMEC98W DCfwgNWbzYY5jxEurJsaDOA= X-Received: by 2002:a17:902:ec8a:b0:1aa:f3c4:7582 with SMTP id x10-20020a170902ec8a00b001aaf3c47582mr16797753plg.31.1683597051056; Mon, 08 May 2023 18:50:51 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id 6-20020a170902e9c600b0019a7ef5e9a8sm157241plk.82.2023.05.08.18.50.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:50 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Wang Yugui , Chris Mason , Josef Bacik , David Sterba , linux-btrfs@vger.kernel.org Subject: [PATCH 08/13] btrfs: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:27 -1000 Message-Id: <20230509015032.3768622-9-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379592048517354?= X-GMAIL-MSGID: =?utf-8?q?1765379592048517354?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. v3: btrfs_alloc_workqueue() excluded again. The concurrency level of a workqueue allocated through btrfs_alloc_workqueue() may be dynamically adjusted through thresh_exec_hook(), so they can't be ordered. v2: btrfs_alloc_workqueue() updated too as suggested by Wang. Signed-off-by: Tejun Heo Cc: Wang Yugui Cc: Chris Mason Cc: Josef Bacik Cc: David Sterba Cc: linux-btrfs@vger.kernel.org --- fs/btrfs/disk-io.c | 2 +- fs/btrfs/scrub.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 59ea049fe7ee..32d08aed88b6 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -2217,7 +2217,7 @@ static int btrfs_init_workqueues(struct btrfs_fs_info *fs_info) fs_info->qgroup_rescan_workers = btrfs_alloc_workqueue(fs_info, "qgroup-rescan", flags, 1, 0); fs_info->discard_ctl.discard_workers = - alloc_workqueue("btrfs_discard", WQ_UNBOUND | WQ_FREEZABLE, 1); + alloc_ordered_workqueue("btrfs_discard", WQ_FREEZABLE); if (!(fs_info->workers && fs_info->hipri_workers && fs_info->delalloc_workers && fs_info->flush_workers && diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 836725a19661..d5401d7813a5 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -2734,8 +2734,10 @@ static noinline_for_stack int scrub_workers_get(struct btrfs_fs_info *fs_info, if (refcount_inc_not_zero(&fs_info->scrub_workers_refcnt)) return 0; - scrub_workers = alloc_workqueue("btrfs-scrub", flags, - is_dev_replace ? 1 : max_active); + if (is_dev_replace) + scrub_workers = alloc_ordered_workqueue("btrfs-scrub", flags); + else + scrub_workers = alloc_workqueue("btrfs-scrub", flags, max_active); if (!scrub_workers) goto fail_scrub_workers; From patchwork Tue May 9 01:50:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91343 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2567615vqo; Mon, 8 May 2023 19:17:02 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4tyMsvOz4dWThRb6Jyu72jHYMg22lOag1uW+mvfxMzYbnU66sR51G1H27O1oUOVHbPCjp8 X-Received: by 2002:a05:6a21:3399:b0:ec:e5bb:1bc4 with SMTP id yy25-20020a056a21339900b000ece5bb1bc4mr16208121pzb.6.1683598622088; Mon, 08 May 2023 19:17:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683598622; cv=none; d=google.com; s=arc-20160816; b=S0FYMkhQ95jvYf54SHCFGzZxnc+5gNoXmAqAeDxWoaxNuYg8fhK2Xk6r9cJzPrTsCY cEUWGGXRHDcdmHbTDN/Wg37sRSvKCV/iDwSFa3z53RmIOf2CkcWfpZbDbv1L+/I+Th6V YXhKeK/IH0tbZIKjBREK7TekoceLsmhMi8cRDXrgtycCnDo4gfIXwm5xGTQf6zyDQGsf z0OTt7Mu03AQd40xnIuwzP3LZsrS2OGWEdPHB3R+PAR3SWPnMKZ86bdR2a6YnTDdAq3A iSW0xdNeAtAiaT1HGPYlZquHi+54qunJkBjxoIMaXfKHCNwx6D9Gn1nGSrvsVbN+E1um dXuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=lP5IaIFdiCV3CLFQyofnNGbKobWaxQ8hETIzTLkOsHM=; b=mMIPrw5K030COrdUoAEB+htik+Aei1a7KdP0i24EnATFcu7xjE92OytrKlTDK9LQvd d/vhRFFkorz1OW63/lkQ6pfV5nDkvPUlOsEX2516N9nqSB2uVugQmuDZiiZsbYvcPe3f E2lKB2hvl+okiXI1o1PmYatAPy5hpXaVe7h8+tiy41HurZkVWaMErzANX1zQcbeJw0Aq sB921WiPnhMVRNu8BxYUD7SpSXiPg2SzVSulTUEAvIfa0msNdiL877pPBDjzo0hxDRqs 7M9MoUPPLY2UP7AmsO6cf93uuNtKaO2ndCraob5pyegk1+wMveoe6R3dx+qFEjE/kHsx lkyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=IuzHeRYk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k15-20020a633d0f000000b00520b0dabc42si318655pga.777.2023.05.08.19.16.47; Mon, 08 May 2023 19:17:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=IuzHeRYk; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233884AbjEIBvh (ORCPT + 99 others); Mon, 8 May 2023 21:51:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234085AbjEIBvY (ORCPT ); Mon, 8 May 2023 21:51:24 -0400 Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EE9EA26E; Mon, 8 May 2023 18:50:54 -0700 (PDT) Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-1ab0c697c2bso49726325ad.1; Mon, 08 May 2023 18:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597053; x=1686189053; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=lP5IaIFdiCV3CLFQyofnNGbKobWaxQ8hETIzTLkOsHM=; b=IuzHeRYk9bZCJjY+c51BTwSfwNB3YJPrwNIPsXNAYGwynBe5GubLNbMQUh3GkPIOx1 ABfJV/ZnmRKgJM6p5LnQWxKslcwTg9CUpSJjjkc+11iRUCyaGTcwxShndkiTqlidzp41 dVrrF2zYq0a86ifYSpcqfu8MOK6rWMIYJn9suM7zv/mgxVvwCqXCRTDGuaxQuY3FMYe8 QAD6dgtLiBySt4uA3CL/zd/ocT5WWm/G6xQ+gqrebAlZvFbAlIiAsWiG4G5bzBQ3BLMr 7GKmdD5ou02+spSYoQ7FJjl383SXdeENzKhNCYO/Wd7MbUIwC0BrvRLFZo5zYqo4w9zW 486w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597053; x=1686189053; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=lP5IaIFdiCV3CLFQyofnNGbKobWaxQ8hETIzTLkOsHM=; b=UKu+3zAbhr0PmycHDId26v2RFBG1vUWYca/NwZg/wAqkOvp8j8+8h+ugBGWF9HNaVq eTLg2up3q2dUGctEyNPVxIYjgzTTcEf9UvVsyR9Xd93ia++Lor3z4fJgYQcKxvM5doES y1Fwc2KPeT9Z8ng+4xWngPMZRj6wzOLmFTrBJsbfaT9s1LZZV2tFiOQqe1EbF1bkHYAJ pz8NhsOib37NWm9WEqRnHXHoXXCscQtTf9kdsoi5UUGnOKd2IGsBmLtBXPw2JMyLTQab GdfoJEFg2cNOcpoygyffKqkD2jrrZsTHua1ZOsDZ3UonAhbdIPErnQsXWtmiUQ9dxUT6 iV9Q== X-Gm-Message-State: AC+VfDzhoYqSj3OlsPANQytFN7NvPLFF6VjYVbo7H896ia3vLDCw8YiP 6NELDi2ls7fK25k4P+JZudw= X-Received: by 2002:a17:902:f816:b0:1a9:3916:c2d1 with SMTP id ix22-20020a170902f81600b001a93916c2d1mr13097348plb.54.1683597053120; Mon, 08 May 2023 18:50:53 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id bb5-20020a170902bc8500b001ab05aaae2fsm149237plb.107.2023.05.08.18.50.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:52 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Manivannan Sadhasivam , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 09/13] net: qrtr: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:28 -1000 Message-Id: <20230509015032.3768622-10-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765381108554804166?= X-GMAIL-MSGID: =?utf-8?q?1765381108554804166?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Manivannan Sadhasivam Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: linux-arm-msm@vger.kernel.org Cc: netdev@vger.kernel.org --- net/qrtr/ns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/qrtr/ns.c b/net/qrtr/ns.c index 0f25a386138c..0f7a729f1a1f 100644 --- a/net/qrtr/ns.c +++ b/net/qrtr/ns.c @@ -783,7 +783,7 @@ int qrtr_ns_init(void) goto err_sock; } - qrtr_ns.workqueue = alloc_workqueue("qrtr_ns_handler", WQ_UNBOUND, 1); + qrtr_ns.workqueue = alloc_ordered_workqueue("qrtr_ns_handler", 0); if (!qrtr_ns.workqueue) { ret = -ENOMEM; goto err_sock; From patchwork Tue May 9 01:50:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91344 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2567654vqo; Mon, 8 May 2023 19:17:07 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4BHI7PmvIyOYLxe+escp98MbUtlXCcgUOj67P8Zch27AdfCzIVSUpGao2BNx9C0Tpdl0+T X-Received: by 2002:a05:6a20:918a:b0:f2:9918:eb73 with SMTP id v10-20020a056a20918a00b000f29918eb73mr16096641pzd.46.1683598626950; Mon, 08 May 2023 19:17:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683598626; cv=none; d=google.com; s=arc-20160816; b=yI7sYu1bb44Fam6SNpDPwDXylVV0h/x2RqqFx2AGIkBhHVDwAxWghwX0VrP4CpmWgg 2o82caJLrbp+dQgbJOaxjIX30GcwiKNa14UUZrhLopAW0xsbKj3QvmydBgX1bCMObK2D BpzJo29RGwDRuk4duYz1WsSlgRBPryR7gDUVVfSbTkPzZ/BiUYO+q+5n3ZUEevPJ8skH D5bcf64eqtW1PiloR8kGpC1f3XVpOmvrkSWc8rDOQ4SMbqcIVZ3HbKcL8SmprC2MrTb/ 9nvNm5pJEScFSxmdBdtEkPMwwAhcmXXEd4dQ3LBJwj/K4VJDJ1cNqY+R7qsGxUUZfUp9 sldw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=4wzzVWCLT7CybQfeQQoKtalxgsWtn1vK9dyFV4Pj3x8=; b=K/loigverIAmANiclU5GxlaiHbimAGRPITMP1QMDgWZmH04+smB3Mft6wD6CIOJakW 1qrn1B7cqw7jNSuMKRr/WtXCNYA9foNzpL1d4JX6V8Pq85rX1M9ao5wxct1tY3Tk/eh5 axlvQdsBntxnvQB3KXog0Wipg7Cd9HLF8l8/osyUbiDdVKnqQdr5Mcy2ZEcfrposScKD m6a11NBI9tahqG2sA1yw/vtm4eeYkkfYqZsWA+NFKRHjQvmIHZMQBGnjdiZnuFcrqIjE FEb7D5aVxHN0EKrHLCZ4J2BD2ShVSY4wUF2aSmWE/5iAf6NxYlAo8pxwT+YlN+CeJL9B 8RhQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=dCnxds2h; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j187-20020a638bc4000000b00513ab078092si382336pge.438.2023.05.08.19.16.52; Mon, 08 May 2023 19:17:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=dCnxds2h; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234234AbjEIBvn (ORCPT + 99 others); Mon, 8 May 2023 21:51:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233960AbjEIBva (ORCPT ); Mon, 8 May 2023 21:51:30 -0400 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75F54A5FA; Mon, 8 May 2023 18:50:56 -0700 (PDT) Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1ab0c697c2bso49726565ad.1; Mon, 08 May 2023 18:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597055; x=1686189055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=4wzzVWCLT7CybQfeQQoKtalxgsWtn1vK9dyFV4Pj3x8=; b=dCnxds2h5O2JmS2nsr5K6wfDnSJwjmLkmuWoZ1BKnNWPks1H/TMA9WWYDqkkNmOl2U Il4En8UeeDp+SHRwIagQnWPiKjBYH0qxsuqGVbpBnoKZZPK9/YXQ4ublXUCHRlhryEOF vDXkFY1yxE5CjldZNuAfvDsMb0UNXwBy2tCDkOGo0HUvB7pLF97rnLrT3RI5QH3o2WEF RruJx2RPaet2NyvHcHki5HqrXuF7BPwka9wJSy+EVUhQvU6E1DaOszxDjirQVpEYUwLN WVfgRENEINfJgaCOJorTn1blvsAfZKKWhdum4RUllaImWV+qIboofUJcKiIr+xIWt2Kp QRcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597055; x=1686189055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4wzzVWCLT7CybQfeQQoKtalxgsWtn1vK9dyFV4Pj3x8=; b=j1LDOKYBQCXRSbDjdv9gHEqrUlmec4zWEKaemXiWTCE4HyNbUJb90GNBGxqkLp//WQ PznfIVEHPP9J58oRLCRTDTD5o+kdyqK5AxIHNNJnX/cKPKrFVlpKjB8vFDZ3r8uOmE19 JoqRQQxqqWB1qJb6gNjHuILzYqnjfaz3jLY3ZmpFaC1esEdM26fn4xOyagNYWxHN89dP UiCvVj3/R7sXV691T8Ll71T4ZTTuZFKGRFaCmcUa9nKrZyCVauCDZo01U7fznLINEF9g fVFpTtkwFAJmYqClHVfbjjloEcZiaeuIQ+u+bOK2RbsOJ1f50Ihe+bNs9HehaCFEXpS4 VSFw== X-Gm-Message-State: AC+VfDx7yr7JmYPhuy1I1DKbQE8IUlTlCw3+pz96zwFLEyRVmxVeQ+9l DLWYc+FlUsPNcB0xW3cINiU= X-Received: by 2002:a17:903:2292:b0:1a1:bff4:49e9 with SMTP id b18-20020a170903229200b001a1bff449e9mr17671752plh.23.1683597055036; Mon, 08 May 2023 18:50:55 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id jd12-20020a170903260c00b001ac937171e4sm133425plb.254.2023.05.08.18.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:54 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , David Howells , Marc Dionne , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-afs@lists.infradead.org, netdev@vger.kernel.org Subject: [PATCH 10/13] rxrpc: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:29 -1000 Message-Id: <20230509015032.3768622-11-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765381114132328167?= X-GMAIL-MSGID: =?utf-8?q?1765381114132328167?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: David Howells Cc: Marc Dionne Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: linux-afs@lists.infradead.org Cc: netdev@vger.kernel.org --- net/rxrpc/af_rxrpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index 31f738d65f1c..7eb24c25c731 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c @@ -988,7 +988,7 @@ static int __init af_rxrpc_init(void) goto error_call_jar; } - rxrpc_workqueue = alloc_workqueue("krxrpcd", WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_UNBOUND, 1); + rxrpc_workqueue = alloc_ordered_workqueue("krxrpcd", WQ_HIGHPRI | WQ_MEM_RECLAIM); if (!rxrpc_workqueue) { pr_notice("Failed to allocate work queue\n"); goto error_work_queue; From patchwork Tue May 9 01:50:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91335 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2558789vqo; Mon, 8 May 2023 18:53:52 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ44z6JOmzbVpudCZy+j7564oR15JZcItKkdcHE1i/Eytixv3UQjt77wAqcmj6Eq6RwrnVqh X-Received: by 2002:a17:90a:7f86:b0:250:888b:8882 with SMTP id m6-20020a17090a7f8600b00250888b8882mr4925811pjl.7.1683597231886; Mon, 08 May 2023 18:53:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597231; cv=none; d=google.com; s=arc-20160816; b=GDTQpIVyNnV/hqiceutXFZNfwYzptb0fWSjrsN5i9hzXMuigiI9vOgenAv/x6otPzy +KmAkkaXskLnFbptibdP44lObVvRPueuXNNeLyY6S3zYBMpUsJr3ObjsYamXK8W+lvhk +XEqI6YOyTrY4TZQcnBjULnfm2dM0d8E+C4HQOPslgOnZ6uVSYemcbj84o4dT7Kheelk WRIEYvKryo6plzuknZu/i6Tsg4/jv9c69lP1e5FLXBEWzi0xA19LKxMgTutu72FfFmGR SjuBL1CFK0/4wht/5hT48soXOazL/rl0rmGd6F0m4sZUJJ6TRH2cMvelOHtE5aiXB4ub t2lA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=r4f4E1+rA4dHfPSu/M3jA+g54pakUhc0stJxnLeN1Fs=; b=nadeipHRLy1Ul4mwvdRiIxie5lNKvlalnZaw+0dtL6Frg+0c+3cKIzNh/jwhBIS/dF kYlIkAeXQYmAVxo73ScRbxJ17JTgEzo4VBoJQaak31+yJRNraU2JxmSRe9t/2/56zmXY SsBBN6F40nS1dTS4YNuwZIIGe7ayXShyLLewq1Bjw1IB+f3Xc09i8LFpDX0GI0bVp+sj qVcrradbYTFFMNwEfL4yFz8y9qLUqK9O+5wTKKJNvHKoZM4qCebT2HJJdswQZWy7B4Q9 L0VOOQB+MseK1R9QiGDhOcXnIK6N4JCq7QBUC8H4JMtlNbPCt4kJ6q+hgGkZOWm9ahYq +cHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=BlC5e7sL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q17-20020a63bc11000000b00519d69a233csi314093pge.626.2023.05.08.18.53.37; Mon, 08 May 2023 18:53:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=BlC5e7sL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234282AbjEIBvq (ORCPT + 99 others); Mon, 8 May 2023 21:51:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234167AbjEIBvb (ORCPT ); Mon, 8 May 2023 21:51:31 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BCF59EF3; Mon, 8 May 2023 18:50:59 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-64395e2a715so5178880b3a.3; Mon, 08 May 2023 18:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597057; x=1686189057; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=r4f4E1+rA4dHfPSu/M3jA+g54pakUhc0stJxnLeN1Fs=; b=BlC5e7sLPZcdnhGY9IdaZcf6A0c4mdvoKJTXiiChnnwy3x5RM8qM7xkAP0OVbMQaeW MR3fcwXTNXAnyJWfklwKLK4Wets4jaq7tMX/6qGkC4e/KnUzhIGo1LMHJmvqaWpg7H6t EJ2KqP10bIIhBuEDZiZ1yF5VKoXCvdV7bJ/oy/AttGnBg+cQJPeS91PtzTDi35LMH3/n sRRodVOwL/YgILFkdVlMafLyauE+lc+mS/5klszWC3n+YKzsk4YJ/gSU044e6RMak5bG GyZCnUUHTd5XJZDOH68e1lXrcHLBvLzB2hlUojtfAuupnCfaVlkmlCHj1tAjl7u8UdoT 27nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597057; x=1686189057; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=r4f4E1+rA4dHfPSu/M3jA+g54pakUhc0stJxnLeN1Fs=; b=TtJBBCrkFVWzxUhNNynjjB4fkk/xoGh1OkctoYFwVtKUEw1yOHXnww5hHv5t2nL27U f1pK1C3wIH7lwPsx2DyTdxiDGz/SZNIRsxtmQzCLrTBNFzZYd83TvD8w9rXp1I/MRQtI 9TtJw/UDm0Rw8dCg3HnwfXnaiDmA6p4C468Q2kOoxBGgSPGZRurr/oDmJfurF/HBDvuq IW54p8PiEbTmEx5lDkn6uCGZLqlL1IFfgeCAk0XutKXiigDwtR/dZPxIA3vUtn/HAeYh yjLSlrpHh7tRv3pqwCjz1gtWM9EH90UrQyEm/Zbx5O++ivjqwwx08fF4FU1HGzROCzTF 6QrQ== X-Gm-Message-State: AC+VfDyN5OsY50FuLzdexjot5/GDe9HWURv2GZyjJG1D++MI3B8dvZtL WJk1ViNGKp9n6vnSy8c6auE= X-Received: by 2002:a05:6a00:2310:b0:642:fbed:2808 with SMTP id h16-20020a056a00231000b00642fbed2808mr16104761pfh.25.1683597056841; Mon, 08 May 2023 18:50:56 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id y9-20020a62b509000000b0063f0c9eadc7sm534263pfe.200.2023.05.08.18.50.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:56 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Boris Brezillon , Arnaud Ebalard , Srujana Challa , Herbert Xu , "David S. Miller" , Shijith Thotton , Vladis Dronov , Vincent Mailhol , Wolfram Sang , Alexander Lobakin , Minghao Chi , ye xingchen , linux-crypto@vger.kernel.org Subject: [PATCH 11/13] crypto: octeontx2: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:30 -1000 Message-Id: <20230509015032.3768622-12-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379651018600027?= X-GMAIL-MSGID: =?utf-8?q?1765379651018600027?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Boris Brezillon Cc: Arnaud Ebalard Cc: Srujana Challa Cc: Herbert Xu Cc: "David S. Miller" Cc: Shijith Thotton Cc: Vladis Dronov Cc: Vincent Mailhol Cc: Wolfram Sang Cc: Alexander Lobakin Cc: Minghao Chi Cc: ye xingchen Cc: linux-crypto@vger.kernel.org Acked-by: Herbert Xu --- drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c | 12 ++++++------ drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c b/drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c index ddf6e913c1c4..30e6acfc93d9 100644 --- a/drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c +++ b/drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c @@ -357,9 +357,9 @@ static int cptpf_vfpf_mbox_init(struct otx2_cptpf_dev *cptpf, int num_vfs) u64 vfpf_mbox_base; int err, i; - cptpf->vfpf_mbox_wq = alloc_workqueue("cpt_vfpf_mailbox", - WQ_UNBOUND | WQ_HIGHPRI | - WQ_MEM_RECLAIM, 1); + cptpf->vfpf_mbox_wq = + alloc_ordered_workqueue("cpt_vfpf_mailbox", + WQ_HIGHPRI | WQ_MEM_RECLAIM); if (!cptpf->vfpf_mbox_wq) return -ENOMEM; @@ -453,9 +453,9 @@ static int cptpf_afpf_mbox_init(struct otx2_cptpf_dev *cptpf) resource_size_t offset; int err; - cptpf->afpf_mbox_wq = alloc_workqueue("cpt_afpf_mailbox", - WQ_UNBOUND | WQ_HIGHPRI | - WQ_MEM_RECLAIM, 1); + cptpf->afpf_mbox_wq = + alloc_ordered_workqueue("cpt_afpf_mailbox", + WQ_HIGHPRI | WQ_MEM_RECLAIM); if (!cptpf->afpf_mbox_wq) return -ENOMEM; diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c index 392e9fee05e8..6023a7adb70c 100644 --- a/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c +++ b/drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c @@ -75,9 +75,9 @@ static int cptvf_pfvf_mbox_init(struct otx2_cptvf_dev *cptvf) resource_size_t offset, size; int ret; - cptvf->pfvf_mbox_wq = alloc_workqueue("cpt_pfvf_mailbox", - WQ_UNBOUND | WQ_HIGHPRI | - WQ_MEM_RECLAIM, 1); + cptvf->pfvf_mbox_wq = + alloc_ordered_workqueue("cpt_pfvf_mailbox", + WQ_HIGHPRI | WQ_MEM_RECLAIM); if (!cptvf->pfvf_mbox_wq) return -ENOMEM; From patchwork Tue May 9 01:50:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91336 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2559229vqo; Mon, 8 May 2023 18:55:19 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ49vtEEhy/qSgjg7cN1dIQgjJceF7ILglQc2c2ReqpM2Z9c+YvmYSYq5Aujgj9Pj8A/essK X-Received: by 2002:a17:90a:ec01:b0:24e:1ca6:2206 with SMTP id l1-20020a17090aec0100b0024e1ca62206mr19373843pjy.8.1683597318728; Mon, 08 May 2023 18:55:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597318; cv=none; d=google.com; s=arc-20160816; b=Q50YV8a1FMl7TWiggo/WYniaMMvNjk/jLRtWudCZFgdHy/DoU//h5t2/mV64pPFhSF u108UvJY58UON87Z8XLoH4Y8aBc+t/qqSHXvyeucnEneaX5Brwp+NMFHz5pir0ApF4Yr fnSrmUDu3GJ9pVHNZ+yOiK0lpqgz3MNjzba86Nfn6yYoWFDQSZtn5iU9928qe+6t8Woo L88zzpjLOtQ7Iz6PWMyrFrBMY009fmArPsjbzDps2iHm/QeZaGg1HyxQ70f6ViO7207c fLBEM8kUCSuTJzT4VwIa5rzYJgWjE3/FfIjvi36hYEsfcJSE0W1+BBFk3YZHzRnqH8je 4w+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=6dC7RqULScM3cUuSiw/pxvquCOcwrRPE1SiWm7WCEb0=; b=yNyynAmMbQL6/IsbYh40Y7I5innbQAnVd0PDPHu2+KNpRv6mX5Ldho3XQ3FrVqqWKO xra7RUmTWnXGLjUD9dqhGr6nFa+RDTh/3SCfyf+AxovfCaZfQSxFka1uChE6hnPH2rAP xOPmBuTNe9NqhNw/0hmOmQCTDHCcB6sdJ2rjlVwuVMEMe8YIRq3zu6WBJfcOu6wqXoNI +j2g+QcGpIA1qQxqHHSyypQTpsT8jhcWQ2hVFedxzcNxV0ca/4Z0qQnyj4/1uqEIbdF7 9Hcn9QcucTxZMV4nXSBMsbCNcw7CGusksEyn23ZFOjfLKVfCKQFfv5HCIxhiEtMZkdrd Wazw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=HXZsHlbI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f12-20020a17090aa78c00b0024d7fdc4778si24548296pjq.32.2023.05.08.18.55.03; Mon, 08 May 2023 18:55:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=HXZsHlbI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234306AbjEIBvu (ORCPT + 99 others); Mon, 8 May 2023 21:51:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234169AbjEIBvb (ORCPT ); Mon, 8 May 2023 21:51:31 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80BD9D07E; Mon, 8 May 2023 18:51:01 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-64115e652eeso39074740b3a.0; Mon, 08 May 2023 18:51:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597059; x=1686189059; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=6dC7RqULScM3cUuSiw/pxvquCOcwrRPE1SiWm7WCEb0=; b=HXZsHlbIhzqti5tgJYiPvXUl+AJNb4YJD4WPyehn7JumU60rY1LJ19vOZkS4pTR4SH uvPKNk2AWKs4sMWXJSu4YHq2V9fL93fJOqYK4AM2vL2/0T2a0p0gKZvwHXwwinBnTGyv xm1MMLptr/rfEVaC1aP7K2emb+bC2ZTUkMgStaekVIeNPN2lsAgv87HG8vPxFtW6WomP y9+8YGpZ+c6cN2/hklGRg49a20646oWxbJZdKscD6gX81fndKjQ4GE1nuG6fXr+a+uoh z7UcCDvFyHbd9N/7u/MGcE3yXRzfOALk5il1nxfU4SKdmMTDwIjlPXv78NXQRhips99r 4QBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597059; x=1686189059; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6dC7RqULScM3cUuSiw/pxvquCOcwrRPE1SiWm7WCEb0=; b=DdvOwwGIOsB/X9P93PiCqeV2VcmjPEzJ3vBLY0lL0H7ht9OV0YZCxIEM4z5D8CA2n2 7LUZmct8iXiXOKqE+5np0RVoK238opzUslu6LKCMj+ZqIKevSxgECjUpVZeoX0Qy4abG KsRgocOiXc9A4UeNC0jVvHnlWsj2Xu00jSGu+NWya7+90FN06aIsLkDT0evk86raWuA0 83Msl5v8qTlOr1897i3SYfKovLZfxFARPtrKKCCIe3rY4OPJGsL8+nars5l2A5H0vNzi YCCjLzS3cQRRa2CPC5Vgdp2CyJDdxDYlydMpl4BPUKZ67yrIYF6rXNeaGzbqVSoXP9tB OVjg== X-Gm-Message-State: AC+VfDxI8CO6q6g/COzXdlfmGFwQDe9oWLSOMYHoOjaKzQXUeEk0aqOr NgD1uIe+tpFxo03S7hQ8CRDXE0MLPgA= X-Received: by 2002:a05:6a20:5495:b0:100:6a95:c288 with SMTP id i21-20020a056a20549500b001006a95c288mr6154056pzk.7.1683597058725; Mon, 08 May 2023 18:50:58 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id p5-20020aa78605000000b006438898ce82sm589449pfn.140.2023.05.08.18.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:50:58 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , Philipp Zabel , Mauro Carvalho Chehab , linux-media@vger.kernel.org Subject: [PATCH 12/13] media: coda: Use alloc_ordered_workqueue() to create ordered workqueues Date: Mon, 8 May 2023 15:50:31 -1000 Message-Id: <20230509015032.3768622-13-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379742022497222?= X-GMAIL-MSGID: =?utf-8?q?1765379742022497222?= BACKGROUND ========== When multiple work items are queued to a workqueue, their execution order doesn't match the queueing order. They may get executed in any order and simultaneously. When fully serialized execution - one by one in the queueing order - is needed, an ordered workqueue should be used which can be created with alloc_ordered_workqueue(). However, alloc_ordered_workqueue() was a later addition. Before it, an ordered workqueue could be obtained by creating an UNBOUND workqueue with @max_active==1. This originally was an implementation side-effect which was broken by 4c16bd327c74 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered"). Because there were users that depended on the ordered execution, 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") made workqueue allocation path to implicitly promote UNBOUND workqueues w/ @max_active==1 to ordered workqueues. While this has worked okay, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue updates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. This patch series audits all callsites that create an UNBOUND workqueue w/ @max_active==1 and converts them to alloc_ordered_workqueue() as necessary. WHAT TO LOOK FOR ================ The conversions are from alloc_workqueue(WQ_UNBOUND | flags, 1, args..) to alloc_ordered_workqueue(flags, args...) which don't cause any functional changes. If you know that fully ordered execution is not ncessary, please let me know. I'll drop the conversion and instead add a comment noting the fact to reduce confusion while conversion is in progress. If you aren't fully sure, it's completely fine to let the conversion through. The behavior will stay exactly the same and we can always reconsider later. As there are follow-up workqueue core changes, I'd really appreciate if the patch can be routed through the workqueue tree w/ your acks. Thanks. Signed-off-by: Tejun Heo Cc: Philipp Zabel Cc: Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org Reviewed-by: Philipp Zabel --- drivers/media/platform/chips-media/coda-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/chips-media/coda-common.c b/drivers/media/platform/chips-media/coda-common.c index d013ea5d9d3d..ac9a642ae76f 100644 --- a/drivers/media/platform/chips-media/coda-common.c +++ b/drivers/media/platform/chips-media/coda-common.c @@ -3268,7 +3268,7 @@ static int coda_probe(struct platform_device *pdev) &dev->iram.blob); } - dev->workqueue = alloc_workqueue("coda", WQ_UNBOUND | WQ_MEM_RECLAIM, 1); + dev->workqueue = alloc_ordered_workqueue("coda", WQ_MEM_RECLAIM); if (!dev->workqueue) { dev_err(&pdev->dev, "unable to alloc workqueue\n"); ret = -ENOMEM; From patchwork Tue May 9 01:50:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 91337 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2560241vqo; Mon, 8 May 2023 18:58:47 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ618gmLwBRKkzI5RoxiIoyYeajz0ztj0/hGuvpX1cKxXOWohl2YBQM/aq2DudVhyUa+N3ZF X-Received: by 2002:a05:6a20:729e:b0:100:bae5:acf3 with SMTP id o30-20020a056a20729e00b00100bae5acf3mr5297674pzk.37.1683597527110; Mon, 08 May 2023 18:58:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683597527; cv=none; d=google.com; s=arc-20160816; b=FQu8+1TfqMGW98tcT+t7TLIDTXBvKg+C8aBNutgdNOy9K4o8oEPZ20WK703HQYYPtO 984FrY/2AA4sy2N8PAZPL2xJWIq7uwvKx1JtzJlwfaGrM4lhCJvRHjttzohm4rWbkRd2 GRD4j9073qZEFuvIP2uIM17+AkUEkQ7QfnqOk1x2shfQ3VwF+n7n5jNkf3dcYoBetVQa vRjh9S1W1xfxIp/riy2FA+kk3WRJWwwgrfFXcg8VGjtvM4/XMt1o16SwCqjJRqNAeyvP n+LG+cEi9f1BxBcE0xxc1C0ET4hwptZPrNRqbW7oZhUzDU1GwkcZA4wVlPNz+p80Xlb/ LtuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=RA5k4x2cPapdL0imOMtMHgP2RzOlYcEcybwZg8p7ykM=; b=0OIFIrATjAvhpnxumipzv6A98unuBt951worIDudXFOj/BBWmHnMEdSu/fuYaPh26v LKDc/gUmdE70J9PI3CofBQRx5SMRkSBFeFWOVqropWAQUKRneOVgU/u+WELTJwDg5HlY pIWQemoxXHwCbTuRHFsmJeOla0cJxgiCj607LX0doJdg9dHQDFK+I6WxyMjATuym4r3h rA//TPIrL9MuWfwgZxSNTDrFvRhU4lQzwHnxzaiVgqLcu92ADUYXKMmoh42bR3M8ifAy 8zJ1+7AhcYp7YbxvLuI0cO4QpGZG2b8wMyhjWZHcJ44PYS9Cajsp8C9EL/E3nmh2ojih nTvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=CzFT7Rvl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h65-20020a625344000000b0064121c7b297si1192621pfb.334.2023.05.08.18.58.32; Mon, 08 May 2023 18:58:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=CzFT7Rvl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233838AbjEIBwL (ORCPT + 99 others); Mon, 8 May 2023 21:52:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233895AbjEIBvc (ORCPT ); Mon, 8 May 2023 21:51:32 -0400 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEF53D04B for ; Mon, 8 May 2023 18:51:02 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-53033a0b473so770188a12.0 for ; Mon, 08 May 2023 18:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683597061; x=1686189061; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=RA5k4x2cPapdL0imOMtMHgP2RzOlYcEcybwZg8p7ykM=; b=CzFT7Rvlg6QqOuYMkwmERLb6+Tuxhm+WYECV7SkXw2YgLIv1aZ147r2g0hsCbWCBDm 64SiF3BFojY7zp4iE7hNIkj+CkF9AEjhUqkmqysA95EEwsYiPaYyqIMg2mvHPvm4BixO JxzGYwoZ8pNyKYJEZeq5SvjNqpVc+aPtkkA19xg27iEdXNjwbX0/1avdixuYMo0cenap InZ5gRGdfEolzfgBp8BJhFQXyVke8aDgGp0xioRwXPPQYz7veMGBuRz1mf3Y+/MKODro N6xh0urWC6ajZfI+O3BiWV/nwl7xhrKzZ/ZD/8WODKUpFYcisgssVMBXY1A0woVgtw1o OAuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683597061; x=1686189061; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RA5k4x2cPapdL0imOMtMHgP2RzOlYcEcybwZg8p7ykM=; b=TNY14WQjzSrDPHyN/wAFKhOnaAc/Ww80apzG4AEBFwZn4H7vlOqQuvR3RpFW7QOY2F /RQW5zzP1rp7EHRYfrgKdINVYevw6r7d3MFZjhreQQqArMU2pfaZq2qisUgHLTXhlzlN 2XPV4I+G+Zs/HWHHGgEoh+kCe7MLa8r+wup6Bty0bjg9kdTYr6CWcRUEJ7pMaPK+wMUt PM3OTXLEVNba1WLu6W4GbukrSMN4z7wUcmusOP/EedL0hBo38ro6i/32DQbCRbQudfVs yV8gf+v9CFpoiDnF+waSGQb+Suya/DkZY/hErckEi/BAeRpMnG5LSelOSJRVszQ4HGw6 NEnQ== X-Gm-Message-State: AC+VfDxDddKAbw7L4WXBGyKivyASIUbNeSuhzNgre8q2VJhnT3bhmQwL 6pl9atTb9lO9TzVwH9+BVwI= X-Received: by 2002:a17:90b:4ac8:b0:24e:507:7408 with SMTP id mh8-20020a17090b4ac800b0024e05077408mr12500681pjb.37.1683597060543; Mon, 08 May 2023 18:51:00 -0700 (PDT) Received: from localhost (2603-800c-1a02-1bae-a7fa-157f-969a-4cde.res6.spectrum.com. [2603:800c:1a02:1bae:a7fa:157f:969a:4cde]) by smtp.gmail.com with ESMTPSA id b19-20020a17090a8c9300b002509d988eaasm1370207pjo.52.2023.05.08.18.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 May 2023 18:51:00 -0700 (PDT) Sender: Tejun Heo From: Tejun Heo To: jiangshanlai@gmail.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, Tejun Heo , kernel test robot Subject: [PATCH 13/13] workqueue: Don't implicitly make UNBOUND workqueues w/ @max_active==1 ordered Date: Mon, 8 May 2023 15:50:32 -1000 Message-Id: <20230509015032.3768622-14-tj@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230509015032.3768622-1-tj@kernel.org> References: <20230509015032.3768622-1-tj@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_PASS,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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765379960917908667?= X-GMAIL-MSGID: =?utf-8?q?1765379960917908667?= 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered") automoatically promoted UNBOUND workqueues w/ @max_active==1 to ordered workqueues because UNBOUND workqueues w/ @max_active==1 used to be the way to create ordered workqueues and the new NUMA support broke it. These problems can be subtle and the fact that they can only trigger on NUMA machines made them even more difficult to debug. However, overloading the UNBOUND allocation interface this way creates other issues. It's difficult to tell whether a given workqueue actually needs to be ordered and users that legitimately want a min concurrency level wq unexpectedly gets an ordered one instead. With planned UNBOUND workqueue udpates to improve execution locality and more prevalence of chiplet designs which can benefit from such improvements, this isn't a state we wanna be in forever. There aren't that many UNBOUND w/ @max_active==1 users in the tree and the preceding patches audited all and converted them to alloc_ordered_workqueue() as appropriate. This patch removes the implicit promotion of UNBOUND w/ @max_active==1 workqueues to ordered ones. Workqueue will also add a debug option to make all unordered UNBOUND workqueues to use per-cpu pool_workqueues so that these problems can be surfaced easier on most machines. v2: v1 patch incorrectly dropped !list_empty(&wq->pwqs) condition in apply_workqueue_attrs_locked() which spuriously triggers WARNING and fails workqueue creation. Fix it. Signed-off-by: Tejun Heo Reported-by: kernel test robot Link: https://lore.kernel.org/oe-lkp/202304251050.45a5df1f-oliver.sang@intel.com --- include/linux/workqueue.h | 4 +--- kernel/workqueue.c | 23 ++++------------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 3992c994787f..79901dea932e 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -339,7 +339,6 @@ enum { __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */ __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */ __WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */ - __WQ_ORDERED_EXPLICIT = 1 << 19, /* internal: alloc_ordered_workqueue() */ WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */ @@ -417,8 +416,7 @@ alloc_workqueue(const char *fmt, unsigned int flags, int max_active, ...); * Pointer to the allocated workqueue on success, %NULL on failure. */ #define alloc_ordered_workqueue(fmt, flags, args...) \ - alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | \ - __WQ_ORDERED_EXPLICIT | (flags), 1, ##args) + alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args) #define create_workqueue(name) \ alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name)) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 4666a1a92a31..34a91eee7332 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -4195,12 +4195,8 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq, return -EINVAL; /* creating multiple pwqs breaks ordering guarantee */ - if (!list_empty(&wq->pwqs)) { - if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT)) - return -EINVAL; - - wq->flags &= ~__WQ_ORDERED; - } + if (!list_empty(&wq->pwqs) && WARN_ON(wq->flags & __WQ_ORDERED)) + return -EINVAL; ctx = apply_wqattrs_prepare(wq, attrs, wq_unbound_cpumask); if (!ctx) @@ -4428,16 +4424,6 @@ struct workqueue_struct *alloc_workqueue(const char *fmt, struct workqueue_struct *wq; struct pool_workqueue *pwq; - /* - * Unbound && max_active == 1 used to imply ordered, which is no - * longer the case on NUMA machines due to per-node pools. While - * alloc_ordered_workqueue() is the right way to create an ordered - * workqueue, keep the previous behavior to avoid subtle breakages - * on NUMA. - */ - if ((flags & WQ_UNBOUND) && max_active == 1) - flags |= __WQ_ORDERED; - /* see the comment above the definition of WQ_POWER_EFFICIENT */ if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient) flags |= WQ_UNBOUND; @@ -4645,14 +4631,13 @@ void workqueue_set_max_active(struct workqueue_struct *wq, int max_active) struct pool_workqueue *pwq; /* disallow meddling with max_active for ordered workqueues */ - if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT)) + if (WARN_ON(wq->flags & __WQ_ORDERED)) return; max_active = wq_clamp_max_active(max_active, wq->flags, wq->name); mutex_lock(&wq->mutex); - wq->flags &= ~__WQ_ORDERED; wq->saved_max_active = max_active; for_each_pwq(pwq, wq) @@ -5920,7 +5905,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq) * attributes breaks ordering guarantee. Disallow exposing ordered * workqueues. */ - if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT)) + if (WARN_ON(wq->flags & __WQ_ORDERED)) return -EINVAL; wq->wq_dev = wq_dev = kzalloc(sizeof(*wq_dev), GFP_KERNEL);