linux_dsm_epyc7002/arch/parisc
John David Anglin c776cd89fc parisc: Improve LWS-CAS performance
The attached change significantly improves the performance of the LWS-CAS code
in syscall.S.
This allows a number of packages to build (e.g., zeromq3, gtest and libxs)
that previously failed because slow LWS-CAS performance under contention. In
particular, interrupts taken while the lock was taken degraded performance
significantly.

The change does the following:

1) Disables interrupts around the CAS operation, and
2) Changes the loads and stores to use the ordered completer, "o", on
PA 2.0. "o" and "ma" with a zero offset are equivalent. The latter is
accepted on both PA 1.X and 2.0.

The use of ordered loads and stores probably makes no difference on all
existing hardware, but it seemed pedantically correct. In particular, the CAS
operation must complete before LDCW lock is released. As written before, a
processor could reorder the operations.

I don't believe the period interrupts are disabled is long enough to
significantly increase interrupt latency. For example, the TLB insert code is
longer. Worst case is a memory fault in the CAS operation.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Cc: stable@vger.kernel.org # 3.13+
Signed-off-by: Helge Deller <deller@gmx.de>
2014-05-15 21:12:26 +02:00
..
configs parisc: update 64bit defconfigs and use SIL680 instead of SIIMAGE driver 2013-12-03 23:23:35 +01:00
hpux execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
include parisc: locks: remove redundant arch_*_relax operations 2014-03-23 17:01:23 +01:00
kernel parisc: Improve LWS-CAS performance 2014-05-15 21:12:26 +02:00
lib parisc: size_t is unsigned, so comparison size < 0 doesn't make sense. 2013-11-20 00:09:42 +01:00
math-emu parisc: remove duplicate define 2013-11-07 22:28:15 +01:00
mm parisc: ratelimit userspace segfault printing 2014-05-15 21:12:15 +02:00
oprofile oprofile: more whitespace fixes 2008-10-15 20:55:51 +02:00
defpalo.conf parisc: switch to gzip-compressed vmlinuz kernel 2013-07-09 22:09:20 +02:00
install.sh parisc: make "make install" not depend on vmlinux 2013-11-07 22:28:06 +01:00
Kconfig parisc: ratelimit userspace segfault printing 2014-05-15 21:12:15 +02:00
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Makefile parisc: make "make install" not depend on vmlinux 2013-11-07 22:28:06 +01:00
nm Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00