LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman.id.au>
To: Alexander.Levin@microsoft.com
Cc: stable@vger.kernel.org, linuxppc-dev@ozlabs.org, npiggin@gmail.com
Subject: [PATCH v4.1 backport 02/15] powerpc/64: Add macros for annotating the destination of rfid/hrfid
Date: Fri,  2 Mar 2018 15:45:36 +1100	[thread overview]
Message-ID: <20180302044549.14930-3-mpe@ellerman.id.au> (raw)
In-Reply-To: <20180302044549.14930-1-mpe@ellerman.id.au>

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(+)

diff --git a/arch/powerpc/include/asm/exception-64e.h b/arch/powerpc/include/asm/exception-64e.h
index a8b52b61043f..bd8958445336 100644
--- a/arch/powerpc/include/asm/exception-64e.h
+++ b/arch/powerpc/include/asm/exception-64e.h
@@ -208,5 +208,11 @@ exc_##label##_book3e:
 	ori	r3,r3,interrupt_base_book3e@l;	\
 	mtspr	SPRN_IVOR##vector_number,r3;
 
+#define RFI_TO_KERNEL							\
+	rfi
+
+#define RFI_TO_USER							\
+	rfi
+
 #endif /* _ASM_POWERPC_EXCEPTION_64E_H */
 
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index 77f52b26dad6..c8c8a81e3976 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -50,6 +50,35 @@
 #define EX_PPR		88	/* SMT thread status register (priority) */
 #define EX_CTR		96
 
+/* 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)			\
 	ld	r12,PACAKBASE(r13);	/* get high part of &label */	\
-- 
2.14.1

  parent reply	other threads:[~2018-03-02  4:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-02  4:45 [PATCH v4.1 backport 00/15] powerpc stable backports for v4.1 Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 01/15] powerpc/pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper Michael Ellerman
2018-03-02  4:45 ` Michael Ellerman [this message]
2018-03-02  4:45 ` [PATCH v4.1 backport 03/15] powerpc/64s: Simple RFI macro conversions Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 04/15] powerpc/64: Convert fast_exception_return to use RFI_TO_USER/KERNEL Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 05/15] powerpc/64: Convert the syscall exit path " Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 06/15] powerpc/64s: Convert slb_miss_common " Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 07/15] powerpc/64s: Add support for RFI flush of L1-D cache Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 08/15] powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 09/15] powerpc/64s: Improve RFI L1-D cache flush fallback Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 10/15] powerpc/pseries: Query hypervisor for RFI flush settings Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 11/15] powerpc/powernv: Check device-tree " Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 12/15] powerpc/64s: Allow control of RFI flush via debugfs Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 13/15] powerpc/pseries: include linux/types.h in asm/hvcall.h Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 14/15] powerpc/ptrace: Fix out of bounds array access warning Michael Ellerman
2018-03-02  4:45 ` [PATCH v4.1 backport 15/15] powerpc/vdso64: Use double word compare on pointers Michael Ellerman
2018-03-03 22:17 ` [PATCH v4.1 backport 00/15] powerpc stable backports for v4.1 Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180302044549.14930-3-mpe@ellerman.id.au \
    --to=mpe@ellerman.id.au \
    --cc=Alexander.Levin@microsoft.com \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=npiggin@gmail.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox