On 2019-04-06 3:49 p.m., 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. 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. To me, this looks like a good improvement. It appears easy to adopt pgd_spinlock() and other places where lock address is loaded for merced bus case. Is anyone actually using N class? There are a couple of uses of pa_tlb_lock in pacache.S that are not updated. These only affect PA 1.x. Was merced bus used on PA 1.x? If not, then the locks could be removed. Dave -- John David Anglin dave.anglin@xxxxxxxx