Re: One question about API cpumask_setall()

From: Bibo Mao

Date: Tue Jul 28 2026 - 22:18:14 EST




On 2026/7/29 上午9:55, Yury Norov wrote:
On Tue, Jul 28, 2026 at 04:16:27PM +0800, Bibo Mao wrote:
Hi,

I am preparing to use API cpumask_setall() for TLB flush on LoongArch KVM
side. There are cpumask_test_and_clear_cpu/cpumask_setall() APIs, it seems
that API cpumask_setall() does not support atomic operation.

Do you think it is reasonable to add new API similar with cpumask_setall()
which supports atomic operation?

Maybe reasonable, but it's impossible. cpumask is a bitmap, which in
turn is an array of unsigned longs. There's no atomic operations on
arrays.
It should be workable with atomic operation on unsigned long, rather than the array of unsigned longs, the API cpumask_test_and_clear_cpu is atomic operation on unsigned long also.

Is it ok to use smp_store_mb() to fill the bitmap with the similar API cpumask_setall()? where xchg() is used in smp_store_mb() wrapper instead.

Regards
Bibo Mao

Thanks,
Yury