[PATCH 2/6] arm64: head: remove __PHYS_OFFSET
Ard Biesheuvel
ardb at kernel.org
Tue May 17 23:45:02 PDT 2022
On Wed, 18 May 2022 at 05:17, 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>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Signed-off-by: Anshuman Khandual <anshuman.khandual at arm.com>
Acked-by: Ard Biesheuvel <ardb at kernel.org>
Again, this conflicts with
https://lore.kernel.org/linux-arm-kernel/20220411094824.4176877-1-ardb@kernel.org/
but the conflict can be resolved in a straight-forward manner.
> ---
> arch/arm64/kernel/head.S | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index 6a98f1a38c29..aaad76680495 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).
> *
> * Note that the callee-saved registers are used for storing variables
> * that are useful before the MMU is enabled. The allocations are described
> @@ -91,7 +89,7 @@
> SYM_CODE_START(primary_entry)
> bl preserve_boot_args
> bl init_kernel_el // w0=cpu_boot_mode
> - adrp x23, __PHYS_OFFSET
> + adrp x23, KERNEL_START // __pa(KERNEL_START)
> and x23, x23, MIN_KIMG_ALIGN - 1 // KASLR offset, defaults to 0
> bl set_cpu_boot_mode_flag
> bl __create_page_tables
> @@ -420,7 +418,7 @@ SYM_FUNC_END(__create_page_tables)
> /*
> * 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
> @@ -870,7 +868,7 @@ SYM_FUNC_START_LOCAL(__primary_switch)
> bl __relocate_kernel
> #ifdef CONFIG_RANDOMIZE_BASE
> ldr x8, =__primary_switched
> - adrp x0, __PHYS_OFFSET
> + adrp x0, KERNEL_START // __pa(KERNEL_START)
> blr x8
>
> /*
> @@ -893,6 +891,6 @@ SYM_FUNC_START_LOCAL(__primary_switch)
> #endif
> #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