]> git.baikalelectronics.ru Git - kernel.git/commit
parisc: use spin_lock_irqsave/spin_unlock_irqrestore for PTE updates
authorJohn David Anglin <dave.anglin@bell.net>
Tue, 23 Apr 2013 20:42:07 +0000 (22:42 +0200)
committerHelge Deller <deller@gmx.de>
Thu, 25 Apr 2013 20:37:00 +0000 (22:37 +0200)
commit6a4bc842c00e6dfcfc2db8b946911c6fd9f18278
tree0e2a80cf2dacd44299e55baa485dd7dd4a2ff3d9
parente0971387c004a6f64604abe37ef11e7d86b655c2
parisc: use spin_lock_irqsave/spin_unlock_irqrestore for PTE updates

User applications running on SMP kernels have long suffered from instability
and random segmentation faults.  This patch improves the situation although
there is more work to be done.

One of the problems is the various routines in pgtable.h that update page table
entries use different locking mechanisms, or no lock at all (set_pte_at).  This
change modifies the routines to all use the same lock pa_dbit_lock.  This lock
is used for dirty bit updates in the interruption code. The patch also purges
the TLB entries associated with the PTE to ensure that inconsistent values are
not used after the page table entry is updated.  The UP and SMP code are now
identical.

The change also includes a minor update to the purge_tlb_entries function in
cache.c to improve its efficiency.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Cc: Helge Deller <deller@gmx.de>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/include/asm/pgtable.h
arch/parisc/kernel/cache.c