[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v1 1/2] xen: introduce common macros for per-CPU sections defintion
- To: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
- From: Julien Grall <julien@xxxxxxx>
- Date: Sun, 22 Sep 2024 09:58:53 +0200
- Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
- Delivery-date: Sun, 22 Sep 2024 07:59:18 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Hi,
On 19/09/2024 17:59, Oleksii Kurochko wrote:
Introduce PERCPU_SECTION macro which manages:
* Alignment of the section start
* Insertion of per-CPU data sections
* Alignment and start/end markers for per-CPU data
This change simplifies the linker script maintenance and ensures a unified
approach for per-CPU sections across different architectures.
Refactor the linker scripts for Arm, PPC, and x86 architectures by using
the common macro PERCPU_SECTION defined in xen/xen.lds.h to handle
per-CPU data sections.
No functional changes.
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
Cheers,
---
xen/arch/arm/xen.lds.S | 9 +--------
xen/arch/ppc/xen.lds.S | 9 +--------
xen/arch/x86/xen.lds.S | 9 +--------
xen/include/xen/xen.lds.h | 10 ++++++++++
4 files changed, 13 insertions(+), 24 deletions(-)
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index bd884664ad..669a882455 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -198,14 +198,7 @@ SECTIONS
__bss_start = .;
*(.bss.stack_aligned)
*(.bss.page_aligned)
- . = ALIGN(PAGE_SIZE);
- __per_cpu_start = .;
- *(.bss.percpu.page_aligned)
- *(.bss.percpu)
- . = ALIGN(SMP_CACHE_BYTES);
- *(.bss.percpu.read_mostly)
- . = ALIGN(SMP_CACHE_BYTES);
- __per_cpu_data_end = .;
+ PERCPU_SECTION
*(.bss .bss.*)
. = ALIGN(POINTER_ALIGN);
__bss_end = .;
diff --git a/xen/arch/ppc/xen.lds.S b/xen/arch/ppc/xen.lds.S
index 38cd857187..0833d80479 100644
--- a/xen/arch/ppc/xen.lds.S
+++ b/xen/arch/ppc/xen.lds.S
@@ -148,14 +148,7 @@ SECTIONS
__bss_start = .;
*(.bss.stack_aligned)
*(.bss.page_aligned)
- . = ALIGN(PAGE_SIZE);
- __per_cpu_start = .;
- *(.bss.percpu.page_aligned)
- *(.bss.percpu)
- . = ALIGN(SMP_CACHE_BYTES);
- *(.bss.percpu.read_mostly)
- . = ALIGN(SMP_CACHE_BYTES);
- __per_cpu_data_end = .;
+ PERCPU_SECTION
*(.bss .bss.*)
. = ALIGN(POINTER_ALIGN);
__bss_end = .;
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index d48de67cfd..eea8edc02b 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -321,14 +321,7 @@ SECTIONS
DECL_SECTION(.bss) {
__bss_start = .;
*(.bss.page_aligned*)
- . = ALIGN(PAGE_SIZE);
- __per_cpu_start = .;
- *(.bss.percpu.page_aligned)
- *(.bss.percpu)
- . = ALIGN(SMP_CACHE_BYTES);
- *(.bss.percpu.read_mostly)
- . = ALIGN(SMP_CACHE_BYTES);
- __per_cpu_data_end = .;
+ PERCPU_SECTION
*(.bss .bss.*)
. = ALIGN(POINTER_ALIGN);
__bss_end = .;
diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h
index a17810bb28..f043c7b6c0 100644
--- a/xen/include/xen/xen.lds.h
+++ b/xen/include/xen/xen.lds.h
@@ -151,6 +151,16 @@
#define LOCK_PROFILE_DATA
#endif
+#define PERCPU_SECTION \
+ . = ALIGN(PAGE_SIZE); \
+ __per_cpu_start = .; \
+ *(.bss.percpu.page_aligned) \
+ *(.bss.percpu) \
+ . = ALIGN(SMP_CACHE_BYTES); \
+ *(.bss.percpu.read_mostly) \
+ . = ALIGN(SMP_CACHE_BYTES); \
+ __per_cpu_data_end = .; \
+
#ifdef CONFIG_HAS_VPCI
#define VPCI_ARRAY \
. = ALIGN(POINTER_ALIGN); \
--
Julien Grall
|