From patchwork Wed Nov 1 22:58:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 160715 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:8f47:0:b0:403:3b70:6f57 with SMTP id j7csp3584vqu; Wed, 1 Nov 2023 15:58:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFiyRxJAIj+Mj5IHuWVenD7Y1OK8sKgTsSCKBNPxbNacTLbne4yOYuIt+AfHzSnjvLpx4/4 X-Received: by 2002:a92:c242:0:b0:34f:7e36:5f8b with SMTP id k2-20020a92c242000000b0034f7e365f8bmr26868836ilo.25.1698879532636; Wed, 01 Nov 2023 15:58:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698879532; cv=none; d=google.com; s=arc-20160816; b=AAp5btEjnJXIhjPQJPuXdhyHP3sS35M7gxo97wach526oZYl5MoI29V/hSdX6KAVH/ mPNxB1IG0++AOXWcEnEu0SbgeT9LcLHjbYAGf3mO9M7MkY8MQiFcWE3DiYwc5eg4slJJ VOA0Ei/0o9mJW4soG4r0s9sfLLHo93GE2YLClBb2d1wuDMmer46U7HJQ9zkUtKvoHMpZ MkVoYoN9LajYaq9WfaCIdDQQ7ovfkfPgNaD/DWB1xI0mAVg5Xzeqmqq6NkpHcE4sbIm3 eL8jtGsL8tBI1xp8uVrLV04/BFTu1nv1ekp4F235I8MD03LfVw4QMMVqLKc8YUu13auI CQqg== 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 :dkim-signature; bh=m79oyGTD4QwukfG6ZorJJlId+7DO0Q4m7W/CpuSor88=; fh=cGnLJ3o2oyRQ2aixxwJP0C2n8H20VXzTCjqgbACFRwU=; b=I2BcnR3Df58g6ZiTXnAGnCGK2cNghwlOPpGgjXvfhpDmio9tucqTjTt+ujx3Ca48CZ bITZJO0ebLZpXJnxmd48Elg0qJwDxY+5Ce3wWgayRHhd67vSTtpKc2OioDOSZhAzpdGs yh6/fVpmt+HYsxYrD3LGLYtVkp59RyZC/ORJ4BHIg0RPyxAEs0fWMUnnsE6zD5Kdqdkt lOeKyJp2h5V/DFOXbVF4CvzmaWMDWlvYA6TkJZNVbtpTnq1W9sqZGyEZj3TCJz4cDT7s 9W4n4W/R52gbTsmj5TJw9aBCHZUc5Jm1kKad2kz8aG2XqBCavsYnUoWTisxRhIf7ydIV zVpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LBOKRM9N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id y5-20020a655285000000b00585999a38a6si805742pgp.793.2023.11.01.15.58.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Nov 2023 15:58:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=LBOKRM9N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 4A5D581A3342; Wed, 1 Nov 2023 15:58:45 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345578AbjKAW6k (ORCPT + 35 others); Wed, 1 Nov 2023 18:58:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347479AbjKAW6i (ORCPT ); Wed, 1 Nov 2023 18:58:38 -0400 Received: from mail-yw1-x1135.google.com (mail-yw1-x1135.google.com [IPv6:2607:f8b0:4864:20::1135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04DD7119 for ; Wed, 1 Nov 2023 15:58:33 -0700 (PDT) Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-5ae143e08b1so4495027b3.1 for ; Wed, 01 Nov 2023 15:58:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698879512; x=1699484312; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m79oyGTD4QwukfG6ZorJJlId+7DO0Q4m7W/CpuSor88=; b=LBOKRM9NSa9hZe7fHhoF97QCVX77EfKSDJAapY8EJ4/Khyr+wsE/XjZwmFjitutAsN P2kDEncrLKJMrCfFo+EE8crL4dSMMHPBqAZJwvvVNyHBndcdAQbz/It6OWAH5uRxlJ57 3WozknxUt8Si5Wdiy3uQRdFgfH5JFTOWUIuqSW8KurPDaJRKXAhXbCgpYKuYlMReptt/ C+aH+6i2f697PlPRPTasCqjwJT6ZRdC/RueEre/KlhR71/l5wbWeAFyAWDenqTTNhxCX J820sRULHa6sEX8/tOI87X2qiyET0GwKy1J29e1E5UoiwN311IijV2qUjfdjO0jv0zwv ccSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698879512; x=1699484312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m79oyGTD4QwukfG6ZorJJlId+7DO0Q4m7W/CpuSor88=; b=vsr+7U/kZ+Ncu1FCI2xh4XgrCDziHOW24BVqppZmhdab3goNQzJfSY+EShzrqe3kPz ghR5BtTWzSx+Tb/W98OzLhoLr941I/LjY7cDT7RSjLlmzBGNJIOFhyKyyjqjFmO7aGft tv/hY4Ev0tEpeTVXD7pQQE/lHIFVe82NwF4lM7IyFBCPHuYGlGg4dQvOxo916RyJgua0 4AXTj3YPHb01bm/XrWKxnf4GRgw6mOUIq/Aon3ZFrRBRhNKfDXJsNo7UPOKshGcEGlkZ y5YG+OjXK1ySxcpp4UWrkQSpiyzSdy6PZaR4aY/38yZXc1+rkf7fMd4OH/BMYUkxsbQl xpyA== X-Gm-Message-State: AOJu0YwDJPp9z3nYyWPtnxj7xC+HIpTYbR2qhvTApiGpwAjBvxPUzNDm hhrLoJgavTZbXTe64m01Dss= X-Received: by 2002:a0d:cc44:0:b0:5a7:aaac:2bce with SMTP id o65-20020a0dcc44000000b005a7aaac2bcemr18888613ywd.35.1698879512112; Wed, 01 Nov 2023 15:58:32 -0700 (PDT) Received: from localhost ([50.221.102.30]) by smtp.gmail.com with ESMTPSA id r19-20020a81c313000000b005af81610bdbsm508017ywk.122.2023.11.01.15.58.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Nov 2023 15:58:31 -0700 (PDT) From: Yury Norov To: Thomas Gleixner , linux-kernel@vger.kernel.org Cc: Yury Norov , Andy Shevchenko , Rasmus Villemoes Subject: [PATCH 3/4] lib/group_cpus: optimize inner loop in grp_spread_init_one() Date: Wed, 1 Nov 2023 15:58:19 -0700 Message-Id: <20231101225820.51342-4-yury.norov@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231101225820.51342-1-yury.norov@gmail.com> References: <20231101225820.51342-1-yury.norov@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 01 Nov 2023 15:58:45 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1781404305067453720 X-GMAIL-MSGID: 1781404305067453720 The loop starts from the beginning every time we switch to the next sibling mask. This is the Schlemiel the Painter's style of coding because we know for sure that nmsk is clear up to current CPU, and we can just continue from the next CPU. Also, we can do it nicer if leverage the dedicated for_each() iterator. Signed-off-by: Yury Norov --- lib/group_cpus.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/group_cpus.c b/lib/group_cpus.c index b1e7d9cc9da9..8afe0c71d204 100644 --- a/lib/group_cpus.c +++ b/lib/group_cpus.c @@ -30,13 +30,13 @@ static void grp_spread_init_one(struct cpumask *irqmsk, struct cpumask *nmsk, /* If the cpu has siblings, use them first */ siblmsk = topology_sibling_cpumask(cpu); - for (sibl = -1; cpus_per_grp > 0; ) { - sibl = cpumask_next(sibl, siblmsk); - if (sibl >= nr_cpu_ids) - break; + sibl = cpu + 1; + + for_each_cpu_and_from(sibl, siblmsk, nmsk) { __cpumask_clear_cpu(sibl, nmsk); __cpumask_set_cpu(sibl, irqmsk); - cpus_per_grp--; + if (cpus_per_grp-- == 0) + return; } } }