OpenCloudOS-Kernel/arch/powerpc/platforms/powernv
Nicholas Piggin 59dc5bfca0 powerpc/64s: avoid reloading (H)SRR registers if they are still valid
When an interrupt is taken, the SRR registers are set to return to where
it left off. Unless they are modified in the meantime, or the return
address or MSR are modified, there is no need to reload these registers
when returning from interrupt.

Introduce per-CPU flags that track the validity of SRR and HSRR
registers. These are cleared when returning from interrupt, when
using the registers for something else (e.g., OPAL calls), when
adjusting the return address or MSR of a context, and when context
switching (which changes the return address and MSR).

This improves the performance of interrupt returns.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Fold in fixup patch from Nick]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210617155116.2167984-5-npiggin@gmail.com
2021-06-25 00:06:55 +10:00
..
Kconfig powerpc/vas: Move VAS API to book3s common platform 2021-06-20 21:58:55 +10:00
Makefile powerpc/vas: Move VAS API to book3s common platform 2021-06-20 21:58:55 +10:00
copy-paste.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
eeh-powernv.c powerpc/eeh: Clean up PE addressing 2020-10-06 23:22:25 +11:00
idle.c KVM: PPC: Book3S HV: remove ISA v3.0 and v3.1 support from P7/8 path 2021-06-10 22:12:15 +10:00
memtrace.c powerpc/powernv/memtrace: Fix dcache flushing 2021-05-04 22:27:56 +10:00
ocxl.c ocxl: Initiate a TLB invalidate command 2020-12-04 01:01:30 +11:00
opal-async.c powerpc: Use fallthrough pseudo-keyword 2020-07-29 21:09:37 +10:00
opal-call.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
opal-core.c powerpc/powernv: make symbol 'mpipl_kobj' static 2021-04-14 23:04:17 +10:00
opal-dump.c powerpc/powernv/dump: Handle multiple writes to ack attribute 2020-10-19 22:58:52 +11:00
opal-elog.c powerpc/powernv: Rate limit opal-elog read failure message 2020-12-15 22:53:27 +11:00
opal-fadump.c powerpc: Replace _ALIGN_DOWN() by ALIGN_DOWN() 2020-05-11 23:15:15 +10:00
opal-fadump.h powerpc/fadump: support holes in kernel boot memory area 2019-09-14 00:04:46 +10:00
opal-flash.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-hmi.c powerpc/64s/powernv: Ratelimit harmless HMI error printing 2020-12-04 01:01:23 +11:00
opal-imc.c powerpc/powernv: Re-enable imc trace-mode in kernel 2020-04-03 00:09:58 +11:00
opal-irqchip.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-kmsg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-lpc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-memory-errors.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-msglog.c powerpc/powernv: Include asm/powernv.h from the local powernv.h 2020-08-25 01:31:33 +10:00
opal-nvram.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-powercap.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-prd.c powerpc/powernv: Remove unneeded variable: "rc" 2021-03-29 13:22:19 +11:00
opal-psr.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-rtc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-secvar.c powerpc/powernv: Add OPAL API interface to access secure variable 2019-11-13 00:33:22 +11:00
opal-sensor-groups.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-sensor.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-sysparam.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-tracepoints.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
opal-wrappers.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-xscom.c powerpc/powernv: Fix checkpatch warnings in opal-xscom.c 2019-08-05 18:53:03 +10:00
opal.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
pci-cxl.c powerpc/powernv: remove get_cxl_module 2021-02-08 12:20:17 +01:00
pci-ioda-tce.c powerpc/powernv/pci: fix a RCU-list lock 2021-01-31 22:35:49 +11:00
pci-ioda.c powerpc/powernv: remove the nvlink support 2021-05-02 23:35:32 +10:00
pci-sriov.c powerpc/powernv/sriov: fix unsigned int win compared to less than zero 2020-11-19 16:56:54 +11:00
pci.c powerpc/powernv/pci: fix header guard 2021-05-23 20:51:35 +10:00
pci.h powerpc/powernv: remove the nvlink support 2021-05-02 23:35:32 +10:00
powernv.h powerpc/powernv: Include asm/powernv.h from the local powernv.h 2020-08-25 01:31:33 +10:00
rng.c powerpc/powernv: Staticify functions without prototypes 2020-08-25 01:31:33 +10:00
setup.c powerpc/64s: remove unneeded semicolon 2021-04-23 01:38:04 +10:00
smp.c powerpc/64s: Trim offlined CPUs from mm_cpumasks 2020-11-27 00:10:39 +11:00
subcore-asm.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
subcore.c powerpc: Move update_power8_hid0() into its only user 2021-06-17 00:09:11 +10:00
subcore.h powerpc: remove unneeded semicolons 2021-02-09 00:10:50 +11:00
ultravisor.c powerpc/powernv: Add ultravisor message log interface 2019-08-30 09:40:16 +10:00
vas-debug.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-fault.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-trace.h powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-window.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas.c powerpc/vas: Fix IRQ name allocation 2021-01-30 11:39:31 +11:00
vas.h powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00