[PATCH 0/8] riscv/mm/fault: Page fault handler cleanups
Palmer Dabbelt
palmer at dabbelt.com
Fri Sep 4 13:37:38 EDT 2020
On Tue, 25 Aug 2020 11:38:59 PDT (-0700), penberg at gmail.com wrote:
> From: Pekka Enberg <penberg at 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.
This all seems fine to me, they're on for-next.
> The patch series has been tested on QEMU.
>
> You can pull the series from:
>
> git at 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(-)
More information about the linux-riscv
mailing list