All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: Rongwei Wang <rongwei.wang@linux.alibaba.com>,
	Christoph Lameter <cl@linux.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	David Rientjes <rientjes@google.com>,
	Pekka Enberg <penberg@kernel.org>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	linux-mm@kvack.org,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Mike Galbraith <efault@gmx.de>
Subject: Re: [PATCH v2 5/5] mm/slub: simplify __cmpxchg_double_slab() and slab_[un]lock()
Date: Wed, 24 Aug 2022 21:45:20 +0900	[thread overview]
Message-ID: <YwYdYH4uJaRUtH7k@hyeyoo> (raw)
In-Reply-To: <693b9fad-4083-2bc6-f979-136978e12fd2@suse.cz>

On Wed, Aug 24, 2022 at 01:51:24PM +0200, Vlastimil Babka wrote:
> On 8/24/22 12:24, Hyeonggon Yoo wrote:
> > On Tue, Aug 23, 2022 at 07:04:00PM +0200, Vlastimil Babka wrote:
> > > The PREEMPT_RT specific disabling of irqs in __cmpxchg_double_slab()
> > > (through slab_[un]lock()) is unnecessary as bit_spin_lock() disables
> > > preemption and that's sufficient on RT where interrupts are threaded.
> > > 
> > > That means we no longer need the slab_[un]lock() wrappers, so delete
> > > them and rename the current __slab_[un]lock() to slab_[un]lock().
> > > 
> > 
> > I'm not familiar with PREEMPT_RT preemption model so not sure I'm following.
> > 
> > 1) Does "interrupts are threaded on RT" mean processing _most_ (all handlers
> >     that did not specified IRQF_NO_THREAD) of interrupts are delayed to irq threads
> >     and processed later in process context, and the kernel *never* use
> >     spinlock_t, local_lock_t that does not disable interrupts (and sleep) on RT
> >     in hardware/software interrupt context?
> 
> AFAIK, yes, that's the case. So if some non-threaded handler used slab, we
> would be in trouble.

Yeah, that was exactly what I wondered!

> But that would already be the case before this patch
> due to the local_lock usage in other paths - the bit_spin_lock() without
> disabled irq shouldn't add anything new here AFAIK.

Agreed.
 
> > 2) Do we need disabling irq in cmpxchg_double_slab() on RT?
> 
> By that logic, we don't. But IMHO it's not worth complicating the code by
> special casing it for some negligible performance gain (the protected
> sections are very short), like we now special case __cmpxchg_double_slab()
> for correctness (after this patch, just the correctness of
> lockdep_assert_irqs_disabled()).

Okay. Wanted to make sure that disabling interrupts is not required
by RT.

> 
> > BTW Is there a good documentation/papers on PREEMPT_RT preemption model?
> > I tried to find but only found Documentation/locking/locktypes.rst :(
> 
> Good question, I don't know myself, maybe the RT guys do.

Okay.

Thanks!

-- 
Thanks,
Hyeonggon


  reply	other threads:[~2022-08-24 12:45 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-23 17:03 [PATCH v2 0/5] mm/slub: fix validation races and cleanup locking Vlastimil Babka
2022-08-23 17:03 ` [PATCH v2 1/5] mm/slub: move free_debug_processing() further Vlastimil Babka
2022-08-23 17:03 ` [PATCH v2 2/5] mm/slub: restrict sysfs validation to debug caches and make it safe Vlastimil Babka
2022-08-24  4:41   ` Hyeonggon Yoo
2022-08-23 17:03 ` [PATCH v2 3/5] mm/slub: remove slab_lock() usage for debug operations Vlastimil Babka
2022-08-23 17:03 ` [PATCH v2 4/5] mm/slub: convert object_map_lock to non-raw spinlock Vlastimil Babka
2022-08-24 15:53   ` Sebastian Andrzej Siewior
2022-08-23 17:04 ` [PATCH v2 5/5] mm/slub: simplify __cmpxchg_double_slab() and slab_[un]lock() Vlastimil Babka
2022-08-24 10:24   ` Hyeonggon Yoo
2022-08-24 11:51     ` Vlastimil Babka
2022-08-24 12:45       ` Hyeonggon Yoo [this message]
2022-08-24 16:31     ` Sebastian Andrzej Siewior
2022-08-24 13:04   ` Hyeonggon Yoo
2022-08-25 12:41     ` Vlastimil Babka
2022-08-24 16:25   ` Sebastian Andrzej Siewior
2022-08-25 12:59     ` Vlastimil Babka
2022-08-25  7:51 ` [PATCH 6/5] slub: Make PREEMPT_RT support less convoluted Sebastian Andrzej Siewior
2022-08-25  8:41   ` Vlastimil Babka
2022-08-25  8:49   ` Hyeonggon Yoo
2022-08-25 13:16 ` [PATCH v2 0/5] mm/slub: fix validation races and cleanup locking Vlastimil Babka

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=YwYdYH4uJaRUtH7k@hyeyoo \
    --to=42.hyeyoo@gmail.com \
    --cc=bigeasy@linutronix.de \
    --cc=cl@linux.com \
    --cc=efault@gmx.de \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rongwei.wang@linux.alibaba.com \
    --cc=tglx@linutronix.de \
    --cc=vbabka@suse.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.