On Wed, Apr 03, 2024 at 11:59:41PM +0800, Dawei Li wrote: > From: Mark Rutland <mark.rutland@xxxxxxx> > > In some cases, it's useful to be able to select a random cpu from the > intersection of two masks, excluding a particular CPU. > > For example, in some systems an uncore PMU is shared by a subset of > CPUs, and management of this PMU is assigned to some arbitrary CPU in > this set. Whenever the management CPU is hotplugged out, we wish to > migrate responsibility to another arbitrary CPU which is both in this > set and online. > > Today we can use cpumask_any_and() to select an arbitrary CPU in the > intersection of two masks. We can also use cpumask_any_but() to select > any arbitrary cpu in a mask excluding, a particular CPU. > > To do both, we either need to use a temporary cpumask, which is > wasteful, or use some lower-level cpumask helpers, which can be unclear. > > This patch adds a new cpumask_any_and_but() to cater for these cases. > > Signed-off-by: Mark Rutland <mark.rutland@xxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Rusty Russell <rusty@xxxxxxxxxxxxxxx> > Cc: linux-kernel@xxxxxxxxxxxxxxx > Signed-off-by: Dawei Li <dawei.li@xxxxxxxxxxxx> Thank you, Acked-by: Yury Norov <yury.norov@xxxxxxxxx>