linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
To: linuxppc-dev@lists.ozlabs.org, mpe@ellerman.id.au
Subject: [PATCH 2/3] rfi-flush: Make it possible to call setup_rfi_flush() again
Date: Wed, 14 Feb 2018 19:33:40 -0200	[thread overview]
Message-ID: <1518644021-17037-3-git-send-email-mauricfo@linux.vnet.ibm.com> (raw)
In-Reply-To: <1518644021-17037-1-git-send-email-mauricfo@linux.vnet.ibm.com>

From: Michael Ellerman <mpe@ellerman.id.au>

For PowerVM migration we want to be able to call setup_rfi_flush()
again after we've migrated the partition.

To support that we need to check that we're not trying to allocate the
fallback flush area after memblock has gone away. If so we just fail,
we don't support migrating from a patched to an unpatched machine. Or
we do support it, but there will be no RFI flush enabled on the
destination.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/setup.h |  2 +-
 arch/powerpc/kernel/setup_64.c   | 25 +++++++++++++++++++++----
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/include/asm/setup.h b/arch/powerpc/include/asm/setup.h
index 469b7fd..bbcdf929 100644
--- a/arch/powerpc/include/asm/setup.h
+++ b/arch/powerpc/include/asm/setup.h
@@ -49,7 +49,7 @@ enum l1d_flush_type {
 	L1D_FLUSH_MTTRIG	= 0x8,
 };
 
-void __init setup_rfi_flush(enum l1d_flush_type, bool enable);
+void setup_rfi_flush(enum l1d_flush_type, bool enable);
 void do_rfi_flush_fixups(enum l1d_flush_type types);
 
 #endif /* !__ASSEMBLY__ */
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 3efc01a..d692f71 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -855,11 +855,22 @@ void rfi_flush_enable(bool enable)
 	rfi_flush = enable;
 }
 
-static void init_fallback_flush(void)
+static bool init_fallback_flush(void)
 {
 	u64 l1d_size, limit;
 	int cpu;
 
+	if (l1d_flush_fallback_area)
+		return true;
+
+	/*
+	 * Once the slab allocator is up it's too late to allocate the fallback
+	 * flush area, so return an error. This could happen if we migrated from
+	 * a patched machine to an unpatched machine.
+	 */
+	if (slab_is_available())
+		return false;
+
 	l1d_size = ppc64_caches.l1d.size;
 	limit = min(ppc64_bolted_size(), ppc64_rma_size);
 
@@ -875,13 +886,19 @@ static void init_fallback_flush(void)
 		paca[cpu].rfi_flush_fallback_area = l1d_flush_fallback_area;
 		paca[cpu].l1d_flush_size = l1d_size;
 	}
+
+	return true;
 }
 
-void __init setup_rfi_flush(enum l1d_flush_type types, bool enable)
+void setup_rfi_flush(enum l1d_flush_type types, bool enable)
 {
 	if (types & L1D_FLUSH_FALLBACK) {
-		pr_info("rfi-flush: Using fallback displacement flush\n");
-		init_fallback_flush();
+		if (init_fallback_flush())
+			pr_info("rfi-flush: Using fallback displacement flush\n");
+		else {
+			pr_warn("rfi-flush: Error unable to use fallback displacement flush!\n");
+			types &= ~L1D_FLUSH_FALLBACK;
+		}
 	}
 
 	if (types & L1D_FLUSH_ORI)
-- 
2.7.4

  parent reply	other threads:[~2018-02-14 21:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-14 21:33 [PATCH 0/3] Setup RFI flush after PowerVM LPM migration Mauricio Faria de Oliveira
2018-02-14 21:33 ` [PATCH 1/3] rfi-flush: Move the logic to avoid a redo into the debugfs code Mauricio Faria de Oliveira
2018-02-14 21:33 ` Mauricio Faria de Oliveira [this message]
2018-02-15  7:13   ` [PATCH 2/3] rfi-flush: Make it possible to call setup_rfi_flush() again Michal Suchánek
2018-02-16 11:50     ` Mauricio Faria de Oliveira
2018-02-20  9:59       ` Michael Ellerman
2018-02-20 17:06         ` Michal Suchánek
2018-03-05 22:46           ` Mauricio Faria de Oliveira
2018-03-06 10:21             ` Michal Suchánek
2018-03-06 12:15             ` Michael Ellerman
2018-03-06 12:55               ` Michal Suchánek
2018-03-12 23:08                 ` Mauricio Faria de Oliveira
2018-03-13 11:39                   ` Michael Ellerman
2018-03-13 12:14                     ` Mauricio Faria de Oliveira
2018-03-13 17:59                       ` Michal Suchánek
2018-03-13 18:13                         ` Mauricio Faria de Oliveira
2018-03-13 18:36                           ` Michal Suchánek
2018-03-13 20:18                             ` Mauricio Faria de Oliveira
2018-03-16 14:18                               ` Michael Ellerman
2018-03-16 16:51                                 ` Mauricio Faria de Oliveira
2018-02-14 21:33 ` [PATCH 3/3] rfi-flush: Call setup_rfi_flush() after LPM migration Mauricio Faria de Oliveira
2018-02-14 21:39 ` [PATCH] DEBUG: shortcut mobility fixup/migration store, and abuse no_rfi_flush Mauricio Faria de Oliveira

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=1518644021-17037-3-git-send-email-mauricfo@linux.vnet.ibm.com \
    --to=mauricfo@linux.vnet.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    /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;
as well as URLs for NNTP newsgroup(s).