"Michael Kelley (LINUX)" <mikelley@xxxxxxxxxxxxx> writes: > From: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> Sent: Monday, January 24, 2022 1:20 AM >> >> Yury Norov <yury.norov@xxxxxxxxx> writes: >> ... >> > >> > diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c >> > index 60375879612f..7420a5fd47b5 100644 >> > --- a/drivers/hv/channel_mgmt.c >> > +++ b/drivers/hv/channel_mgmt.c >> > @@ -762,8 +762,8 @@ static void init_vp_index(struct vmbus_channel *channel) >> > } >> > alloced_mask = &hv_context.hv_numa_map[numa_node]; >> > >> > - if (cpumask_weight(alloced_mask) == >> > - cpumask_weight(cpumask_of_node(numa_node))) { >> > + if (cpumask_weight_eq(alloced_mask, >> > + cpumask_weight(cpumask_of_node(numa_node)))) { >> >> This code is not performace critical and I prefer the old version: >> >> cpumask_weight() == cpumask_weight() >> >> looks better than >> >> cpumask_weight_eq(..., cpumask_weight()) >> >> (let alone the inner cpumask_of_node()) to me. >> >> > /* >> > * We have cycled through all the CPUs in the node; >> > * reset the alloced map. >> > I agree with Vitaly in preferring the old version, and indeed performance > here is a shrug. But actually, I think the old version is a poorly coded way > to determine if the two cpumasks are equal. The following would correctly > capture the intent: > > if (cpumask_equal(alloced_mask, cpumask_of_node(numa_node)) > Indeed. While it seems that only CPUs from 'cpumask_of_node(numa_node)' can be set in 'alloced_mask' (and thus the comparison is valid), there's no real need to weigh anything. I'll send a patch. -- Vitaly