Linux-RISC-V Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Pekka Enberg <penberg@gmail.com>
To: linux-riscv@lists.infradead.org
Cc: Pekka Enberg <penberg@kernel.org>, palmer@dabbelt.com
Subject: [PATCH 0/8] riscv/mm/fault: Page fault handler cleanups
Date: Tue, 25 Aug 2020 21:38:59 +0300	[thread overview]
Message-ID: <20200825183907.275950-1-penberg@gmail.com> (raw)

From: Pekka Enberg <penberg@kernel.org>

This patch series cleans up the do_page_fault() function by replacing
gotos with function calls, similar to what the x86 architecture does.
The motivation for this series is to make thepage fault handling code
easier to read and reason about.

The use of gotos has no advantage in kernel code size either. In fact,
the bloatometer script shows a tiny decrease in kernel text size:

  add/remove: 1/0 grow/shrink: 0/2 up/down: 96/-99 (-3)
  Function                                     old     new   delta
  no_context.part                                -      96     +96
  __func__                                      14      13      -1
  do_page_fault                                778     680     -98
  Total: Before=792, After=789, chg -0.38%

Please note tht x86 also moves these functions out-of-line with the
"noinline" annotation, which supposedly decreases stack usage in
do_page_fault() at the expense of slighly larger kernel code size.

However, in my testing, I was able to reduce stack usage at maximum by
16 bytes, at the expense of much larger kernel code size, so I am
keeping the functions inline, and letting the compiler do its job.

The patch series has been tested on QEMU.

You can pull the series from:

  git@github.com:penberg/linux.git penberg/riscv/mm-fault-cleanups

Pekka Enberg (8):
  riscv/mm/fault: Move no context handling to no_context()
  riscv/mm/fault: Move bad area handling to bad_area()
  riscv/mm/fault: Move vmalloc fault handling to vmalloc_fault()
  riscv/mm/fault: Simplify fault error handling
  riscv/mm/fault: Move fault error handling to mm_fault_error()
  riscv/mm/fault: Simplify mm_fault_error()
  riscv/mm/fault: Move FAULT_FLAG_WRITE handling in do_page_fault()
  riscv/mm/fault: Move access error check to function

 arch/riscv/mm/fault.c | 337 +++++++++++++++++++++++-------------------
 1 file changed, 189 insertions(+), 148 deletions(-)

-- 
2.26.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

             reply	other threads:[~2020-08-25 18:39 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-25 18:38 Pekka Enberg [this message]
2020-08-25 18:39 ` [PATCH 1/8] riscv/mm/fault: Move no context handling to no_context() Pekka Enberg
2020-08-25 18:39 ` [PATCH 2/8] riscv/mm/fault: Move bad area handling to bad_area() Pekka Enberg
2020-08-25 18:39 ` [PATCH 3/8] riscv/mm/fault: Move vmalloc fault handling to vmalloc_fault() Pekka Enberg
2020-08-25 18:39 ` [PATCH 4/8] riscv/mm/fault: Simplify fault error handling Pekka Enberg
2020-08-25 18:39 ` [PATCH 5/8] riscv/mm/fault: Move fault error handling to mm_fault_error() Pekka Enberg
2020-08-25 18:39 ` [PATCH 6/8] riscv/mm/fault: Simplify mm_fault_error() Pekka Enberg
2020-08-25 18:39 ` [PATCH 7/8] riscv/mm/fault: Move FAULT_FLAG_WRITE handling in do_page_fault() Pekka Enberg
2020-08-25 18:39 ` [PATCH 8/8] riscv/mm/fault: Move access error check to function Pekka Enberg
2020-08-25 19:08 ` [PATCH 0/8] riscv/mm/fault: Page fault handler cleanups Pekka Enberg
2020-09-04 17:37 ` Palmer Dabbelt

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=20200825183907.275950-1-penberg@gmail.com \
    --to=penberg@gmail.com \
    --cc=linux-riscv@lists.infradead.org \
    --cc=palmer@dabbelt.com \
    --cc=penberg@kernel.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