Blob Blame History Raw
From 7cdc6fb2c5c4f25846b2ffdb25fefa26a43bb5b5 Mon Sep 17 00:00:00 2001
From: Michal Suchanek <msuchanek@suse.de>
Date: Fri, 14 Sep 2018 16:49:40 +0200
Subject: [PATCH 6/7] KABI: move mce_data_buf into paca_aux.

References: bsc#1094244
Patch-mainline: no, kabi

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
 arch/powerpc/include/asm/paca.h        | 18 +++++++++---------
 arch/powerpc/mm/slb.c                  |  6 +++---
 arch/powerpc/platforms/pseries/ras.c   | 14 +++++++-------
 arch/powerpc/platforms/pseries/setup.c |  4 ++--
 4 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/paca.h
index 9ffbeb7de228..3aa9f4fcc47a 100644
--- a/arch/powerpc/include/asm/paca.h
+++ b/arch/powerpc/include/asm/paca.h
@@ -58,6 +58,15 @@ struct task_struct;
  */
 #ifdef CONFIG_PPC_BOOK3S_64
 struct paca_aux_struct {
+#ifdef CONFIG_PPC_PSERIES
+	u8 *mce_data_buf;		/* buffer to hold per cpu rtas errlog */
+#endif /* CONFIG_PPC_PSERIES */
+
+#ifdef CONFIG_PPC_BOOK3S_64
+	/* Capture SLB related old contents in MCE handler. */
+	struct slb_entry *mce_faulty_slbs;
+	u16 slb_save_cache_ptr;
+#endif /* CONFIG_PPC_BOOK3S_64 */
 };
 #endif
 
@@ -260,15 +269,6 @@ struct paca_struct {
 	void *rfi_flush_fallback_area;
 	u64 l1d_flush_size;
 #endif
-#ifdef CONFIG_PPC_PSERIES
-	u8 *mce_data_buf;		/* buffer to hold per cpu rtas errlog */
-#endif /* CONFIG_PPC_PSERIES */
-
-#ifdef CONFIG_PPC_BOOK3S_64
-	/* Capture SLB related old contents in MCE handler. */
-	struct slb_entry *mce_faulty_slbs;
-	u16 slb_save_cache_ptr;
-#endif /* CONFIG_PPC_BOOK3S_64 */
 };
 
 extern void copy_mm_to_paca(struct mm_struct *mm);
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index 2f56c9263e2c..b448c85a9b3a 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -197,7 +197,7 @@ void slb_save_contents(struct slb_entry *slb_ptr)
 	unsigned long e, v;
 
 	/* Save slb_cache_ptr value. */
-	get_paca()->slb_save_cache_ptr = get_paca()->slb_cache_ptr;
+	get_paca()->aux_ptr->slb_save_cache_ptr = get_paca()->slb_cache_ptr;
 
 	if (!slb_ptr)
 		return;
@@ -251,9 +251,9 @@ void slb_dump_contents(struct slb_entry *slb_ptr)
 	pr_err("----------------------------------\n");
 
 	/* Dump slb cache entires as well. */
-	pr_err("SLB cache ptr value = %d\n", get_paca()->slb_save_cache_ptr);
+	pr_err("SLB cache ptr value = %d\n", get_paca()->aux_ptr->slb_save_cache_ptr);
 	pr_err("Valid SLB cache entries:\n");
-	n = min_t(int, get_paca()->slb_save_cache_ptr, SLB_CACHE_ENTRIES);
+	n = min_t(int, get_paca()->aux_ptr->slb_save_cache_ptr, SLB_CACHE_ENTRIES);
 	for (i = 0; i < n; i++)
 		pr_err("%02d EA[0-35]=%9x\n", i, get_paca()->slb_cache[i]);
 	pr_err("Rest of SLB cache entries:\n");
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c
index a2fd164468a0..630673d7f5df 100644
--- a/arch/powerpc/platforms/pseries/ras.c
+++ b/arch/powerpc/platforms/pseries/ras.c
@@ -431,7 +431,7 @@ static irqreturn_t ras_error_interrupt(int irq, void *dev_id)
 
 static inline struct rtas_error_log *fwnmi_get_errlog(void)
 {
-	return (struct rtas_error_log *)local_paca->mce_data_buf;
+	return (struct rtas_error_log *)local_paca->aux_ptr->mce_data_buf;
 }
 
 /*
@@ -467,18 +467,18 @@ static struct rtas_error_log *fwnmi_get_errinfo(struct pt_regs *regs)
 
 	h = (struct rtas_error_log *)&savep[1];
 	/* Use the per cpu buffer from paca to store rtas error log */
-	memset(local_paca->mce_data_buf, 0, RTAS_ERROR_LOG_MAX);
+	memset(local_paca->aux_ptr->mce_data_buf, 0, RTAS_ERROR_LOG_MAX);
 	if (!rtas_error_extended(h)) {
-		memcpy(local_paca->mce_data_buf, h, sizeof(__u64));
+		memcpy(local_paca->aux_ptr->mce_data_buf, h, sizeof(__u64));
 	} else {
 		int len, error_log_length;
 
 		error_log_length = 8 + rtas_error_extended_log_length(h);
 		len = min_t(int, error_log_length, RTAS_ERROR_LOG_MAX);
-		memcpy(local_paca->mce_data_buf, h, len);
+		memcpy(local_paca->aux_ptr->mce_data_buf, h, len);
 	}
 
-	return (struct rtas_error_log *)local_paca->mce_data_buf;
+	return (struct rtas_error_log *)local_paca->aux_ptr->mce_data_buf;
 }
 
 /* Call this when done with the data returned by FWNMI_get_errinfo.
@@ -600,7 +600,7 @@ static void pseries_print_mce_info(struct pt_regs *regs,
 #ifdef CONFIG_PPC_BOOK3S_64
 	/* Display faulty slb contents for SLB errors. */
 	if (error_type == MC_ERROR_TYPE_SLB)
-		slb_dump_contents(local_paca->mce_faulty_slbs);
+		slb_dump_contents(local_paca->aux_ptr->mce_faulty_slbs);
 #endif
 
 	printk("%s%s Machine check interrupt [%s]\n", level, sevstr,
@@ -675,7 +675,7 @@ static int mce_handle_error(struct rtas_error_log *errp)
 			 * level of recursion.
 			 */
 			if (local_paca->in_mce == 1)
-				slb_save_contents(local_paca->mce_faulty_slbs);
+				slb_save_contents(local_paca->aux_ptr->mce_faulty_slbs);
 			flush_and_reload_slb();
 			disposition = RTAS_DISP_FULLY_RECOVERED;
 			rtas_set_disposition_recovered(errp);
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index d66541f5ed7f..4ecc57683521 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -131,7 +131,7 @@ static void __init fwnmi_init(void)
 	mce_data_buf = __va(memblock_alloc_base(RTAS_ERROR_LOG_MAX * nr_cpus,
 					RTAS_ERROR_LOG_MAX, ppc64_rma_size));
 	for_each_possible_cpu(i) {
-		paca[i].mce_data_buf = mce_data_buf +
+		paca[i].aux_ptr->mce_data_buf = mce_data_buf +
 						(RTAS_ERROR_LOG_MAX * i);
 	}
 
@@ -141,7 +141,7 @@ static void __init fwnmi_init(void)
 	slb_ptr = __va(memblock_alloc_base(size, sizeof(struct slb_entry),
 					   ppc64_rma_size));
 	for_each_possible_cpu(i)
-		paca[i].mce_faulty_slbs = slb_ptr + (mmu_slb_size * i);
+		paca[i].aux_ptr->mce_faulty_slbs = slb_ptr + (mmu_slb_size * i);
 #endif
 }
 
-- 
2.13.7