From: Tejun Heo <tj@kernel.org>
To: Michael Bringmann <mwb@linux.vnet.ibm.com>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>,
linux-kernel@vger.kernel.org,
Nathan Fontenot <nfont@linux.vnet.ibm.com>
Subject: Re: [PATCH] workqueue: Ensure that cpumask set for pools created after boot
Date: Mon, 12 Jun 2017 13:32:25 -0400 [thread overview]
Message-ID: <20170612173225.GD19206@htj.duckdns.org> (raw)
In-Reply-To: <69c4bbad-5d40-d054-0004-38ac81377b0b@linux.vnet.ibm.com>
Hello,
On Mon, Jun 12, 2017 at 12:10:49PM -0500, Michael Bringmann wrote:
> > The reason why we're ending up with empty masks is because
> > wq_calc_node_cpumask() is assuming that the possible node cpumask is
> > always a superset of online (as it should). We can trigger a fat
> > warning there if that isn't so and just return false from that
> > function.
>
> What would that look like? I should be able to test it on top of the
> other changes / corrections.
So, the function looks like the following now.
static bool wq_calc_node_cpumask(const struct workqueue_attrs *attrs, int node,
int cpu_going_down, cpumask_t *cpumask)
{
if (!wq_numa_enabled || attrs->no_numa)
goto use_dfl;
/* does @node have any online CPUs @attrs wants? */
A: cpumask_and(cpumask, cpumask_of_node(node), attrs->cpumask);
if (cpu_going_down >= 0)
cpumask_clear_cpu(cpu_going_down, cpumask);
B: if (cpumask_empty(cpumask))
goto use_dfl;
/* yeap, return possible CPUs in @node that @attrs wants */
C: cpumask_and(cpumask, attrs->cpumask, wq_numa_possible_cpumask[node]);
return !cpumask_equal(cpumask, attrs->cpumask);
use_dfl:
cpumask_copy(cpumask, attrs->cpumask);
return false;
}
A is calculating the target cpumask to use using the online map. B
falls back to dfl mask if the intersection is empty. C calculates the
eventual mask to use from the intersection of possible mask and what's
requested. The assumption is that because possible is a superset of
online, C's result can't be smaller than A.
So, what we can do is if to calculate the possible intersection,
compare it against the online intersection, and if the latter is
bigger, trigger a big fat warning and return false there.
> > I have no idea about the specifics of ppc but at least the code base
> > we have currently expect all possible cpus and nodes and their
> > mappings to be established on boot.
>
> Hopefully, the new properties will fix the holes in the current implementation
> with regard to hot-add.
Yeah, that's the only proper fix here.
Thanks.
--
tejun
next prev parent reply other threads:[~2017-06-12 17:32 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-10 16:48 Michael Bringmann
2017-05-10 17:33 ` Tejun Heo
2017-05-15 15:48 ` Michael Bringmann
2017-05-16 15:55 ` Tejun Heo
2017-05-23 19:44 ` Michael Bringmann
2017-05-23 19:49 ` Tejun Heo
2017-05-23 20:09 ` Michael Bringmann
2017-05-23 20:10 ` Tejun Heo
2017-05-24 16:30 ` Michael Bringmann
2017-05-24 23:39 ` Michael Bringmann
2017-05-25 15:03 ` Tejun Heo
2017-05-25 15:07 ` Tejun Heo
2017-05-25 15:30 ` Michael Bringmann
2017-06-06 16:18 ` Michael Bringmann
2017-06-06 18:09 ` Tejun Heo
2017-06-12 14:47 ` Michael Bringmann
2017-06-12 16:14 ` Tejun Heo
2017-06-12 17:10 ` Michael Bringmann
2017-06-12 17:32 ` Tejun Heo [this message]
2017-06-13 20:04 ` Michael Bringmann
2017-06-13 20:10 ` Tejun Heo
2017-06-28 21:15 ` Michael Bringmann
2017-06-28 21:24 ` Tejun Heo
2017-07-26 15:25 ` Michael Bringmann
2017-07-26 19:16 ` Tejun Heo
2017-07-27 17:04 ` Michael Bringmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170612173225.GD19206@htj.duckdns.org \
--to=tj@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mwb@linux.vnet.ibm.com \
--cc=nfont@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome