linux-yocto/arch/powerpc/include/asm
Donet Tom 2e9a95d60f powerpc/64s/slb: Fix SLB multihit issue during SLB preload
[ Upstream commit 00312419f0863964625d6dcda8183f96849412c6 ]

On systems using the hash MMU, there is a software SLB preload cache that
mirrors the entries loaded into the hardware SLB buffer. This preload
cache is subject to periodic eviction — typically after every 256 context
switches — to remove old entry.

To optimize performance, the kernel skips switch_mmu_context() in
switch_mm_irqs_off() when the prev and next mm_struct are the same.
However, on hash MMU systems, this can lead to inconsistencies between
the hardware SLB and the software preload cache.

If an SLB entry for a process is evicted from the software cache on one
CPU, and the same process later runs on another CPU without executing
switch_mmu_context(), the hardware SLB may retain stale entries. If the
kernel then attempts to reload that entry, it can trigger an SLB
multi-hit error.

The following timeline shows how stale SLB entries are created and can
cause a multi-hit error when a process moves between CPUs without a
MMU context switch.

CPU 0                                   CPU 1
-----                                    -----
Process P
exec                                    swapper/1
 load_elf_binary
  begin_new_exc
    activate_mm
     switch_mm_irqs_off
      switch_mmu_context
       switch_slb
       /*
        * This invalidates all
        * the entries in the HW
        * and setup the new HW
        * SLB entries as per the
        * preload cache.
        */
context_switch
sched_migrate_task migrates process P to cpu-1

Process swapper/0                       context switch (to process P)
(uses mm_struct of Process P)           switch_mm_irqs_off()
                                         switch_slb
                                           load_slb++
                                            /*
                                            * load_slb becomes 0 here
                                            * and we evict an entry from
                                            * the preload cache with
                                            * preload_age(). We still
                                            * keep HW SLB and preload
                                            * cache in sync, that is
                                            * because all HW SLB entries
                                            * anyways gets evicted in
                                            * switch_slb during SLBIA.
                                            * We then only add those
                                            * entries back in HW SLB,
                                            * which are currently
                                            * present in preload_cache
                                            * (after eviction).
                                            */
                                        load_elf_binary continues...
                                         setup_new_exec()
                                          slb_setup_new_exec()

                                        sched_switch event
                                        sched_migrate_task migrates
                                        process P to cpu-0

context_switch from swapper/0 to Process P
 switch_mm_irqs_off()
  /*
   * Since both prev and next mm struct are same we don't call
   * switch_mmu_context(). This will cause the HW SLB and SW preload
   * cache to go out of sync in preload_new_slb_context. Because there
   * was an SLB entry which was evicted from both HW and preload cache
   * on cpu-1. Now later in preload_new_slb_context(), when we will try
   * to add the same preload entry again, we will add this to the SW
   * preload cache and then will add it to the HW SLB. Since on cpu-0
   * this entry was never invalidated, hence adding this entry to the HW
   * SLB will cause a SLB multi-hit error.
   */
load_elf_binary continues...
 START_THREAD
  start_thread
   preload_new_slb_context
   /*
    * This tries to add a new EA to preload cache which was earlier
    * evicted from both cpu-1 HW SLB and preload cache. This caused the
    * HW SLB of cpu-0 to go out of sync with the SW preload cache. The
    * reason for this was, that when we context switched back on CPU-0,
    * we should have ideally called switch_mmu_context() which will
    * bring the HW SLB entries on CPU-0 in sync with SW preload cache
    * entries by setting up the mmu context properly. But we didn't do
    * that since the prev mm_struct running on cpu-0 was same as the
    * next mm_struct (which is true for swapper / kernel threads). So
    * now when we try to add this new entry into the HW SLB of cpu-0,
    * we hit a SLB multi-hit error.
    */

WARNING: CPU: 0 PID: 1810970 at arch/powerpc/mm/book3s64/slb.c:62
assert_slb_presence+0x2c/0x50(48 results) 02:47:29 [20157/42149]
Modules linked in:
CPU: 0 UID: 0 PID: 1810970 Comm: dd Not tainted 6.16.0-rc3-dirty #12
VOLUNTARY
Hardware name: IBM pSeries (emulated by qemu) POWER8 (architected)
0x4d0200 0xf000004 of:SLOF,HEAD hv:linux,kvm pSeries
NIP:  c00000000015426c LR: c0000000001543b4 CTR: 0000000000000000
REGS: c0000000497c77e0 TRAP: 0700   Not tainted  (6.16.0-rc3-dirty)
MSR:  8000000002823033 <SF,VEC,VSX,FP,ME,IR,DR,RI,LE>  CR: 28888482  XER: 00000000
CFAR: c0000000001543b0 IRQMASK: 3
<...>
NIP [c00000000015426c] assert_slb_presence+0x2c/0x50
LR [c0000000001543b4] slb_insert_entry+0x124/0x390
Call Trace:
  0x7fffceb5ffff (unreliable)
  preload_new_slb_context+0x100/0x1a0
  start_thread+0x26c/0x420
  load_elf_binary+0x1b04/0x1c40
  bprm_execve+0x358/0x680
  do_execveat_common+0x1f8/0x240
  sys_execve+0x58/0x70
  system_call_exception+0x114/0x300
  system_call_common+0x160/0x2c4

>>From the above analysis, during early exec the hardware SLB is cleared,
and entries from the software preload cache are reloaded into hardware
by switch_slb. However, preload_new_slb_context and slb_setup_new_exec
also attempt to load some of the same entries, which can trigger a
multi-hit. In most cases, these additional preloads simply hit existing
entries and add nothing new. Removing these functions avoids redundant
preloads and eliminates the multi-hit issue. This patch removes these
two functions.

We tested process switching performance using the context_switch
benchmark on POWER9/hash, and observed no regression.

Without this patch: 129041 ops/sec
With this patch:    129341 ops/sec

We also measured SLB faults during boot, and the counts are essentially
the same with and without this patch.

SLB faults without this patch: 19727
SLB faults with this patch:    19786

Fixes: 5434ae7462 ("powerpc/64s/hash: Add a SLB preload cache")
cc: stable@vger.kernel.org
Suggested-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Donet Tom <donettom@linux.ibm.com>
Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/0ac694ae683494fe8cadbd911a1a5018d5d3c541.1761834163.git.ritesh.list@gmail.com
[ Adjust context ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-01-19 13:10:09 +01:00
..
book3s powerpc/64s/slb: Fix SLB multihit issue during SLB preload 2026-01-19 13:10:09 +01:00
nohash powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro 2023-11-20 11:08:26 +01:00
vdso powerpc: Redefine HMT_xxx macros as empty on PPC32 2021-08-27 00:56:52 +10:00
8xx_immap.h
accounting.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
agp.h
archrandom.h powerpc/powernv/kvm: Use darn for H_RANDOM on Power9 2022-08-17 14:24:25 +02:00
asm-compat.h powerpc: Use lwarx/ldarx directly instead of PPC_LWARX/LDARX macros 2021-08-25 13:35:49 +10:00
asm-const.h powerpc: remove GCC version check for UPD_CONSTR 2021-09-13 10:18:28 -07:00
asm-offsets.h
asm-prototypes.h powerpc/64: use interrupt restart table to speed up return from interrupt 2021-06-25 00:06:56 +10:00
async_tx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 33 2019-05-24 17:27:11 +02:00
atomic.h powerpc: Use lwarx/ldarx directly instead of PPC_LWARX/LDARX macros 2021-08-25 13:35:49 +10:00
backlight.h
barrier.h powerpc/barrier: Avoid collision with clang's __lwsync macro 2021-06-10 21:44:57 +10:00
bitops.h powerpc: Use lwarx/ldarx directly instead of PPC_LWARX/LDARX macros 2021-08-25 13:35:49 +10:00
bootx.h
bpf_perf_event.h powerpc/bpf: Fix use of user_pt_regs in uapi 2022-07-07 17:53:24 +02:00
btext.h powerpc/32s: fix booting with CONFIG_PPC_EARLY_DEBUG_BOOTX 2019-06-07 19:00:14 +10:00
bug.h powerpc/bug: Cast to unsigned long before passing to inline asm 2021-09-01 21:25:43 +10:00
cache.h treewide: Convert macro and uses of __section(foo) to __section("foo") 2020-10-25 14:51:49 -07:00
cacheflush.h powerpc/mem: Inline flush_dcache_page() 2021-04-14 23:04:19 +10:00
cell-pmu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153 2019-05-30 11:26:32 -07:00
cell-regs.h
checksum.h powerpc: Force inlining of csum_add() 2021-06-16 00:16:47 +10:00
clocksource.h powerpc/vdso: Prepare for switching VDSO to generic C implementation. 2020-12-04 01:01:10 +11:00
cmpxchg.h locking/atomic: powerpc: move to ARCH_ATOMIC 2021-05-26 13:20:52 +02:00
code-patching-asm.h
code-patching.h powerpc/lib: Add helper to check if offset is within conditional branch range 2021-10-07 18:52:33 +11:00
compat.h arch: remove compat_alloc_user_space 2021-09-08 15:32:35 -07:00
context_tracking.h
copro.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cpm.h soc: fsl: move cpm.h from powerpc/include/asm to include/soc/fsl 2019-12-09 13:54:34 -06:00
cpm1.h powerpc/8xx: Fix early debug when SMC1 is relocated 2020-12-09 17:00:54 +11:00
cpm2.h powerpc: Spelling/typo fixes 2021-04-08 21:17:42 +10:00
cpu_has_feature.h powerpc: Force inlining of cpu_has_feature() to avoid build failure 2021-03-14 20:32:24 +11:00
cpu_setup_power.h powerpc/64s: Convert some cpu_setup() and cpu_restore() functions to C 2020-11-19 14:49:56 +11:00
cpufeature.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cpuidle.h powerpc/64s: Reimplement book3s idle code in C 2019-04-30 22:37:48 +10:00
cputable.h arch: powerpc: Stop building and using oprofile 2021-01-29 10:05:51 +05:30
cputhreads.h KVM: PPC: Book3S HV: Fix TLB management on SMT8 POWER9 and POWER10 processors 2021-06-21 09:22:34 +10:00
cputime.h powerpc/64: move account_stolen_time into its own function 2021-02-09 00:10:49 +11:00
crashdump-ppc64.h powerpc/kexec_file: Setup backup region for kdump kernel 2020-07-29 23:47:54 +10:00
current.h powerpc/64: allow compiler to cache 'current' 2019-08-20 21:22:15 +10:00
dbdma.h
dbell.h powerpc: Inline doorbell sending functions 2020-07-29 21:02:09 +10:00
dcr-generic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dcr-mmio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dcr-native.h powerpc/4xx: Fix build errors from mfdcr() 2021-03-01 12:33:31 +11:00
dcr-regs.h
dcr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
debug.h powerpc: convert interrupt handlers to use wrappers 2021-02-09 00:02:12 +11:00
delay.h powerpc/time: Avoid using get_tbl() and get_tbu() internally 2020-10-08 21:17:15 +11:00
device.h IOMMU Updates for Linux v5.9 2020-08-11 14:13:24 -07:00
disassemble.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 266 2019-06-05 17:30:28 +02:00
dma-direct.h dma-direct: rename and cleanup __phys_to_dma 2020-09-11 09:14:43 +02:00
dma.h powerpc/32: drop unused ISA_DMA_THRESHOLD 2020-04-01 14:30:50 +11:00
drmem.h pseries/drmem: update LMBs after LPM 2021-08-10 23:14:55 +10:00
dt_cpu_ftrs.h
dtl.h powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore 2024-12-14 19:51:01 +01:00
edac.h
eeh_event.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
eeh.h powerpc/eeh: Delete eeh_pe->config_addr 2020-10-07 22:34:47 +11:00
ehv_pic.h
elf.h powerpc: Remove ucache_bsize 2020-12-05 21:49:52 +11:00
elfnote.h powerpc: Add PowerPC Capabilities ELF note 2019-08-30 09:40:15 +10:00
emergency-restart.h
emulated_ops.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
epapr_hcalls.h powerpc/epapr_hcalls.h: delete duplicated words 2020-07-27 00:01:31 +10:00
exception-64e.h powerpc/64e: Drop dead BOOK3E_MMU_TLB_STATS code 2020-07-29 21:08:12 +10:00
exception-64s.h KVM: PPC: Book3S 64: Move hcall early register setup to KVM 2021-06-10 22:12:12 +10:00
exec.h
extable.h powerpc/bug: Provide better flexibility to WARN_ON/__WARN_FLAGS() with asm goto 2021-08-15 13:49:24 +10:00
fadump-internal.h cma: factor out minimum alignment requirement 2024-07-05 09:14:13 +02:00
fadump.h powerpc/fadump: add support to preserve crash data on FADUMP disabled kernel 2019-09-14 00:04:45 +10:00
fb.h
feature-fixups.h powerpc/64s: fix scv entry fallback flush vs interrupt 2021-01-20 15:58:19 +11:00
firmware.h powerpc/pseries: Add support for FORM2 associativity 2021-08-13 22:04:27 +10:00
fixmap.h powerpc/fixmap: Fix VM debug warning on unmap 2022-02-16 12:56:12 +01:00
floppy.h floppy: use symbolic register names in the powerpc port 2020-05-12 19:34:53 +03:00
fs_pd.h
fsl_85xx_cache_sram.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
fsl_gtm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
fsl_hcalls.h
fsl_lbc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
fsl_pamu_stash.h iommu/fsl_pamu: replace DOMAIN_ATTR_FSL_PAMU_STASH with a direct call 2021-04-07 10:56:52 +02:00
fsl_pm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ftrace.h powerpc/ftrace: Remove ftrace init tramp once kernel init is complete 2022-07-02 16:41:14 +02:00
futex.h powerpc/futex: Switch to user_access block 2021-03-26 23:19:43 +11:00
grackle.h
hardirq.h powerpc/64s: Move HMI IRQ stat from percpu variable to paca. 2020-07-29 23:47:53 +10:00
head-64.h powerpc/64: move interrupt return asm to interrupt_64.S 2021-06-25 00:06:55 +10:00
heathrow.h
highmem.h powerpc/mm/highmem: use __set_pte_at() for kmap_local() 2021-01-24 10:34:53 -08:00
hmi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 114 2019-05-24 17:39:01 +02:00
hugetlb.h powerpc/mm: Enable compound page check for both THP and HugeTLB 2021-02-11 23:35:06 +11:00
hvcall.h powerpc/pseries: Enforce hcall result buffer validity and size 2024-07-05 09:14:27 +02:00
hvconsole.h powerpc/pseries: Move hvc_vio_init_early() prototype to shared location 2021-03-24 14:09:30 +11:00
hvcserver.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
hvsi.h
hw_breakpoint.h powerpc/watchpoint: Fix exception handling for CONFIG_HAVE_HW_BREAKPOINT=N 2020-09-15 22:13:20 +10:00
hw_irq.h powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an overflown PMC 2022-01-27 11:04:07 +01:00
hydra.h powerpc/chrp: Make hydra_init() static 2021-03-24 14:09:29 +11:00
i8259.h
ibmebus.h
icswx.h powerpc/nx: Don't pack struct coprocessor_request_block 2020-08-25 01:31:33 +10:00
ide.h
idle.h powerpc/sysfs: Show idle_purr and idle_spurr for every CPU 2020-04-30 12:35:26 +10:00
imc-pmu.h powerpc/imc-pmu: Fix use of mutex in IRQs disabled section 2023-01-18 11:48:52 +01:00
immap_cpm2.h
inst.h powerpc/inst: Refactor PPC32 and PPC64 versions 2021-06-17 00:09:06 +10:00
interrupt.h powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. 2024-08-19 05:45:51 +02:00
io_event_irq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
io-defs.h
io-workarounds.h powerpc/mm: rework io-workaround invocation. 2019-08-27 13:03:34 +10:00
io.h powerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n 2024-07-18 13:07:29 +02:00
iommu.h powerpc/kernel/iommu: Add new iommu_table_in_use() helper 2021-08-27 00:56:54 +10:00
ipic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
irq_work.h arch: consolidate arch_irq_work_raise prototypes 2024-02-23 08:54:39 +01:00
irq.h powerpc/interrupt: Fix OOPS by not calling do_IRQ() from timer_interrupt() 2021-08-12 22:21:57 +10:00
irqflags.h
isa-bridge.h
jump_label.h powerpc: Fix initrd corruption with relative jump labels 2021-06-15 23:35:57 +10:00
kasan.h powerpc/kasan: Fix shadow start address with modules 2021-04-25 21:29:04 +10:00
Kbuild powerpc/syscalls: switch to generic syscalltbl.sh 2021-04-14 23:04:16 +10:00
kdebug.h
kdump.h
kexec_ranges.h powerpc/kexec_file: Avoid stomping memory used by special regions 2020-07-29 23:47:53 +10:00
kexec.h powerpc/kexec_file: Restore FDT size estimation for kdump kernel 2021-03-11 09:53:38 -07:00
keylargo.h
kfence.h powerpc: Enable KFENCE for PPC32 2021-03-24 14:09:30 +11:00
kgdb.h
kprobes.h powerpc: Add prefixed instructions to instruction data type 2020-05-19 00:10:39 +10:00
kup.h powerpc/32s: Do kuep_lock() and kuep_unlock() in assembly 2023-10-25 11:58:59 +02:00
kvm_asm.h KVM: PPC: Book3S HV P9: implement hash host / hash guest support 2021-06-10 22:12:15 +10:00
kvm_book3s_32.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 266 2019-06-05 17:30:28 +02:00
kvm_book3s_64.h KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple vCPUs 2022-02-01 17:27:03 +01:00
kvm_book3s_asm.h KVM: PPC: Book3S HV: Remove support for running HPT guest on RPT host without mixed mode support 2021-02-10 14:31:08 +11:00
kvm_book3s_uvmem.h KVM: PPC: Book3S HV: Migrate hot plugged memory 2020-07-28 12:34:52 +10:00
kvm_book3s.h KVM: PPC: Book3S HV: Nested support in H_RPT_INVALIDATE 2021-06-22 23:35:37 +10:00
kvm_booke_hv_asm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
kvm_booke.h powerpc: Inline doorbell sending functions 2020-07-29 21:02:09 +10:00
kvm_fpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 266 2019-06-05 17:30:28 +02:00
kvm_guest.h powerpc: Fix is_kvm_guest() / kvm_para_available() 2021-06-25 14:47:19 +10:00
kvm_host.h KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple vCPUs 2022-02-01 17:27:03 +01:00
kvm_para.h powerpc: Reintroduce is_kvm_guest() as a fast-path check 2020-12-04 01:01:22 +11:00
kvm_ppc.h KVM: PPC: Book3S HV: XIVE: Change interface of passthrough interrupt routines 2021-08-10 23:14:59 +10:00
libata-portmap.h
linkage.h
livepatch.h powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
local.h powerpc: Add const qual to local_read() parameter 2019-11-24 15:06:33 -08:00
lppaca.h powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT 2023-09-19 12:22:42 +02:00
lv1call.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167 2019-05-30 11:26:39 -07:00
machdep.h powerpc/pci: Add ppc_md.discover_phbs() 2021-02-03 09:46:36 +11:00
macio.h
mc146818rtc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mce.h powerpc/mce: Remove per cpu variables from MCE handlers 2021-01-31 22:35:49 +11:00
mediabay.h
mem_encrypt.h powerpc/pseries/svm: Force SWIOTLB for secure guests 2019-08-30 09:55:41 +10:00
membarrier.h powerpc/non-smp: Unconditionaly call smp_mb() on switch_mm 2021-08-10 23:14:55 +10:00
mman.h powerpc/64s: Disallow PROT_SAO in LPARs by default 2020-08-24 14:12:54 +10:00
mmiowb.h
mmu_context.h Merge branch 'topic/ppc-kvm' into next 2021-06-23 00:19:08 +10:00
mmu.h powerpc/mm: Fix build failures due to arch_reserved_kernel_pages() 2024-02-23 08:54:36 +01:00
mmzone.h powerpc/64s: Fix CONFIG_NUMA=n build due to create_section_mapping() 2024-02-23 08:54:36 +01:00
module.h powerpc updates for 5.8 2020-06-05 12:39:30 -07:00
module.lds.h kbuild: preprocess module linker script 2020-09-25 00:36:41 +09:00
mpc5xxx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 40 2019-05-24 17:27:12 +02:00
mpc6xx.h
mpc52xx_psc.h
mpc52xx.h
mpc85xx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 40 2019-05-24 17:27:12 +02:00
mpc5121.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 449 2019-06-05 17:37:18 +02:00
mpc8260.h
mpic_msgr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
mpic_timer.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mpic.h
msi_bitmap.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
nmi.h powerpc: convert interrupt handlers to use wrappers 2021-02-09 00:02:12 +11:00
nvram.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ohare.h
opal-api.h powerpc/xive: Remove P9 DD1 flag XIVE_IRQ_FLAG_EOI_FW 2020-12-11 09:53:10 +11:00
opal.h powerpc/powernv: remove the nvlink support 2021-05-02 23:35:32 +10:00
paca.h powerpc: Don't include lppaca.h in paca.h 2023-09-19 12:22:42 +02:00
page_32.h powerpc/32s: Cleanup around PTE_FLAGS_OFFSET in hash_low.S 2020-12-09 23:48:14 +11:00
page_64.h mm/vma: define a default value for VM_DATA_DEFAULT_FLAGS 2020-04-10 15:36:21 -07:00
page.h powerpc/64: Only WARN if __pa()/__va() called with bad addresses 2022-06-09 10:23:12 +02:00
paravirt.h powerpc: Don't include lppaca.h in paca.h 2023-09-19 12:22:42 +02:00
parport.h
pasemi_dma.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pci-bridge.h powerpc/pseries/pci: Add MSI domains 2021-08-10 23:14:57 +10:00
pci.h powerpc/powernv: remove the nvlink support 2021-05-02 23:35:32 +10:00
percpu.h powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. 2024-08-19 05:45:51 +02:00
perf_event_fsl_emb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
perf_event_server.h powerpc/perf: Expose processor pipeline stage cycles using PERF_SAMPLE_WEIGHT_STRUCT 2021-04-20 14:22:23 +10:00
perf_event.h powerpc/perf: Expose Performance Monitor Counter SPR's as part of extended regs 2021-02-09 01:09:44 +11:00
pgalloc.h mm/thp: define default pmd_pgtable() 2021-07-01 11:06:03 -07:00
pgtable-be-types.h powerpc/64: only book3s/64 supports CONFIG_PPC_64K_PAGES 2019-05-03 01:20:23 +10:00
pgtable-types.h powerpc/64: only book3s/64 supports CONFIG_PPC_64K_PAGES 2019-05-03 01:20:23 +10:00
pgtable.h powerpc updates for 5.14 2021-07-02 12:54:34 -07:00
pkeys.h powerpc/pkeys: Remove unused code 2021-02-09 01:09:44 +11:00
plpar_wrappers.h powerpc: Don't include lppaca.h in paca.h 2023-09-19 12:22:42 +02:00
pmac_feature.h
pmac_low_i2c.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pmac_pfunc.h
pmc.h KVM: PPC: Book3S HV Nested: Reflect guest PMU in-use to L0 when guest SPRs are live 2021-08-25 16:37:18 +10:00
pmi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153 2019-05-30 11:26:32 -07:00
pnv-ocxl.h ocxl: Initiate a TLB invalidate command 2020-12-04 01:01:30 +11:00
pnv-pci.h powerpc/powernv/pci: Rework pnv_opal_pci_msi_eoi() 2021-08-10 23:15:01 +10:00
powernv.h powerpc updates for 5.3 2019-07-13 16:08:36 -07:00
ppc_asm.h powerpc: flexible GPR range save/restore macros 2022-07-12 16:35:02 +02:00
ppc-opcode.h powerpc/mm: Switch obsolete dssall to .long 2022-06-14 18:36:27 +02:00
ppc-pci.h powerpc/pci: Remove unimplemented prototypes 2021-02-11 23:35:36 +11:00
ppc4xx.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 40 2019-05-24 17:27:12 +02:00
probes.h powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
processor.h sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
prom.h powerpc/pseries: Add support for FORM2 associativity 2021-08-13 22:04:27 +10:00
ps3.h powerpc/ps3: Add dma_mask to ps3_dma_region 2021-06-10 21:44:58 +10:00
ps3av.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167 2019-05-30 11:26:39 -07:00
ps3gpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
ps3stor.h powerpc updates for 5.3 2019-07-13 16:08:36 -07:00
pte-walk.h powerpc: Fix reverse map real-mode address lookup with huge vmalloc 2021-05-28 22:54:27 +10:00
ptrace.h Merge branch 'fixes' into next 2021-09-03 22:54:12 +10:00
qspinlock_paravirt.h powerpc/pseries: Implement paravirt qspinlocks for SPLPAR 2020-07-27 00:01:29 +10:00
qspinlock.h locking/atomic: powerpc: move to ARCH_ATOMIC 2021-05-26 13:20:52 +02:00
reg_8xx.h powerpc/hw_breakpoints: Rewrite 8xx breakpoints to allow any address range size. 2020-01-23 21:31:14 +11:00
reg_a2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
reg_booke.h powerpc/32: Handle bookE debugging in C in syscall entry/exit 2021-02-11 23:35:12 +11:00
reg_fsl_emb.h powerpc/fsl: Fix mfpmr build errors with newer binutils 2024-04-10 16:18:37 +02:00
reg.h KVM: PPC: Book3S HV Nested: Fix TM softpatch HFAC interrupt emulation 2021-08-25 16:37:17 +10:00
rheap.h
rio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtas-types.h powerpc/rtas: remove unused rtas_suspend_me_data 2020-12-08 21:41:02 +11:00
rtas.h Revert "powerpc/rtas: Implement reentrant rtas call" 2022-10-15 07:59:02 +02:00
runlatch.h
seccomp.h powerpc: Enable seccomp architecture tracking 2020-11-20 11:16:35 -08:00
sections.h powerpc/toc: Future proof kernel toc 2024-01-25 14:52:32 -08:00
secure_boot.h powerpc: Detect the trusted boot state of the system 2019-11-12 12:25:49 +11:00
security_features.h powerpc/security: Add a helper to query stf_barrier type 2021-10-07 19:52:58 +11:00
secvar.h powerpc/powernv: Add OPAL API interface to access secure variable 2019-11-13 00:33:22 +11:00
serial.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
set_memory.h powerpc: Add set_memory_{p/np}() and remove set_memory_attr() 2022-04-08 14:24:04 +02:00
setjmp.h powerpc: Make setjmp/longjmp signature standard 2020-04-01 14:30:51 +11:00
setup.h powerpc: Remove klimit 2021-06-25 00:07:10 +10:00
sfp-machine.h
shmparam.h
signal.h powerpc/64/sycall: Implement syscall entry/exit logic in C 2020-04-01 13:42:13 +11:00
simple_spinlock_types.h powerpc: Move spinlock implementation to simple_spinlock 2020-07-26 23:34:26 +10:00
simple_spinlock.h powerpc: Fix eh field when calling lwarx on PPC32 2022-08-17 14:24:29 +02:00
slice.h powerpc/8xx: MM_SLICE is not needed anymore 2020-05-26 22:22:21 +10:00
smp.h powerpc/smp: Use existing L2 cache_map cpumask to find L3 cache siblings 2021-08-04 10:53:39 +10:00
smu.h powerpc/smu.h: delete duplicated word 2020-07-27 00:01:32 +10:00
sparsemem.h mm: fix phys_to_target_node() and memory_add_physaddr_to_nid() exports 2020-11-22 10:48:22 -08:00
spinlock_types.h powerpc/64s: Implement queued spinlocks and rwlocks 2020-07-27 00:01:23 +10:00
spinlock.h powerpc/spinlock: Define smp_mb__after_spinlock only once 2021-03-26 23:19:43 +11:00
spu_csa.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153 2019-05-30 11:26:32 -07:00
spu_info.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153 2019-05-30 11:26:32 -07:00
spu_priv1.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167 2019-05-30 11:26:39 -07:00
spu.h arch: powerpc: Stop building and using oprofile 2021-01-29 10:05:51 +05:30
sstep.h powerpc/sstep: make emulate_vsx_load and emulate_vsx_store static 2024-12-14 19:51:03 +01:00
stackprotector.h
stacktrace.h
string.h x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}() 2020-10-06 11:18:04 +02:00
svm.h powerpc/pseries/svm: Allocate SWIOTLB buffer anywhere in memory 2020-09-14 23:07:14 +10:00
swab.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
swiotlb.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
switch_to.h powerpc: Fix missing declaration of [en/dis]able_kernel_vsx() 2021-03-10 11:15:00 +11:00
synch.h powerpc/64s: Add cp_abort after tlbiel to invalidate copy-buffer address 2020-10-06 23:22:23 +11:00
syscall.h powerpc/audit: Fix syscall_get_arch() 2022-02-01 17:27:01 +01:00
syscalls.h powerpc: Fix fallocate and fadvise64_64 compat parameter combination 2022-10-26 12:35:22 +02:00
task_size_32.h
task_size_64.h powerpc/64: only book3s/64 supports CONFIG_PPC_64K_PAGES 2019-05-03 01:20:23 +10:00
tce.h powerpc/pseries/iommu: Replace hard-coded page shift 2021-08-27 00:56:54 +10:00
termios.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
thread_info.h powerpc/kasan: Force thread size increase with KASAN 2022-06-14 18:36:16 +02:00
time.h KVM: PPC: Book3S HV P9: Reduce irq_work vs guest decrementer races 2021-06-10 22:12:13 +10:00
timex.h powerpc: define get_cycles macro for arch-override 2022-05-30 09:29:13 +02:00
tlb.h mm/mremap: allow arch runtime override 2021-07-08 11:48:23 -07:00
tlbflush.h
tm.h
topology.h powerpc/numa: Update cpu_cpu_map on CPU online/offline 2021-08-27 00:56:54 +10:00
trace_clock.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
trace.h powerpc: Add doorbell tracepoints 2019-05-01 16:45:05 +10:00
tsi108_irq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
tsi108_pci.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
tsi108.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
types.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
uaccess.h powerpc/uaccess: Fix build errors seen with GCC 13/14 2024-07-05 09:14:15 +02:00
udbg.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
uic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ultravisor-api.h KVM: PPC: Book3S HV: Support reset of secure guest 2019-11-28 17:02:31 +11:00
ultravisor.h KVM: PPC: Book3S HV: Support reset of secure guest 2019-11-28 17:02:31 +11:00
uninorth.h
unistd.h powerpc/syscalls: Remove __NR__exit 2021-08-23 19:28:20 +10:00
uprobes.h powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
user.h
vas.h powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr 2022-06-09 10:22:43 +02:00
vdso_datapage.h powerpc/vdso: Add support for time namespaces 2021-04-14 23:04:44 +10:00
vdso.h powerpc/vdso: Flag VDSO64 entry points as functions 2024-12-14 19:51:00 +01:00
vermagic.h arch: split MODULE_ARCH_VERMAGIC definitions out to <asm/vermagic.h> 2020-04-23 10:50:26 +09:00
vga.h
vio.h powerpc/pseries: Add shutdown() to vio_driver and vio_bus 2021-04-20 14:22:24 +10:00
vmalloc.h powerpc: Force inlining of arch_vmap_p{u/m}d_supported() 2024-03-26 18:21:28 -04:00
word-at-a-time.h word-at-a-time: use the same return type for has_zero regardless of endianness 2023-08-11 15:13:49 +02:00
xics.h powerpc/xics: Rename the map handler in a check handler 2021-08-10 23:14:59 +10:00
xive-regs.h KVM: PPC: Book3S HV: XIVE: Add support for automatic save-restore 2021-08-10 23:15:02 +10:00
xive.h KVM: PPC: Book3S HV: XIVE: Add support for automatic save-restore 2021-08-10 23:15:02 +10:00
xmon.h powerpc: remove unneeded semicolons 2021-02-09 00:10:50 +11:00
xor_altivec.h
xor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00