parisc: Use per-pagetable spinlock
PA-RISC 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. This patch embeds the spinlock in the top level page directory, so that every process has its own lock. It improves performance by 30% when doing parallel compilations. At least on the N class systems, only one PxTLB inter processor broadcast can be active at any one time on the Merced bus. If a Merced bus is found, this patch serializes the TLB flushes with the pa_tlb_flush_lock spinlock. v1: Initial patch by Mikulas v2: Added Merced detection by Helge v3: Revised TLB serialization by Dave & Helge Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: John David Anglin <dave.anglin@bell.net> Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:

committed by
Helge Deller

parent
d19a12906e
commit
b37d1c1898
@@ -120,7 +120,7 @@ extern void get_pci_node_path(struct pci_dev *dev, struct hardware_path *path);
|
||||
extern void init_parisc_bus(void);
|
||||
extern struct device *hwpath_to_device(struct hardware_path *modpath);
|
||||
extern void device_to_hwpath(struct device *dev, struct hardware_path *path);
|
||||
|
||||
extern int machine_has_merced_bus(void);
|
||||
|
||||
/* inventory.c: */
|
||||
extern void do_memory_inventory(void);
|
||||
|
Reference in New Issue
Block a user