[PATCH] arm64: head: remove __PHYS_OFFSET

Ard Biesheuvel ardb at kernel.org
Tue Jun 28 00:25:50 PDT 2022


On Tue, 28 Jun 2022 at 06:57, Anshuman Khandual
<anshuman.khandual at arm.com> wrote:
>
> From: Mark Rutland <mark.rutland at arm.com>
>
> It's very easy to confuse __PHYS_OFFSET and PHYS_OFFSET. To clarify
> things, let's remove __PHYS_OFFSET and use KERNEL_START directly, with
> comments to show that we're using physical address, as we do for other
> objects.
>
> At the same time, update the comment regarding the kernel entry address
> to mention __pa(KERNEL_START) rather than __pa(PAGE_OFFSET).
>
> There should be no functional change as a result of this patch.
>
> Cc: Ard Biesheuvel <ardb at kernel.org>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Will Deacon <will at kernel.org>
> Acked-by: Ard Biesheuvel <ardb at kernel.org>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
> ---
> This applies on latest arm64 kernel (for-next/boot).
>
>  arch/arm64/kernel/head.S | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index 6bf685f988f1..763f11a394a7 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -37,8 +37,6 @@
>
>  #include "efi-header.S"
>
> -#define __PHYS_OFFSET  KERNEL_START
> -
>  #if (PAGE_OFFSET & 0x1fffff) != 0
>  #error PAGE_OFFSET must be at least 2MB aligned
>  #endif
> @@ -52,7 +50,7 @@
>   *   x0 = physical address to the FDT blob.
>   *
>   * This code is mostly position independent so you call this at
> - * __pa(PAGE_OFFSET).
> + * __pa(KERNEL_START).
>   *

I'm now wondering whether we should just drop this comment - it is no
longer accurate, and of dubious value even when it was.


>   * Note that the callee-saved registers are used for storing variables
>   * that are useful before the MMU is enabled. The allocations are described
> @@ -409,7 +407,7 @@ SYM_FUNC_END(create_kernel_mapping)
>  /*
>   * The following fragment of code is executed with the MMU enabled.
>   *
> - *   x0 = __PHYS_OFFSET
> + *   x0 = __pa(KERNEL_START)
>   */
>  SYM_FUNC_START_LOCAL(__primary_switched)
>         adr_l   x4, init_task
> @@ -793,7 +791,7 @@ SYM_FUNC_START_LOCAL(__primary_switch)
>         adrp    x2, init_idmap_pg_dir
>         bl      __enable_mmu
>  #ifdef CONFIG_RELOCATABLE
> -       adrp    x23, __PHYS_OFFSET
> +       adrp    x23, KERNEL_START
>         and     x23, x23, MIN_KIMG_ALIGN - 1
>  #ifdef CONFIG_RANDOMIZE_BASE
>         mov     x0, x22
> @@ -815,6 +813,6 @@ SYM_FUNC_START_LOCAL(__primary_switch)
>         bl      __relocate_kernel
>  #endif
>         ldr     x8, =__primary_switched
> -       adrp    x0, __PHYS_OFFSET
> +       adrp    x0, KERNEL_START                // __pa(KERNEL_START)
>         br      x8
>  SYM_FUNC_END(__primary_switch)
> --
> 2.20.1
>



More information about the linux-arm-kernel mailing list