]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Jan 2018 14:09:10 +0000 (15:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Jan 2018 14:09:10 +0000 (15:09 +0100)
added patches:
powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch
powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch

queue-4.14/powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch [new file with mode: 0644]
queue-4.14/powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch b/queue-4.14/powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch
new file mode 100644 (file)
index 0000000..eba349c
--- /dev/null
@@ -0,0 +1,80 @@
+From 50e51c13b3822d14ff6df4279423e4b7b2269bc3 Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Wed, 10 Jan 2018 03:07:15 +1100
+Subject: powerpc/64: Add macros for annotating the destination of rfid/hrfid
+
+From: Nicholas Piggin <npiggin@gmail.com>
+
+commit 50e51c13b3822d14ff6df4279423e4b7b2269bc3 upstream.
+
+The rfid/hrfid ((Hypervisor) Return From Interrupt) instruction is
+used for switching from the kernel to userspace, and from the
+hypervisor to the guest kernel. However it can and is also used for
+other transitions, eg. from real mode kernel code to virtual mode
+kernel code, and it's not always clear from the code what the
+destination context is.
+
+To make it clearer when reading the code, add macros which encode the
+expected destination context.
+
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/include/asm/exception-64e.h |    6 ++++++
+ arch/powerpc/include/asm/exception-64s.h |   29 +++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+)
+
+--- a/arch/powerpc/include/asm/exception-64e.h
++++ b/arch/powerpc/include/asm/exception-64e.h
+@@ -209,5 +209,11 @@ exc_##label##_book3e:
+       ori     r3,r3,vector_offset@l;          \
+       mtspr   SPRN_IVOR##vector_number,r3;
++#define RFI_TO_KERNEL                                                 \
++      rfi
++
++#define RFI_TO_USER                                                   \
++      rfi
++
+ #endif /* _ASM_POWERPC_EXCEPTION_64E_H */
+--- a/arch/powerpc/include/asm/exception-64s.h
++++ b/arch/powerpc/include/asm/exception-64s.h
+@@ -69,6 +69,35 @@
+  */
+ #define EX_R3         EX_DAR
++/* Macros for annotating the expected destination of (h)rfid */
++
++#define RFI_TO_KERNEL                                                 \
++      rfid
++
++#define RFI_TO_USER                                                   \
++      rfid
++
++#define RFI_TO_USER_OR_KERNEL                                         \
++      rfid
++
++#define RFI_TO_GUEST                                                  \
++      rfid
++
++#define HRFI_TO_KERNEL                                                        \
++      hrfid
++
++#define HRFI_TO_USER                                                  \
++      hrfid
++
++#define HRFI_TO_USER_OR_KERNEL                                                \
++      hrfid
++
++#define HRFI_TO_GUEST                                                 \
++      hrfid
++
++#define HRFI_TO_UNKNOWN                                                       \
++      hrfid
++
+ #ifdef CONFIG_RELOCATABLE
+ #define __EXCEPTION_RELON_PROLOG_PSERIES_1(label, h)                  \
+       mfspr   r11,SPRN_##h##SRR0;     /* save SRR0 */                 \
diff --git a/queue-4.14/powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch b/queue-4.14/powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch
new file mode 100644 (file)
index 0000000..8402f6f
--- /dev/null
@@ -0,0 +1,83 @@
+From 191eccb1580939fb0d47deb405b82a85b0379070 Mon Sep 17 00:00:00 2001
+From: Michael Neuling <mikey@neuling.org>
+Date: Tue, 9 Jan 2018 03:52:05 +1100
+Subject: powerpc/pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper
+
+From: Michael Neuling <mikey@neuling.org>
+
+commit 191eccb1580939fb0d47deb405b82a85b0379070 upstream.
+
+A new hypervisor call has been defined to communicate various
+characteristics of the CPU to guests. Add definitions for the hcall
+number, flags and a wrapper function.
+
+Signed-off-by: Michael Neuling <mikey@neuling.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/include/asm/hvcall.h         |   17 +++++++++++++++++
+ arch/powerpc/include/asm/plpar_wrappers.h |   14 ++++++++++++++
+ 2 files changed, 31 insertions(+)
+
+--- a/arch/powerpc/include/asm/hvcall.h
++++ b/arch/powerpc/include/asm/hvcall.h
+@@ -241,6 +241,7 @@
+ #define H_GET_HCA_INFO          0x1B8
+ #define H_GET_PERF_COUNT        0x1BC
+ #define H_MANAGE_TRACE          0x1C0
++#define H_GET_CPU_CHARACTERISTICS 0x1C8
+ #define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
+ #define H_QUERY_INT_STATE       0x1E4
+ #define H_POLL_PENDING                0x1D8
+@@ -330,6 +331,17 @@
+ #define H_SIGNAL_SYS_RESET_ALL_OTHERS         -2
+ /* >= 0 values are CPU number */
++/* H_GET_CPU_CHARACTERISTICS return values */
++#define H_CPU_CHAR_SPEC_BAR_ORI31     (1ull << 63) // IBM bit 0
++#define H_CPU_CHAR_BCCTRL_SERIALISED  (1ull << 62) // IBM bit 1
++#define H_CPU_CHAR_L1D_FLUSH_ORI30    (1ull << 61) // IBM bit 2
++#define H_CPU_CHAR_L1D_FLUSH_TRIG2    (1ull << 60) // IBM bit 3
++#define H_CPU_CHAR_L1D_THREAD_PRIV    (1ull << 59) // IBM bit 4
++
++#define H_CPU_BEHAV_FAVOUR_SECURITY   (1ull << 63) // IBM bit 0
++#define H_CPU_BEHAV_L1D_FLUSH_PR      (1ull << 62) // IBM bit 1
++#define H_CPU_BEHAV_BNDS_CHK_SPEC_BAR (1ull << 61) // IBM bit 2
++
+ /* Flag values used in H_REGISTER_PROC_TBL hcall */
+ #define PROC_TABLE_OP_MASK    0x18
+ #define PROC_TABLE_DEREG      0x10
+@@ -436,6 +448,11 @@ static inline unsigned int get_longbusy_
+       }
+ }
++struct h_cpu_char_result {
++      u64 character;
++      u64 behaviour;
++};
++
+ #endif /* __ASSEMBLY__ */
+ #endif /* __KERNEL__ */
+ #endif /* _ASM_POWERPC_HVCALL_H */
+--- a/arch/powerpc/include/asm/plpar_wrappers.h
++++ b/arch/powerpc/include/asm/plpar_wrappers.h
+@@ -326,4 +326,18 @@ static inline long plapr_signal_sys_rese
+       return plpar_hcall_norets(H_SIGNAL_SYS_RESET, cpu);
+ }
++static inline long plpar_get_cpu_characteristics(struct h_cpu_char_result *p)
++{
++      unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
++      long rc;
++
++      rc = plpar_hcall(H_GET_CPU_CHARACTERISTICS, retbuf);
++      if (rc == H_SUCCESS) {
++              p->character = retbuf[0];
++              p->behaviour = retbuf[1];
++      }
++
++      return rc;
++}
++
+ #endif /* _ASM_POWERPC_PLPAR_WRAPPERS_H */
index d4cc4b67e6594100a803d9f1f1868b725d332757..15384972d56770efa8ffc0f484be2b8d3cd87010 100644 (file)
@@ -3,3 +3,5 @@ drm-nouveau-disp-gf119-add-missing-drive-vfunc-ptr.patch
 objtool-fix-seg-fault-with-clang-compiled-objects.patch
 objtool-fix-clang-enum-conversion-warning.patch
 objtool-fix-seg-fault-caused-by-missing-parameter.patch
+powerpc-pseries-add-h_get_cpu_characteristics-flags-wrapper.patch
+powerpc-64-add-macros-for-annotating-the-destination-of-rfid-hrfid.patch