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