Subject: [PATCH v2 00/52] powerpc/64s interrupt handler cleanups, gasification

From: Nicholas Piggin <[email-masked]>
Date: Thu, 20 Jun 2019 15:14:07 +1000

This contains the previous 28 series in front, with one small fix
mentioned in the last thread, plus one extra patch to remove
unused BRANCH_TO_COMMON macro, so first 29 up to SPR RAW scoreboard
are all quite minimal generated code change.

The next patches start to get a bit more into code change, starting
to mainly attack the "odd" handlers which deviate significantly
from the norm (sreset, machine check, still have pending work to
do on hmi). The aim is to simplify them and make them more regular.
That makes maintaining easier, and also reduces the need to have
a lot of special cases and splits in macros, which helps further
cleanup in future.

After patch 19 I should add it's so much more pleasant to hack on
this code, you don't have to rebuild practically the whole kernel
whenever you change anything.

Oh I also got a KUAP fix in there we should backport.

Thanks,
Nick

Nicholas Piggin (52):
  powerpc/64s/exception: fix line wrap and semicolon inconsistencies in
    macros
  powerpc/64s/exception: remove H concatenation for EXC_HV variants
  powerpc/64s/exception: consolidate EXCEPTION_PROLOG_2 with _NORI
    variant
  powerpc/64s/exception: move and tidy EXCEPTION_PROLOG_2 variants
  powerpc/64s/exception: fix sreset KVM test code
  powerpc/64s/exception: remove the "extra" macro parameter
  powerpc/64s/exception: consolidate maskable and non-maskable prologs
  powerpc/64s/exception: merge KVM handler and skip variants
  powerpc/64s/exception: KVM handler can set the HSRR trap bit
  powerpc/64s/exception: Make EXCEPTION_PROLOG_0 a gas macro for
    consistency with others
  powerpc/64s/exception: Move EXCEPTION_COMMON handler and return
    branches into callers
  powerpc/64s/exception: Move EXCEPTION_COMMON additions into callers
  powerpc/64s/exception: unwind exception-64s.h macros
  powerpc/64s/exception: improve 0x500 handler code
  powerpc/64s/exception: move EXCEPTION_PROLOG_2* to a more logical
    place
  powerpc/64s/exception: remove STD_EXCEPTION_COMMON variants
  powerpc/64s/exception: move KVM related code together
  powerpc/64s/exception: move exception-64s.h code to exception-64s.S
    where it is used
  powerpc/64s/exception: move head-64.h code to exception-64s.S where it
    is used
  powerpc/64s/exception: remove __BRANCH_TO_KVM
  powerpc/64s/exception: remove unused BRANCH_TO_COMMON
  powerpc/64s/exception: use a gas macro for system call handler code
  powerpc/64s/exception: fix indenting irregularities
  powerpc/64s/exception: generate regs clear instructions using .rept
  powerpc/64s/exception: remove bad stack branch
  powerpc/64s/exception: remove pointless EXCEPTION_PROLOG macro
    indirection
  powerpc/64s/exception: move paca save area offsets into
    exception-64s.S
  powerpc/64s/exception: clean up system call entry
  powerpc/64s/exception: avoid SPR RAW scoreboard stall in real mode
    entry
  powerpc/64s/exception: optimise system_reset for idle, clean up
    non-idle case
  powerpc/64s/exception: mtmsrd L=1 cleanup
  powerpc/64s/exception: windup use r9 consistently to restore SPRs
  powerpc/64s/exception: move machine check windup in_mce handling
  powerpc/64s/exception: simplify hmi windup code
  powerpc/64s/exception: shuffle windup code around
  powerpc/64s/exception: use common macro for windup
  powerpc/64s/exception: add dar and dsisr options to exception macro
  powerpc/64s/exception: machine check use standard macros to save
    dar/dsisr
  powerpc/64s/exception: denorm handler use standard scratch save macro
  powerpc/64s/exception: move SET_SCRATCH0 into EXCEPTION_PROLOG_0
  powerpc/tm: update comment about interrupt re-entrancy
  powerpc/64s/exception: machine check fwnmi does not trigger when in HV
    mode
  powerpc/64s/exception: machine check early only runs in HV mode
  powerpc/64s/exception: separate pseries and powernv mce delivery paths
  powerpc/64s/exception: machine check windup restore cfar for host
    delivery
  powerpc/64s/exception: fix machine check early should not set AMR
  powerpc/64s/exception: machine check restructure handler to be more
    regular
  powerpc/64s/exception: simplify machine check early path
  powerpc/64s/exceptions: machine check move unrecoverable handling out
    of line
  powerpc/64s/exception: untangle early machine check handler
  powerpc/64s/exception: machine check improve branch labels
  powerpc/64s/exception: add missing branch to self after RFI

 arch/powerpc/include/asm/exception-64s.h |  609 +-------
 arch/powerpc/include/asm/head-64.h       |  204 +--
 arch/powerpc/include/asm/paca.h          |    2 +
 arch/powerpc/kernel/asm-offsets.c        |    2 +
 arch/powerpc/kernel/exceptions-64s.S     | 1764 ++++++++++++++--------
 arch/powerpc/kernel/tm.S                 |    4 +-
 arch/powerpc/xmon/xmon.c                 |    2 +
 7 files changed, 1161 insertions(+), 1426 deletions(-)

-- 
2.20.1