On Tue, 2024-02-06 at 20:17 -0800, Sean Christopherson wrote:
On Mon, Jan 15, 2024, Paul Durrant wrote:
From: Paul Durrant pdurrant@amazon.com
As described in [1] compiling with CONFIG_PROVE_RAW_LOCK_NESTING shows that kvm_xen_set_evtchn_fast() is blocking on pfncache locks in IRQ context. There is only actually blocking with PREEMPT_RT because the locks will turned into mutexes. There is no 'raw' version of rwlock_t that can be used to avoid that, so use read_trylock() and treat failure to lock the same as an invalid cache.
Are rwlocks fundamentally incapable of supporting a raw version? Because that's the only argument I see for adding a hack like this.
I don't know about "fundamentally incapable", but there's no point in adding them just for this, because the write lock is very rarely going to be held, so it's not an issue to be falling back to the slow path. And when the write lock *was* held, something often changed so we may well be going back to the slow path anyway.