mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Yury Norov <ynorov@nvidia.com>
To: Bibo Mao <maobibo@loongson.cn>
Cc: Yury Norov <yury.norov@gmail.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: One question about API cpumask_setall()
Date: Mon, 3 Aug 2026 17:51:15 -0400	[thread overview]
Message-ID: <anENU3WvrkOaAHbD@yury> (raw)
In-Reply-To: <96cd1c74-a40d-336d-075c-cea54d621acd@loongson.cn>

On Thu, Jul 30, 2026 at 02:41:42PM +0800, Bibo Mao wrote:
> 
> 
> On 2026/7/30 上午1:57, Yury Norov wrote:
> > On Wed, Jul 29, 2026 at 10:13:56AM +0800, Bibo Mao wrote:
> > > 
> > > 
> > > 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.
> > 
> > No, cpumask_test_and_clear_cpu is atomic() operates on cpumask_t*,
> > which is a pointer to unsigned long.
> > > 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.
> > 
> > If your bitmap is longer than 1 word, you'll have to issue 2 or more
> > smp_store_mb()'s. Then, a series of atomic operations is not atomic
> > itself.
> I understand what you say, the whole series of atomic operations is not
> atomic.
> 
> My concern is whether cpumask_test_and_clear_cpu() operation on cpumask_t*
> will invalidate non-atomic write operation on another CPU. From MESI/MOSI
> protocol, this will not happen, only that order of write and atomic
> test_and_clear operation may be different.

You're changing the topic now. You asked about the atomic version of
cpumask_setall(), and I've pointed that it's impossible.

Now you're asking about invalidation of caches. I can't say for each
and every architecture out there, and all their caching modes.

If you need to run cpumask_setall() concurrently with
cpumask_test_and_clear_cpu(), please use external locking mechanism.

Thanks,
Yury

  reply	other threads:[~2026-08-03 21:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-28  8:16 Bibo Mao
2026-07-29  1:55 ` Yury Norov
2026-07-29  2:13   ` Bibo Mao
2026-07-29 17:57     ` Yury Norov
2026-07-30  6:41       ` Bibo Mao
2026-08-03 21:51         ` Yury Norov [this message]
2026-08-05  7:39           ` Bibo Mao

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=anENU3WvrkOaAHbD@yury \
    --to=ynorov@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=maobibo@loongson.cn \
    --cc=yury.norov@gmail.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

all inboxes | Powered by JetHome®