[PATCH v5 0/4] ARM: vfp: Introduce vfp_lock() for VFP locking.

Sebastian Andrzej Siewior bigeasy at linutronix.de
Fri Jun 28 07:54:56 PDT 2024


On 2024-06-28 15:07:37 [+0100], Russell King (Oracle) wrote:
> On Fri, Jun 28, 2024 at 03:46:15PM +0200, Sebastian Andrzej Siewior wrote:
> > There was a bug report on PREEMPT_RT which made me look into VFP locking
> > on ARM. The usage of local_bh_disable() to ensure exclusive access to
> > the VFP unit is not working on PREEMPT_RT because the softirq context is
> > preemptible.
> > 
> > This series introduces vfp_lock() which does the right thing.
> 
> I disagre with the term "lock" here - it isn't about any kind of
> locking, it's about:
> 
> 1. preventing the thread moving onto a different CPU
> 2. preventing kernel-mode usage of VFP while a VFP fault is being
>    handled (and thus changing the VFP state.)
> 
> The proble with "lock" is that it makes it look like this code is
> single-threaded which it isn't. Many CPUs can be processing a VFP
> fault at the same time - remembering that each CPU has their own
> VFP unit.

Yes, from that point of view it looks bad. Given that every CPU has a
VFP unit it is more of a per-CPU lock. But this isn't obvious from just
looking at it.

> Maybe name it vfp_state_hold() ... vfp_state_release() instead?
> Hold as in "don't let anything interfere with the state we are
> going to be accessing".
> 
> I'm open to better names if anyone can think of any!

No, I'm fine with it.

Sebastian



More information about the linux-arm-kernel mailing list