[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 2/2] rwlock: allow recursive read locking when already locked in write mode



On Mon, Feb 24, 2020 at 10:05:39AM +0000, Julien Grall wrote:
> Hi Roger,
> 
> On 24/02/2020 08:44, Roger Pau Monne wrote:
> > Allow a CPU already holding the lock in write mode to also lock it in
> > read mode. There's no harm in allowing read locking a rwlock that's
> > already owned by the caller (ie: CPU) in write mode. Allowing such
> > accesses is required at least for the CPU maps use-case.
> > 
> > In order to do this reserve 12bits of the lock, this allows to support
> > up to 4096 CPUs. Also reduce the write lock mask to 2 bits: one to
> > signal there are pending writers waiting on the lock and the other to
> > signal the lock is owned in write mode.
> > 
> > This reduces the maximum number of concurrent readers from 16777216 to
> > 262144, I think this should still be enough, or else the lock field
> > can be expanded from 32 to 64bits if all architectures support atomic
> > operations on 64bit integers.
> > 
> > Fixes: 5872c83b42c608 ('smp: convert the cpu maps lock into a rw lock')
> > Reported-by: Jan Beulich <jbeulich@xxxxxxxx>
> > Reported-by: Jürgen Groß <jgross@xxxxxxxx>
> > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> > ---
> > Changes since v2:
> >   - Use atomic_and to clear the writers part of the lock when
> >     write-unlocking.
> >   - Reduce writer-related area to 14bits.
> >   - Include xen/smp.h for Arm64.
> 
> OOI, is it to use smp_processor_id()?

Yes, or else I would get errors when building asm-offsets on Arm64
IIRC.

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.