[PATCH v6 03/41] arm64: mm: get rid of kimage_vaddr global variable

Anshuman Khandual anshuman.khandual at arm.com
Wed Nov 29 21:38:59 PST 2023



On 11/29/23 16:45, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb at kernel.org>
> 
> We store the address of _text in kimage_vaddr, but since commit
> 09e3c22a86f6889d ("arm64: Use a variable to store non-global mappings
> decision"), we no longer reference this variable from modules so we no
> longer need to export it.
> 
> In fact, we don't need it at all so let's just get rid of it.
> 
> Acked-by: Mark Rutland <mark.rutland at arm.com>
> Signed-off-by: Ard Biesheuvel <ardb at kernel.org>

There is a checkpatch.pl error for this patch.

--------
ERROR: Please use git commit description style 'commit <12+ chars of sha1> ("<title line>")' -
ie: 'commit 09e3c22a86f6 ("arm64: Use a variable to store non-global mappings decision")'
#6: 
We store the address of _text in kimage_vaddr, but since commit
--------

Otherwise LGTM.


Reviewed-by: Anshuman Khandual <anshuman.khandual at arm.com>

> ---
>  arch/arm64/include/asm/memory.h | 6 ++----
>  arch/arm64/kernel/head.S        | 2 +-
>  arch/arm64/mm/mmu.c             | 3 ---
>  3 files changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
> index fde4186cc387..b8d726f951ae 100644
> --- a/arch/arm64/include/asm/memory.h
> +++ b/arch/arm64/include/asm/memory.h
> @@ -182,6 +182,7 @@
>  #include <linux/types.h>
>  #include <asm/boot.h>
>  #include <asm/bug.h>
> +#include <asm/sections.h>
>  
>  #if VA_BITS > 48
>  extern u64			vabits_actual;
> @@ -193,15 +194,12 @@ extern s64			memstart_addr;
>  /* PHYS_OFFSET - the physical address of the start of memory. */
>  #define PHYS_OFFSET		({ VM_BUG_ON(memstart_addr & 1); memstart_addr; })
>  
> -/* the virtual base of the kernel image */
> -extern u64			kimage_vaddr;
> -
>  /* the offset between the kernel virtual and physical mappings */
>  extern u64			kimage_voffset;
>  
>  static inline unsigned long kaslr_offset(void)
>  {
> -	return kimage_vaddr - KIMAGE_VADDR;
> +	return (u64)&_text - KIMAGE_VADDR;
>  }
>  
>  #ifdef CONFIG_RANDOMIZE_BASE
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index 7b236994f0e1..cab7f91949d8 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -482,7 +482,7 @@ SYM_FUNC_START_LOCAL(__primary_switched)
>  
>  	str_l	x21, __fdt_pointer, x5		// Save FDT pointer
>  
> -	ldr_l	x4, kimage_vaddr		// Save the offset between
> +	adrp	x4, _text			// Save the offset between
>  	sub	x4, x4, x0			// the kernel virtual and
>  	str_l	x4, kimage_voffset, x5		// physical mappings
>  
> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
> index 15f6347d23b6..03c73e9197ac 100644
> --- a/arch/arm64/mm/mmu.c
> +++ b/arch/arm64/mm/mmu.c
> @@ -52,9 +52,6 @@ u64 vabits_actual __ro_after_init = VA_BITS_MIN;
>  EXPORT_SYMBOL(vabits_actual);
>  #endif
>  
> -u64 kimage_vaddr __ro_after_init = (u64)&_text;
> -EXPORT_SYMBOL(kimage_vaddr);
> -
>  u64 kimage_voffset __ro_after_init;
>  EXPORT_SYMBOL(kimage_voffset);
>  



More information about the linux-arm-kernel mailing list