|
Michal Suchanek |
4d6673 |
From 836b5b9fcc8e09cea7e8a59a070349a00e818308 Mon Sep 17 00:00:00 2001
|
|
Michal Suchanek |
4d6673 |
From: Nathan Lynch <nathanl@linux.ibm.com>
|
|
Michal Suchanek |
4d6673 |
Date: Fri, 10 Feb 2023 12:41:54 -0600
|
|
Michal Suchanek |
4d6673 |
Subject: [PATCH] powerpc/rtas: ensure 4KB alignment for rtas_data_buf
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
References: bsc#1065729
|
|
Michal Suchanek |
4d6673 |
Patch-mainline: v6.3-rc1
|
|
Michal Suchanek |
4d6673 |
Git-commit: 836b5b9fcc8e09cea7e8a59a070349a00e818308
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
Some RTAS functions that have work area parameters impose alignment
|
|
Michal Suchanek |
4d6673 |
requirements on the work area passed to them by the OS. Examples
|
|
Michal Suchanek |
4d6673 |
include:
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
- ibm,configure-connector
|
|
Michal Suchanek |
4d6673 |
- ibm,update-nodes
|
|
Michal Suchanek |
4d6673 |
- ibm,update-properties
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
4KB is the greatest alignment required by PAPR for such
|
|
Michal Suchanek |
4d6673 |
buffers. rtas_data_buf used to have a __page_aligned attribute in the
|
|
Michal Suchanek |
4d6673 |
arch/ppc64 days, but that was changed to __cacheline_aligned for
|
|
Michal Suchanek |
4d6673 |
unknown reasons by commit 033ef338b6e0 ("powerpc: Merge rtas.c into
|
|
Michal Suchanek |
4d6673 |
arch/powerpc/kernel"). That works out to 128-byte alignment
|
|
Michal Suchanek |
4d6673 |
on ppc64, which isn't right.
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
This was found by inspection and I'm not aware of any real problems
|
|
Michal Suchanek |
4d6673 |
caused by this. Either current RTAS implementations don't enforce the
|
|
Michal Suchanek |
4d6673 |
alignment constraints, or rtas_data_buf is always being placed at a
|
|
Michal Suchanek |
4d6673 |
4KB boundary by accident (or both, perhaps).
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
Use __aligned(SZ_4K) to ensure the rtas_data_buf has alignment
|
|
Michal Suchanek |
4d6673 |
appropriate for all users.
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
|
|
Michal Suchanek |
4d6673 |
Fixes: 033ef338b6e0 ("powerpc: Merge rtas.c into arch/powerpc/kernel")
|
|
Michal Suchanek |
4d6673 |
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
|
|
Michal Suchanek |
4d6673 |
Link: https://lore.kernel.org/r/20230125-b4-powerpc-rtas-queue-v3-6-26929c8cce78@linux.ibm.com
|
|
Michal Suchanek |
4d6673 |
Acked-by: Michal Suchanek <msuchanek@suse.de>
|
|
Michal Suchanek |
4d6673 |
---
|
|
Michal Suchanek |
4d6673 |
arch/powerpc/kernel/rtas.c | 2 +-
|
|
Michal Suchanek |
4d6673 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
|
|
Michal Suchanek |
4d6673 |
--- a/arch/powerpc/kernel/rtas.c
|
|
Michal Suchanek |
4d6673 |
+++ b/arch/powerpc/kernel/rtas.c
|
|
Michal Suchanek |
4d6673 |
@@ -75,7 +75,7 @@ static struct rtas_args rtas_args;
|
|
Michal Suchanek |
4d6673 |
DEFINE_SPINLOCK(rtas_data_buf_lock);
|
|
Michal Suchanek |
4d6673 |
EXPORT_SYMBOL(rtas_data_buf_lock);
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
-char rtas_data_buf[RTAS_DATA_BUF_SIZE] __cacheline_aligned;
|
|
Michal Suchanek |
4d6673 |
+char rtas_data_buf[RTAS_DATA_BUF_SIZE] __aligned(SZ_4K);
|
|
Michal Suchanek |
4d6673 |
EXPORT_SYMBOL(rtas_data_buf);
|
|
Michal Suchanek |
4d6673 |
|
|
Michal Suchanek |
4d6673 |
unsigned long rtas_rmo_buf;
|
|
Michal Suchanek |
4d6673 |
--
|
|
Michal Suchanek |
4d6673 |
2.40.0
|
|
Michal Suchanek |
4d6673 |
|