WSL2-Linux-Kernel/arch/powerpc/kernel
Nicholas Piggin 41d0c2ecde powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9
There are two cases outside the normal address space management
where a CPU's local TLB is to be flushed:

  1. Host boot; in case something has left stale entries in the
     TLB (e.g., kexec).

  2. Machine check; to clean corrupted TLB entries.

CPU state restore from deep idle states also flushes the TLB.
However this seems to be a side effect of reusing the boot code to set
CPU state, rather than a requirement itself.

The current flushing has a number of problems with ISA v3.0B:

- The current radix mode of the MMU is not taken into account. tlbiel
  is undefined if the R field does not match the current radix mode.

- ISA v3.0B hash must flush the partition and process table caches.

- ISA v3.0B radix must flush partition and process scoped translations,
  partition and process table caches, and also the page walk cache.

Add POWER9 cases to handle these, with radix vs hash determined by the
host MMU mode.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-07-11 12:53:53 +10:00
..
trace powerpc/kprobes: Skip livepatch_handler() for jprobes 2017-06-16 19:49:43 +10:00
vdso32
vdso64
.gitignore
Makefile powerpc/time: Fix tracing in time.c 2017-06-21 20:37:27 +10:00
align.c powerpc: Don't try to fix up misaligned load-with-reservation instructions 2017-04-04 23:16:57 +10:00
asm-offsets.c powerpc updates for 4.13 2017-07-07 13:55:45 -07:00
audit.c
btext.c
cacheinfo.c
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
cpu_setup_ppc970.S
cputable.c powerpc: Add PPC_FEATURE userspace bits for SCV and DARN instructions 2017-05-25 23:07:45 +10:00
crash.c powerpc/fadump: remove dependency with CONFIG_KEXEC 2017-05-08 17:15:11 -07:00
crash_dump.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
dbell.c powerpc: Introduce msgsnd/doorbell barrier primitives 2017-04-13 23:34:33 +10:00
dma-iommu.c powerpc: implement ->mapping_error 2017-06-28 06:54:33 -07:00
dma-swiotlb.c treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00
dma.c powerpc: merge __dma_set_mask into dma_set_mask 2017-06-28 06:54:55 -07:00
dt_cpu_ftrs.c powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
eeh.c powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
eeh_cache.c
eeh_dev.c
eeh_driver.c powerpc/eeh: Clean up and document event handling functions 2017-05-02 22:41:43 +10:00
eeh_event.c powerpc/pci: Always print PHB and PE numbers as hexadecimal 2016-11-22 11:57:07 +11:00
eeh_pe.c powerpc/pci: Always print PHB and PE numbers as hexadecimal 2016-11-22 11:57:07 +11:00
eeh_sysfs.c
entry_32.S powerpc: Split ftrace bits into a separate file 2017-04-27 22:20:29 +10:00
entry_64.S powerpc/64s: Blacklist rtas entry/exit from kprobes 2017-07-03 23:12:02 +10:00
epapr_hcalls.S
epapr_paravirt.c
exceptions-64e.S powerpc/64e: Fix hang when debugging programs with relocated kernel 2017-04-30 01:05:18 -05:00
exceptions-64s.S powerpc/64s: Blacklist functions invoked on a trap 2017-07-03 23:12:01 +10:00
fadump.c powerpc/fadump: add reschedule point while releasing memory 2017-06-28 13:08:11 +10:00
firmware.c
fpu.S
fsl_booke_entry_mapping.S
head_8xx.S powerpc/8xx: Perf events on PPC 8xx 2017-01-26 17:49:34 -06:00
head_32.S powerpc/32: Remove Mac-on-Linux/rtlinux hooks 2017-03-21 22:09:26 +11:00
head_40x.S
head_44x.S
head_64.S powerpc/64: Allow for THREAD_SIZE > 16k 2017-03-20 19:02:49 +11:00
head_booke.h
head_fsl_booke.S
hw_breakpoint.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux into next 2017-02-18 21:37:14 +11:00
idle.c
idle_6xx.S
idle_book3e.S
idle_book3s.S powerpc/powernv/idle: Clear r12 on wakeup from stop lite 2017-06-28 22:46:06 +10:00
idle_e500.S
idle_power4.S
ima_kexec.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
io-workarounds.c sched/headers: Prepare to remove the <linux/mm_types.h> dependency from <linux/sched.h> 2017-03-02 08:42:37 +01:00
io.c
iomap.c powerpc: Move isa bridge definitions to separate include 2017-01-31 13:54:17 +11:00
iommu.c powerpc: implement ->mapping_error 2017-06-28 06:54:33 -07:00
irq.c powerpc/64s/idle: Process interrupts from system reset wakeup 2017-06-19 19:46:27 +10:00
isa-bridge.c powerpc: Add support for non-PCI ISA bridges 2017-01-31 13:54:17 +11:00
jump_label.c
kexec_elf_64.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
kgdb.c
kprobes-ftrace.c powerpc/kprobes: Add support for KPROBES_ON_FTRACE 2017-04-24 19:07:58 +10:00
kprobes.c Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-07-09 10:49:47 -07:00
kvm.c
kvm_emul.S
l2cr_6xx.S
legacy_serial.c powerpc/powernv: Add support for direct mapped LPC on POWER9 2017-01-31 13:54:18 +11:00
machine_kexec.c
machine_kexec_32.c
machine_kexec_64.c powerpc: Add purgatory for kexec_file_load() implementation. 2016-11-30 23:15:26 +11:00
machine_kexec_file_64.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
mce.c powerpc updates for 4.13 2017-07-07 13:55:45 -07:00
mce_power.c powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9 2017-07-11 12:53:53 +10:00
misc.S
misc_32.S powerpc/40x: Clear MSR_DR in one insn instead of two 2017-06-02 19:20:43 +10:00
misc_64.S powerpc/kexec: Fix radix to hash kexec due to IAMR/AMOR 2017-07-10 21:07:38 +10:00
module.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
module_32.c
module_64.c modversions: treat symbol CRCs as 32 bit quantities 2017-02-03 08:28:25 -08:00
msi.c
nvram_64.c powerpc/nvram: use memdup_user 2017-06-27 17:02:50 -07:00
of_platform.c powerpc/of_platform: Use builtin_platform_driver 2016-11-25 14:07:51 +11:00
optprobes.c powerpc/kprobes/optprobes: Use patch_instruction() 2017-07-03 23:12:19 +10:00
optprobes_head.S powerpc/optprobes: Fix TOC handling in optprobes trampoline 2017-02-23 08:23:30 +11:00
paca.c powerpc/mm/hash: Store addr_limit in PACA 2017-04-01 21:12:27 +11:00
pci-common.c Merge branch 'pci/resource-mmap' into next 2017-04-28 10:34:34 -05:00
pci-hotplug.c
pci_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
pci_64.c
pci_dn.c
pci_of_scan.c
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
process.c Merge branch 'fixes' into next 2017-07-03 23:05:43 +10:00
prom.c powerpc: Fix booting P9 hash with CONFIG_PPC_RADIX_MMU=N 2017-05-25 23:07:44 +10:00
prom_init.c powerpc/prom: Increase minimum RMA size to 512MB 2017-04-04 13:27:59 +10:00
prom_init_check.sh
prom_parse.c
ptrace.c powerpc/ptrace: Preserve previous TM fprs/vsrs on short regset write 2017-01-20 14:55:19 +11:00
ptrace32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
reloc_32.S
reloc_64.S
rtas-proc.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rtas-rtc.c
rtas.c powerpc/kernel: Fix unbalanced refcount on RTAS device node 2017-01-25 13:34:21 +11:00
rtas_flash.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rtas_pci.c
rtasd.c powerpc: Only obtain cpu_hotplug_lock if called by rtasd 2017-06-23 09:32:11 +02:00
setup-common.c Merge branch 'fixes' into next 2017-07-03 23:05:43 +10:00
setup.h
setup_32.c powerpc: Move {d,i,u}cache_bsize definitions to a common place 2017-02-06 19:46:04 +11:00
setup_64.c powerpc/64: Initialise thread_info for emergency stacks 2017-06-23 13:25:38 +10:00
signal.c livepatch/powerpc: add TIF_PATCH_PENDING thread flag 2017-03-08 09:20:19 +01:00
signal.h
signal_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
signal_64.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
smp-tbsync.c
smp.c powerpc updates for 4.13 2017-07-07 13:55:45 -07:00
stacktrace.c powerpc: Make /proc/self/stack always print the current stack 2017-03-28 14:43:59 +11:00
suspend.c
swsusp.c powerpc/swsusp: Include suspend.h to silence sparse warnings 2017-03-20 19:02:49 +11:00
swsusp_32.S
swsusp_64.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nmi.h> 2017-03-02 08:42:30 +01:00
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
syscalls.c powerpc/tracing: Allow tracing of mmap syscalls 2017-04-12 22:32:43 +10:00
sysfs.c powerpc/sysfs: Move #ifdef CONFIG_HOTPLUG_CPU out of the function body 2017-05-03 14:45:38 +10:00
systbl.S
systbl_chk.c
systbl_chk.sh
tau_6xx.c
time.c powerpc: use spin loop primitives in some functions 2017-07-02 20:40:24 +10:00
tm.S powerpc/tm: Fix comment 2017-06-27 12:09:09 +10:00
traps.c powerpc/64s: Blacklist functions invoked on a trap 2017-07-03 23:12:01 +10:00
udbg.c
udbg_16550.c
uprobes.c
vdso.c powerpc/64: Clean up ppc64_caches using a struct per cache 2017-02-06 19:46:04 +11:00
vecemu.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
vector.S
vmlinux.lds.S powerpc/vmlinux.lds: Align __init_begin to 16M 2017-07-03 23:12:19 +10:00