On Sat, 6 Apr 2019, James Bottomley wrote: > On Sat, 2019-04-06 at 15:36 -0400, Mikulas Patocka wrote: > > Parisc uses a global spinlock to protect pagetable updates in the TLB > > fault handlers. When multiple cores are taking TLB faults > > simultaneously, the cache line containing the spinlock becomes a > > bottleneck. > > You can't do this. As the comment in cache.c says: the lock is to > protect the merced bus, which runs between the CPUs on some systems. > That means it must be a single, global lock. So - how could we detect if the Merced bus is present? > Of course, on systems without a merced bus, we don't need the lock at > all, so runtime patching might be usable to fix that case. > > James The lock is still needed to synchronize TLB fault handlers with the code that modifies the pagetables - but we could have per-process lock for this purpose. Mikulas