[PATCH v7 00/42] powerpc: interrupt wrappers
Christophe Leroy
christophe.leroy at csgroup.eu
Tue Feb 2 16:57:19 AEDT 2021
Le 30/01/2021 à 14:08, Nicholas Piggin a écrit :
> This adds interrupt handler wrapper functions, similar to the
> generic / x86 code, and moves several common operations into them
> from either asm or open coded in the individual handlers.
>
> This series is based on powerpc fixes-test tree, there's another
> unrelated pending fix in patch 1 of the series which clashes a
> bit.
This series trivialy conflicts with
https://github.com/linuxppc/linux/commit/11f9c1d2fb497f69f83d4fab6fb7fc8a6884eded on powerpc next tree.
>
> This includes more changes and fixes suggested by Christophe,
> a few minor bug fixes and compile fix noticed by kbuild, and
> some NMI changes Athira asked about -- PMI interrupts don't
> block tracing when they are soft-NMI.
>
> Since v1:
> - Fixed a couple of compile issues
> - Fixed perf weirdness (sometimes NMI, sometimes not)
> - Also move irq_enter/exit into wrappers
>
> Since v2:
> - Rebased upstream
> - Took code in patch 3 from Christophe
> - Fixed some compile errors from 0day
>
> Since v3:
> - Rebased
> - Split Christophe's 32s DABR patch into its own patch
> - Fixed missing asm from 32s on patch 3 noticed by Christophe.
> - Moved changes around, split out one more patch (patch 9) to make
> changes more logical and atomic.
> - Add comments explaining _RAW handlers (SLB, HPTE) interrupts better
>
> Since v4:
> - Rebased (on top of scv fallback flush fix)
> - Rearranged a few changes into different patches from Christophe,
> e.g., the ___do_page_fault change from patch 2 to 10. I didn't
> do everything (e.g., splitting to update __hash_page to drop the
> msr argument before the bulk of patch 2 seemed like churn without
> much improvement), and also other things like removing the new
> ___do_page_fault variant if we can change hash fault context tracking
> I didn't get time to completely investigate and implement. I think
> this shouldn't be a showstopper though we can make more improvements
> as we go.
>
> Since v5:
> - Lots of good review suggestions from Christophe, see v5 email threads.
> - Major change being do_break is left in asm and selected early as an
> alternate interrupt handler now, which is a smaller step and matches
> other subarchs better.
> - Rearranged patches, split, moved things, bug fixes, etc.
> - Converted a few more missed exception handlers for debug and ras
>
> Since v6:
> - Move related interrupt handler de-argify patches together [Christophe]
> - Split do_bad_page_fault patch [Christophe]
> - Change do_page_fault cleanup patch [Christophe]
> - entry_32.S can't avoid saving r4/r5 until later in the series [Christophe]
> - Soft-NMI decrementer and perf don't block ftrace [Athira]
> - Rebased on some fixes
> - Fixed mismerge / duplicate line in patch 40
> - Fix kbuild hash missing declaration bug
>
> Christophe Leroy (1):
> powerpc/32s: move DABR match out of handle_page_fault
>
> Nicholas Piggin (41):
> powerpc/64s: interrupt exit improve bounding of interrupt recursion
> KVM: PPC: Book3S HV: Context tracking exit guest context before
> enabling irqs
> powerpc/64s: move DABR match out of handle_page_fault
> powerpc/64s: move the hash fault handling logic to C
> powerpc: remove arguments from fault handler functions
> powerpc/fsl_booke/32: CacheLockingException remove args
> powerpc: do_break get registers from regs
> powerpc: DebugException remove args
> powerpc/32: transfer can avoid saving r4/r5 over trace call
> powerpc: bad_page_fault get registers from regs
> powerpc/64s: add do_bad_page_fault_segv handler
> powerpc: rearrange do_page_fault error case to be inside
> exception_enter
> powerpc/64s: move bad_page_fault handling to C
> powerpc/64s: split do_hash_fault
> powerpc/mm: Remove stale do_page_fault comment referring to SLB faults
> powerpc/64s: slb comment update
> powerpc/traps: add NOKPROBE_SYMBOL for sreset and mce
> powerpc/perf: move perf irq/nmi handling details into traps.c
> powerpc/time: move timer_broadcast_interrupt prototype to asm/time.h
> powerpc: add and use unknown_async_exception
> powerpc/cell: tidy up pervasive declarations
> powerpc: introduce die_mce
> powerpc/mce: ensure machine check handler always tests RI
> powerpc: improve handling of unrecoverable system reset
> powerpc: interrupt handler wrapper functions
> powerpc: add interrupt wrapper entry / exit stub functions
> powerpc: convert interrupt handlers to use wrappers
> powerpc: add interrupt_cond_local_irq_enable helper
> powerpc/64: context tracking remove _TIF_NOHZ
> powerpc/64s/hash: improve context tracking of hash faults
> powerpc/64: context tracking move to interrupt wrappers
> powerpc/64: add context tracking to asynchronous interrupts
> powerpc: handle irq_enter/irq_exit in interrupt handler wrappers
> powerpc/64s: move context tracking exit to interrupt exit path
> powerpc/64s: reconcile interrupts in C
> powerpc/64: move account_stolen_time into its own function
> powerpc/64: entry cpu time accounting in C
> powerpc: move NMI entry/exit code into wrapper
> powerpc/64s: move NMI soft-mask handling to C
> powerpc/64s: runlatch interrupt handling in C
> powerpc/64s: power4 nap fixup in C
>
> arch/powerpc/Kconfig | 1 -
> arch/powerpc/include/asm/asm-prototypes.h | 29 --
> arch/powerpc/include/asm/bug.h | 9 +-
> arch/powerpc/include/asm/cputime.h | 14 +
> arch/powerpc/include/asm/debug.h | 4 -
> arch/powerpc/include/asm/hw_irq.h | 9 -
> arch/powerpc/include/asm/interrupt.h | 437 +++++++++++++++++++++
> arch/powerpc/include/asm/ppc_asm.h | 24 --
> arch/powerpc/include/asm/processor.h | 1 +
> arch/powerpc/include/asm/thread_info.h | 10 +-
> arch/powerpc/include/asm/time.h | 2 +
> arch/powerpc/kernel/dbell.c | 9 +-
> arch/powerpc/kernel/entry_32.S | 25 +-
> arch/powerpc/kernel/exceptions-64e.S | 8 +-
> arch/powerpc/kernel/exceptions-64s.S | 310 ++-------------
> arch/powerpc/kernel/head_40x.S | 11 +-
> arch/powerpc/kernel/head_8xx.S | 11 +-
> arch/powerpc/kernel/head_book3s_32.S | 14 +-
> arch/powerpc/kernel/head_booke.h | 6 +-
> arch/powerpc/kernel/head_fsl_booke.S | 6 +-
> arch/powerpc/kernel/idle_book3s.S | 4 +
> arch/powerpc/kernel/irq.c | 7 +-
> arch/powerpc/kernel/mce.c | 16 +-
> arch/powerpc/kernel/process.c | 8 +-
> arch/powerpc/kernel/ptrace/ptrace.c | 4 -
> arch/powerpc/kernel/signal.c | 4 -
> arch/powerpc/kernel/syscall_64.c | 90 +++--
> arch/powerpc/kernel/tau_6xx.c | 5 +-
> arch/powerpc/kernel/time.c | 7 +-
> arch/powerpc/kernel/traps.c | 265 ++++++-------
> arch/powerpc/kernel/watchdog.c | 15 +-
> arch/powerpc/kvm/book3s_hv.c | 7 +-
> arch/powerpc/kvm/book3s_hv_builtin.c | 1 +
> arch/powerpc/kvm/booke.c | 1 +
> arch/powerpc/mm/book3s64/hash_utils.c | 97 +++--
> arch/powerpc/mm/book3s64/slb.c | 40 +-
> arch/powerpc/mm/fault.c | 76 ++--
> arch/powerpc/perf/core-book3s.c | 35 +-
> arch/powerpc/perf/core-fsl-emb.c | 25 --
> arch/powerpc/platforms/8xx/machine_check.c | 2 +-
> arch/powerpc/platforms/cell/pervasive.c | 1 +
> arch/powerpc/platforms/cell/pervasive.h | 3 -
> arch/powerpc/platforms/cell/ras.c | 6 +-
> arch/powerpc/platforms/cell/ras.h | 9 +-
> arch/powerpc/platforms/powernv/idle.c | 1 +
> arch/powerpc/platforms/powernv/opal.c | 2 +-
> arch/powerpc/platforms/pseries/ras.c | 2 +-
> 47 files changed, 914 insertions(+), 759 deletions(-)
> create mode 100644 arch/powerpc/include/asm/interrupt.h
>
More information about the Linuxppc-dev
mailing list