diff mbox series

runtime constants: move list of constants to vmlinux.lds.h

Message ID 20240730-runtime-constants-refactor-v1-1-90c2c884c3f8@google.com (mailing list archive)
State New, archived
Headers show
Series runtime constants: move list of constants to vmlinux.lds.h | expand

Commit Message

Jann Horn July 30, 2024, 8:15 p.m. UTC
Refactor the list of constant variables into a macro.
This should make it easier to add more constants in the future.

Signed-off-by: Jann Horn <jannh@google.com>
---
I'm not sure whose tree this has to go through - I guess Arnd's?
---
 arch/arm64/kernel/vmlinux.lds.S   | 3 +--
 arch/s390/kernel/vmlinux.lds.S    | 3 +--
 arch/x86/kernel/vmlinux.lds.S     | 3 +--
 include/asm-generic/vmlinux.lds.h | 4 ++++
 4 files changed, 7 insertions(+), 6 deletions(-)


---
base-commit: 94ede2a3e9135764736221c080ac7c0ad993dc2d
change-id: 20240730-runtime-constants-refactor-309f966d4100

Comments

Arnd Bergmann July 30, 2024, 9:29 p.m. UTC | #1
On Tue, Jul 30, 2024, at 22:15, Jann Horn wrote:
> Refactor the list of constant variables into a macro.
> This should make it easier to add more constants in the future.
>
> Signed-off-by: Jann Horn <jannh@google.com>
> ---
> I'm not sure whose tree this has to go through - I guess Arnd's?

This is for 6.12, right? I can take it through the asm-generic
tree if that helps, but someone else should review it first.

If you have any other patches that would depend on this patch,
you can also take it through the other tree and add

Acked-by: Arnd Bergmann <arnd@arndb.de>

for cross-architecture bits.

    Arnd
Jann Horn July 30, 2024, 10 p.m. UTC | #2
On Tue, Jul 30, 2024 at 11:29 PM Arnd Bergmann <arnd@arndb.de> wrote:
> On Tue, Jul 30, 2024, at 22:15, Jann Horn wrote:
> > Refactor the list of constant variables into a macro.
> > This should make it easier to add more constants in the future.
> >
> > Signed-off-by: Jann Horn <jannh@google.com>
> > ---
> > I'm not sure whose tree this has to go through - I guess Arnd's?
>
> This is for 6.12, right?

Yeah.

> I can take it through the asm-generic
> tree if that helps, but someone else should review it first.
>
> If you have any other patches that would depend on this patch,
> you can also take it through the other tree and add
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> for cross-architecture bits.

Thanks!

I was thinking of maybe trying to write a patch based on it that'd
have to go through the MM tree (for using this in kfence), though I'm
not sure whether I'll actually do that yet. So your suggestion makes
sense, maybe hold off on putting this in a tree for now...

>
>     Arnd
Alexander Gordeev July 31, 2024, 6:14 a.m. UTC | #3
On Tue, Jul 30, 2024 at 10:15:16PM +0200, Jann Horn wrote:
> Refactor the list of constant variables into a macro.
> This should make it easier to add more constants in the future.
> 
> Signed-off-by: Jann Horn <jannh@google.com>
> ---
> I'm not sure whose tree this has to go through - I guess Arnd's?
> ---
>  arch/arm64/kernel/vmlinux.lds.S   | 3 +--
>  arch/s390/kernel/vmlinux.lds.S    | 3 +--
>  arch/x86/kernel/vmlinux.lds.S     | 3 +--
>  include/asm-generic/vmlinux.lds.h | 4 ++++
>  4 files changed, 7 insertions(+), 6 deletions(-)
...
> diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
> index 975c654cf5a5..3e8ebf1d64c5 100644
> --- a/arch/s390/kernel/vmlinux.lds.S
> +++ b/arch/s390/kernel/vmlinux.lds.S
> @@ -187,14 +187,13 @@ SECTIONS
>  	_eamode31 = .;
>  
>  	/* early.c uses stsi, which requires page aligned data. */
>  	. = ALIGN(PAGE_SIZE);
>  	INIT_DATA_SECTION(0x100)
>  
> -	RUNTIME_CONST(shift, d_hash_shift)
> -	RUNTIME_CONST(ptr, dentry_hashtable)
> +	RUNTIME_CONST_VARIABLES
>  
>  	PERCPU_SECTION(0x100)
>  
>  	. = ALIGN(PAGE_SIZE);
>  	__init_end = .;		/* freed after init ends here */
>  
...

For s390:

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Thomas Gleixner July 31, 2024, 7:36 p.m. UTC | #4
On Tue, Jul 30 2024 at 22:15, Jann Horn wrote:
> Refactor the list of constant variables into a macro.
> This should make it easier to add more constants in the future.
>
> Signed-off-by: Jann Horn <jannh@google.com>

Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Linus Torvalds July 31, 2024, 9:25 p.m. UTC | #5
On Tue, 30 Jul 2024 at 13:15, Jann Horn <jannh@google.com> wrote:
>
> Refactor the list of constant variables into a macro.
> This should make it easier to add more constants in the future.

LGTM too.

          Linus
Jann Horn Aug. 9, 2024, 2:17 p.m. UTC | #6
On Wed, Jul 31, 2024 at 12:00 AM Jann Horn <jannh@google.com> wrote:
> On Tue, Jul 30, 2024 at 11:29 PM Arnd Bergmann <arnd@arndb.de> wrote:
> > On Tue, Jul 30, 2024, at 22:15, Jann Horn wrote:
> > > Refactor the list of constant variables into a macro.
> > > This should make it easier to add more constants in the future.
> > >
> > > Signed-off-by: Jann Horn <jannh@google.com>
> > > ---
> > > I'm not sure whose tree this has to go through - I guess Arnd's?
> >
> > This is for 6.12, right?
>
> Yeah.
>
> > I can take it through the asm-generic
> > tree if that helps, but someone else should review it first.
> >
> > If you have any other patches that would depend on this patch,
> > you can also take it through the other tree and add
> >
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> >
> > for cross-architecture bits.
>
> Thanks!
>
> I was thinking of maybe trying to write a patch based on it that'd
> have to go through the MM tree (for using this in kfence), though I'm
> not sure whether I'll actually do that yet. So your suggestion makes
> sense, maybe hold off on putting this in a tree for now...

I don't think I'll get around to doing anything on top of this patch
for the next few months at least, please take it through your tree.
Will Deacon Aug. 16, 2024, 10:41 a.m. UTC | #7
On Tue, Jul 30, 2024 at 10:15:16PM +0200, Jann Horn wrote:
> Refactor the list of constant variables into a macro.
> This should make it easier to add more constants in the future.
> 
> Signed-off-by: Jann Horn <jannh@google.com>
> ---
> I'm not sure whose tree this has to go through - I guess Arnd's?
> ---
>  arch/arm64/kernel/vmlinux.lds.S   | 3 +--
>  arch/s390/kernel/vmlinux.lds.S    | 3 +--
>  arch/x86/kernel/vmlinux.lds.S     | 3 +--
>  include/asm-generic/vmlinux.lds.h | 4 ++++
>  4 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
> index 55a8e310ea12..58d89d997d05 100644
> --- a/arch/arm64/kernel/vmlinux.lds.S
> +++ b/arch/arm64/kernel/vmlinux.lds.S
> @@ -261,14 +261,13 @@ SECTIONS
>  		*(.init.altinstructions .init.bss)	/* from the EFI stub */
>  	}
>  	.exit.data : {
>  		EXIT_DATA
>  	}
>  
> -	RUNTIME_CONST(shift, d_hash_shift)
> -	RUNTIME_CONST(ptr, dentry_hashtable)
> +	RUNTIME_CONST_VARIABLES
>  
>  	PERCPU_SECTION(L1_CACHE_BYTES)
>  	HYPERVISOR_PERCPU_SECTION
>  
>  	HYPERVISOR_RELOC_SECTION

Acked-by: Will Deacon <will@kernel.org>

I'm assuming Arnd will pick this up.

Will
Arnd Bergmann Aug. 19, 2024, 7:49 a.m. UTC | #8
On Fri, Aug 16, 2024, at 12:41, Will Deacon wrote:
> On Tue, Jul 30, 2024 at 10:15:16PM +0200, Jann Horn wrote:
>> Refactor the list of constant variables into a macro.
>> This should make it easier to add more constants in the future.
>> 
>> Signed-off-by: Jann Horn <jannh@google.com>
>> ---
>> I'm not sure whose tree this has to go through - I guess Arnd's?
>
> Acked-by: Will Deacon <will@kernel.org>
>
> I'm assuming Arnd will pick this up.

I'm back from vacation now and applied it to the asm-generic
tree for 6.12.

   Arnd
diff mbox series

Patch

diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
index 55a8e310ea12..58d89d997d05 100644
--- a/arch/arm64/kernel/vmlinux.lds.S
+++ b/arch/arm64/kernel/vmlinux.lds.S
@@ -261,14 +261,13 @@  SECTIONS
 		*(.init.altinstructions .init.bss)	/* from the EFI stub */
 	}
 	.exit.data : {
 		EXIT_DATA
 	}
 
-	RUNTIME_CONST(shift, d_hash_shift)
-	RUNTIME_CONST(ptr, dentry_hashtable)
+	RUNTIME_CONST_VARIABLES
 
 	PERCPU_SECTION(L1_CACHE_BYTES)
 	HYPERVISOR_PERCPU_SECTION
 
 	HYPERVISOR_RELOC_SECTION
 
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 975c654cf5a5..3e8ebf1d64c5 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -187,14 +187,13 @@  SECTIONS
 	_eamode31 = .;
 
 	/* early.c uses stsi, which requires page aligned data. */
 	. = ALIGN(PAGE_SIZE);
 	INIT_DATA_SECTION(0x100)
 
-	RUNTIME_CONST(shift, d_hash_shift)
-	RUNTIME_CONST(ptr, dentry_hashtable)
+	RUNTIME_CONST_VARIABLES
 
 	PERCPU_SECTION(0x100)
 
 	. = ALIGN(PAGE_SIZE);
 	__init_end = .;		/* freed after init ends here */
 
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 6e73403e874f..6726be89b7a6 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -354,14 +354,13 @@  SECTIONS
 	}
 
 #if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
 	PERCPU_SECTION(INTERNODE_CACHE_BYTES)
 #endif
 
-	RUNTIME_CONST(shift, d_hash_shift)
-	RUNTIME_CONST(ptr, dentry_hashtable)
+	RUNTIME_CONST_VARIABLES
 
 	. = ALIGN(PAGE_SIZE);
 
 	/* freed after init ends here */
 	.init.end : AT(ADDR(.init.end) - LOAD_OFFSET) {
 		__init_end = .;
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index ad6afc5c4918..54986eac2f73 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -916,12 +916,16 @@ 
 #define RUNTIME_CONST(t,x)						\
 	. = ALIGN(8);							\
 	RUNTIME_NAME(t,x) : AT(ADDR(RUNTIME_NAME(t,x)) - LOAD_OFFSET) {	\
 		*(RUNTIME_NAME(t,x));					\
 	}
 
+#define RUNTIME_CONST_VARIABLES						\
+		RUNTIME_CONST(shift, d_hash_shift)			\
+		RUNTIME_CONST(ptr, dentry_hashtable)
+
 /* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */
 #define KUNIT_TABLE()							\
 		. = ALIGN(8);						\
 		BOUNDED_SECTION_POST_LABEL(.kunit_test_suites, __kunit_suites, _start, _end)
 
 /* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */