Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp832319rdg; Wed, 11 Oct 2023 06:53:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH4djO5ifG+kRDLSb1QDBjV4dkKwS7Ql/XU6VqcWVlKhA9Q+t/8VnRARjeBZ/tgMNw6na2k X-Received: by 2002:a05:6a20:549b:b0:161:2bed:6b3a with SMTP id i27-20020a056a20549b00b001612bed6b3amr20664709pzk.17.1697032388881; Wed, 11 Oct 2023 06:53:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697032388; cv=none; d=google.com; s=arc-20160816; b=NpuNu26PdTyNxaF/l82XAMOIXhVon4jJzVuygmqNpqkaqQJ9qnbzhNWaS08emB7dht kZiPEi8Hl1nPbZp3pEDGqOI18RAhvaqpMsTjEwjAMqf1myNKykZaQ5Uo+hkO1KSKh5uY bOVkZRlejpMdy4XUEGl9S39NP7k+mZlrUIxERLtfu6g7sdUi1uk/a9a9BFl/3XWoLg54 FqlNwFAZh0negOwrmucozp8I5VnoXg6noHQw34xX1VO1ytrrAMgt9oCyFgQqghKJ79tU WwId7JuE+JJBAumGj7LSg/nL7o1dnQQa+emN3OgN88Os0XoaVD+R94Kal8GCU3+y46Ne 2cug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=tU3Q4smiecfzaPbU8gayq4O/BF4mTANtwE+FQfuAtLQ=; fh=F9Nt5KJh76xH0xf5a73QvVQiS/n7ik9i7XiPLIFkQ3E=; b=vkVUEKf5EFKYHaostaHpTuaj3wepudlYvxH7MINOsxM8xieO9ZeG5PdcJi++5sGOfG 6reDwo5ixEk1RMzOXOUmNPl3cnDgzmH8rg+/d+rdy6gvETBxynK08qlHYbgXZ6BGWS7S VeeE7REqRJcnGHm7kiF+w0u10Ye6RyYKAoXRTA8HeJ/nVszs5Duui3DPzfeYfyO7nNK3 SLdG9qPuhITLVIEYwZHGjyAZBAa1kJEEWHMBmbsSnrQvC1Rpu1u6jXAT83HHNKEGTkNh RVNV420YzRLeYdNShu5lqrG0Vm88XBFHTZvhVEtfMK7TH2rr/BsfpCPM/5oY3+cii9FS Fe4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=HjJqesWE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id w6-20020a17090a6b8600b00277816efefasi3459148pjj.106.2023.10.11.06.53.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 06:53:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=HjJqesWE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 2685D80E761F; Wed, 11 Oct 2023 06:53:06 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232322AbjJKNw4 (ORCPT + 99 others); Wed, 11 Oct 2023 09:52:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232302AbjJKNwz (ORCPT ); Wed, 11 Oct 2023 09:52:55 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 840089E for ; Wed, 11 Oct 2023 06:52:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=tU3Q4smiecfzaPbU8gayq4O/BF4mTANtwE+FQfuAtLQ=; b=HjJqesWETz8i/NpERymjrNpncs veO+JGueoQeQDpgny8C7lX8kIqFOG/YTYOTqBUtKzonRUxk7Bf2izubyqGtDHg4KkpdzIiJrlWF4H hG7BGjL6qsjbJ30rhonJn6Hib9HA/hOA5ggkkrMjhBn6LTwjfIpkoCag4JMfy1nDjxKyhxlK+JS/K IwSN4Vz8XWP8VKO5iMrLhtc2AzseR7l2Txz0W88exrobEbbl7foxse0GvX//E6+QEPV+uLUVbg+nV HP3Es9pPdr9Q6rW9Ie+dEdc0LqR3pHQf5sGkbShW5Rb95Q0rEIyT0lFtBQ6mv7e5vLBvapybSRBw/ Ipg0sMWA==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1qqZde-00B7Aa-W1; Wed, 11 Oct 2023 13:52:39 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id 9F10430036C; Wed, 11 Oct 2023 15:52:38 +0200 (CEST) Date: Wed, 11 Oct 2023 15:52:38 +0200 From: Peter Zijlstra To: Ankit Jain Cc: yury.norov@gmail.com, andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk, qyousef@layalina.io, pjt@google.com, joshdon@google.com, bristot@redhat.com, vschneid@redhat.com, linux-kernel@vger.kernel.org, namit@vmware.com, amakhalov@vmware.com, srinidhir@vmware.com, vsirnapalli@vmware.com, vbrahmajosyula@vmware.com, akaher@vmware.com, srivatsa@csail.mit.edu Subject: Re: [PATCH RFC] cpumask: Randomly distribute the tasks within affinity mask Message-ID: <20231011135238.GG6337@noisy.programming.kicks-ass.net> References: <20231011071925.761590-1-ankitja@vmware.com> <20231011105329.GA17066@noisy.programming.kicks-ass.net> <20231011114642.GA36521@noisy.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231011114642.GA36521@noisy.programming.kicks-ass.net> X-Spam-Status: No, score=2.7 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Wed, 11 Oct 2023 06:53:06 -0700 (PDT) X-Spam-Level: ** On Wed, Oct 11, 2023 at 01:46:42PM +0200, Peter Zijlstra wrote: > Now, looking at the code, I don't think the current code actually > behaves correct in this case :-(, somewhere along the line we should > truncate cpu_valid_mask to a single bit. Let me see where the sane place > is to do that. Something like so I suppose, that limits newmask to the first root_domain, which should be a superset of the cpuset if there is such a thing. diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 23f638d431d6..334c5bc59160 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3081,6 +3081,29 @@ static int affine_move_task(struct rq *rq, struct task_struct *p, struct rq_flag return 0; } +static struct cpumask *root_domain_allowed(struct cpumask *newmask, + struct cpumask *scratch, + struct cpumask *valid) +{ + struct root_domain *rd; + struct cpumask *mask; + struct rq *rq; + + int first = cpumask_first_and(newmask, valid); + if (first >= nr_cpu_ids) + return NULL; + + mask = cpumask_of(first); + rd = cpu_rq(first)->rd; + if (rd) + mask = rd->span; + + if (!cpumask_and(scratch, newmask, mask)) + return NULL; + + return scratch; +} + /* * Called with both p->pi_lock and rq->lock held; drops both before returning. */ @@ -3113,6 +3136,13 @@ static int __set_cpus_allowed_ptr_locked(struct task_struct *p, cpu_valid_mask = cpu_online_mask; } + ctx->new_mask = root_domain_allowed(ctx->new_mask, + rq->scratch_mask, cpu_valid_mask); + if (!ctx->new_mask) { + ret = -EINVAL; + goto out; + } + if (!kthread && !cpumask_subset(ctx->new_mask, cpu_allowed_mask)) { ret = -EINVAL; goto out;