linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: ard.biesheuvel@linaro.org (Ard Biesheuvel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/8] arm64: 2016 head.S spring cleaning
Date: Mon,  4 Apr 2016 16:52:16 +0200	[thread overview]
Message-ID: <1459781544-14310-1-git-send-email-ard.biesheuvel@linaro.org> (raw)

After having been responsible for obfuscating the head.S code in the v4.6
cycle to implement KASLR support, this series attempts to make amends by
performing some janitorial duties as well.

The main point of this series is to get rid of the file scoped callee saved
registers in head.S to store the FDT pointer, ID map and swapper dir addresses,
KASLR offset, PHYS offset etc. The fact that these are file scoped makes it
unnecessarily complicated to reason about lifetimes etc, especially since the
code is called by both the boot CPU and secondaries.

Since some of these functions are called without a stack, we still need to use
callee saved registers to preserve values across function calls without
stacking/unstacking the previous values, but these instances are now function
scoped, not file scoped, and documented.

Patch #1 gets rid of the confusing subtraction of address and offset values to
obtain __secondary_switched.

Patch #2 gets rid of x21 in head.S

Patch #3 creates moves the stack pointer init to an earlier time in
__mmap_switched, and creates a proper stack frame.

Patch #4 changes the EL2 detection code to simply use x0 as a return value and
first argument.

Patch #5 gets rid of x25 and x26 to store idmap_pg_dir and swapper_pg_dir

Patch #6 gets rid of x27 to store __mmap_switched or __secondary_switched

Patch #7 gets rid of x24 to store PHYS_OFFSET

Patch #8 gets rid of x23 to store the kaslr offset

@Maintainers: feel free to cherry pick if not all [or none] of these patches
make sense to you

Ard Biesheuvel (8):
  arm64/kernel: use literal for relocated address of
    __secondary_switched
  arm64/kernel: reuse boot_args array to get to __fdt_pointer
  arm64/kernel: use a proper stack frame in __mmap_switched()
  arm64/kernel: use ordinary calling convention for EL2 setup
  arm64/kernel: refer to idmap_pg_dir and swapper_pg_dir directly
  arm64/kernel: pass virtual entry point as __enable_mmu() argument
  arm64/kernel: drop __PHYS_OFFSET register with file scope from head.S
  arm64/kernel: drop global kaslr_offset in x23 from head.S

 arch/arm64/kernel/head.S  | 177 +++++++++++---------
 arch/arm64/kernel/setup.c |   4 +-
 2 files changed, 95 insertions(+), 86 deletions(-)

-- 
2.5.0

             reply	other threads:[~2016-04-04 14:52 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-04 14:52 Ard Biesheuvel [this message]
2016-04-04 14:52 ` [PATCH 1/8] arm64/kernel: use literal for relocated address of __secondary_switched Ard Biesheuvel
2016-04-07  9:38   ` Will Deacon
2016-04-07  9:43     ` Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 2/8] arm64/kernel: reuse boot_args array to get to __fdt_pointer Ard Biesheuvel
2016-04-04 15:13   ` James Morse
2016-04-04 15:19     ` Ard Biesheuvel
2016-04-05 11:09       ` Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 3/8] arm64/kernel: use a proper stack frame in __mmap_switched() Ard Biesheuvel
2016-04-04 15:33   ` James Morse
2016-04-04 15:40     ` Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 4/8] arm64/kernel: use ordinary calling convention for EL2 setup Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 5/8] arm64/kernel: refer to idmap_pg_dir and swapper_pg_dir directly Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 6/8] arm64/kernel: pass virtual entry point as __enable_mmu() argument Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 7/8] arm64/kernel: drop __PHYS_OFFSET register with file scope from head.S Ard Biesheuvel
2016-04-04 14:52 ` [PATCH 8/8] arm64/kernel: drop global kaslr_offset in x23 " Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1459781544-14310-1-git-send-email-ard.biesheuvel@linaro.org \
    --to=ard.biesheuvel@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).