Re: [PATCH v2 01/20] locking/rt: Use raw_spin_lock_irqsave() in __rwbase_read_unlock()
From: David Woodhouse
Date: Mon Jun 01 2026 - 09:56:32 EST
On Mon, 2026-06-01 at 15:40 +0200, Sebastian Andrzej Siewior wrote:
>
> Okay. This complains about non_block:
>
> …
> > [ 429.927260] KVM: non-blockable invalidate_range_start, non_block_count=1
>
> and commit 312364f3534cc ("kernel.h: Add non_block_start/end()") says
>
> > Peter also asked whether we want to catch spinlocks on top, but Michal
> > said those are less of a problem because spinlocks can't have an indirect
> > dependency upon the page allocator and hence close the loop with the oom
> > reaper.
>
> so a lock which becomes sleep-able on RT vs !RT shouldn't be a problem,
> right? We also don't complain about about scheduling within a
> rcu_read_lock() section if it is part of spin_lock().
Right. This is just a false positive in the debugging check, AFAICT.
It's actually *fine* to take a spinlock or rwlock in the OOM reaper
path, *even* if RT makes them in sleepable locks. And I think even the
KVM_REQUEST_WAIT IPI is fine.
But to fix the false positive warning, *either*:
• non_block_start() shouldn't complain about "sleepable only in RT" locks,
OR
• The OOM reaper path shouldn't use non_block_start() under RT.
Attachment:
smime.p7s
Description: S/MIME cryptographic signature