+++ /dev/null
-From db19c6f1a2a353cc8dec35b4789733a3cf6e2838 Mon Sep 17 00:00:00 2001
-From: John David Anglin <dave.anglin@bell.net>
-Date: Wed, 22 Dec 2021 16:01:31 +0000
-Subject: parisc: Fix lpa and lpa_user defines
-
-From: John David Anglin <dave.anglin@bell.net>
-
-commit db19c6f1a2a353cc8dec35b4789733a3cf6e2838 upstream.
-
-While working on the rewrite to the light-weight syscall and futex code, I
-experimented with using a hash index based on the user physical address of
-atomic variable. This exposed two problems with the lpa and lpa_user defines.
-
-Because of the copy instruction, the pa argument needs to be an early clobber
-argument. This prevents gcc from allocating the va and pa arguments to the same
-register.
-
-Secondly, the lpa instruction can cause a page fault so we need to catch
-exceptions.
-
-Signed-off-by: John David Anglin <dave.anglin@bell.net>
-Fixes: 116d753308cf ("parisc: Use lpa instruction to load physical addresses in driver code")
-Signed-off-by: Helge Deller <deller@gmx.de>
-Cc: stable@vger.kernel.org # v5.2+
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/parisc/include/asm/special_insns.h | 44 +++++++++++++++++---------------
- 1 file changed, 24 insertions(+), 20 deletions(-)
-
---- a/arch/parisc/include/asm/special_insns.h
-+++ b/arch/parisc/include/asm/special_insns.h
-@@ -2,28 +2,32 @@
- #ifndef __PARISC_SPECIAL_INSNS_H
- #define __PARISC_SPECIAL_INSNS_H
-
--#define lpa(va) ({ \
-- unsigned long pa; \
-- __asm__ __volatile__( \
-- "copy %%r0,%0\n\t" \
-- "lpa %%r0(%1),%0" \
-- : "=r" (pa) \
-- : "r" (va) \
-- : "memory" \
-- ); \
-- pa; \
-+#define lpa(va) ({ \
-+ unsigned long pa; \
-+ __asm__ __volatile__( \
-+ "copy %%r0,%0\n" \
-+ "8:\tlpa %%r0(%1),%0\n" \
-+ "9:\n" \
-+ ASM_EXCEPTIONTABLE_ENTRY(8b, 9b) \
-+ : "=&r" (pa) \
-+ : "r" (va) \
-+ : "memory" \
-+ ); \
-+ pa; \
- })
-
--#define lpa_user(va) ({ \
-- unsigned long pa; \
-- __asm__ __volatile__( \
-- "copy %%r0,%0\n\t" \
-- "lpa %%r0(%%sr3,%1),%0" \
-- : "=r" (pa) \
-- : "r" (va) \
-- : "memory" \
-- ); \
-- pa; \
-+#define lpa_user(va) ({ \
-+ unsigned long pa; \
-+ __asm__ __volatile__( \
-+ "copy %%r0,%0\n" \
-+ "8:\tlpa %%r0(%%sr3,%1),%0\n" \
-+ "9:\n" \
-+ ASM_EXCEPTIONTABLE_ENTRY(8b, 9b) \
-+ : "=&r" (pa) \
-+ : "r" (va) \
-+ : "memory" \
-+ ); \
-+ pa; \
- })
-
- #define mfctl(reg) ({ \
drm-etnaviv-limit-submit-sizes.patch
drm-nouveau-kms-nv04-use-vzalloc-for-nv04_display.patch
drm-bridge-analogix_dp-make-psr-exit-block-less.patch
-parisc-fix-lpa-and-lpa_user-defines.patch
pci-pciehp-fix-infinite-loop-in-irq-handler-upon-power-fault.patch
pci-pci-bridge-emul-properly-mark-reserved-pcie-bits-in-pci-config-space.patch
pci-pci-bridge-emul-correctly-set-pcie-capabilities.patch