linux/arch/powerpc/kernel
Paul Mackerras 7c5b06cadf KVM: PPC: Book3S HV: Adapt TLB invalidations to work on POWER9
POWER9 adds new capabilities to the tlbie (TLB invalidate entry)
and tlbiel (local tlbie) instructions.  Both instructions get a
set of new parameters (RIC, PRS and R) which appear as bits in the
instruction word.  The tlbiel instruction now has a second register
operand, which contains a PID and/or LPID value if needed, and
should otherwise contain 0.

This adapts KVM-HV's usage of tlbie and tlbiel to work on POWER9
as well as older processors.  Since we only handle HPT guests so
far, we need RIC=0 PRS=0 R=0, which ends up with the same instruction
word as on previous processors, so we don't need to conditionally
execute different instructions depending on the processor.

The local flush on first entry to a guest in book3s_hv_rmhandlers.S
is a loop which depends on the number of TLB sets.  Rather than
using feature sections to set the number of iterations based on
which CPU we're on, we now work out this number at VM creation time
and store it in the kvm_arch struct.  That will make it possible to
get the number from the device tree in future, which will help with
compatibility with future processors.

Since mmu_partition_table_set_entry() does a global flush of the
whole LPID, we don't need to do the TLB flush on first entry to the
guest on each processor.  Therefore we don't set all bits in the
tlb_need_flush bitmap on VM startup on POWER9.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-11-24 09:24:23 +11:00
..
vdso32 powerpc/vdso: Fix build rules to rebuild vdsos correctly 2016-08-10 23:04:12 +10:00
vdso64 powerpc/vdso64: Use double word compare on pointers 2016-09-29 15:17:57 +10:00
.gitignore
align.c powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
asm-offsets.c KVM: PPC: Book3S HV: Adapt TLB invalidations to work on POWER9 2016-11-24 09:24:23 +11:00
audit.c
btext.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
cacheinfo.c
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/powernv: Define and set POWER9 HFSCR doorbell bit 2016-11-23 11:18:22 +11:00
cpu_setup_ppc970.S
cputable.c powerpc/8xx: add dedicated machine check handler 2016-09-25 02:38:55 -05:00
crash.c powerpc/crash: Rearrange loop condition to avoid out of bounds array access 2016-07-14 20:26:22 +10:00
crash_dump.c
dbell.c
dma-iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dma-swiotlb.c
dma.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
eeh.c powerpc/eeh: Quieten EEH message when no adapters are found 2016-10-04 16:11:48 +11:00
eeh_cache.c powerpc/eeh: Fix pr_debug()s in eeh_cache.c 2016-07-08 22:09:50 +10:00
eeh_dev.c powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
eeh_driver.c powerpc/eeh: Skip finding bus until after failure reporting 2016-09-23 07:54:21 +10:00
eeh_event.c powerpc: sparse: static-ify some things 2016-04-12 21:05:18 +10:00
eeh_pe.c powerpc/eeh: Export eeh_pe_state_mark() 2016-09-29 14:51:04 +10:00
eeh_sysfs.c
entry_32.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
entry_64.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
epapr_hcalls.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
epapr_paravirt.c
exceptions-64e.S powerpc32: provide VIRT_CPU_ACCOUNTING 2016-07-09 01:43:50 -05:00
exceptions-64s.S powerpc/64s: relocation, register save fixes for system reset interrupt 2016-10-27 21:55:14 +11:00
fadump.c Merge branch 'akpm' (patches from Andrew) 2016-10-07 21:38:00 -07:00
firmware.c
fpu.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
fsl_booke_entry_mapping.S
ftrace.c ftrace: Add return address pointer to ftrace_ret_stack 2016-08-24 12:15:14 +02:00
head_8xx.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
head_32.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
head_40x.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
head_44x.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
head_64.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
head_booke.h
head_fsl_booke.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
hw_breakpoint.c perf/powerpc: Don't call perf_event_disable() from atomic context 2016-10-28 11:06:25 +02:00
ibmebus.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
idle.c
idle_6xx.S
idle_book3e.S
idle_book3s.S powerpc/64: Fix race condition in setting lock bit in idle/wakeup code 2016-10-24 19:29:47 +11:00
idle_e500.S
idle_power4.S
io-workarounds.c
io.c
iomap.c powerpc: add io{read,write}64 accessors 2016-05-31 16:41:52 +08:00
iommu.c powerpc: implement the DMA_ATTR_NO_WARN attribute 2016-10-11 15:06:32 -07:00
irq.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
isa-bridge.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
jump_label.c
kgdb.c
kprobes.c powerpc: migrate exception table users off module.h and onto extable.h 2016-08-22 11:09:33 +10:00
kvm.c
kvm_emul.S
l2cr_6xx.S
legacy_serial.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
machine_kexec.c powerpc: Update of_remove_property() call sites to remove null checking 2016-05-11 21:54:04 +10:00
machine_kexec_32.c
machine_kexec_64.c powerpc/64/kexec: Remove BookE special default_machine_kexec_prepare() 2016-09-23 07:54:18 +10:00
Makefile This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
mce.c powerpc/book3s: Fix MCE console messages for unrecoverable MCE. 2016-08-09 19:46:54 +10:00
mce_power.c powerpc/mm/radix: Fix CONFIG_PPC_MMU_STD_64 typo 2016-05-11 21:53:59 +10:00
misc.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
misc_32.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
misc_64.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
module.c powerpc/sparse: Make a bunch of things static 2016-09-13 17:35:47 +10:00
module_32.c
module_64.c powerpc/modules: Never restore r2 for a mprofile-kernel style mcount() call 2016-07-21 20:10:42 +10:00
msi.c
nvram_64.c powerpc/nvram: Fix an incorrect partition merge 2016-09-20 16:15:42 +10:00
of_platform.c
paca.c powerpc/mm: Convert early cpu/mmu feature check to use the new helpers 2016-08-01 11:15:01 +10:00
pci-common.c Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
pci-hotplug.c powerpc/pci: Don't scan empty slot 2016-05-11 21:54:26 +10:00
pci_32.c ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
pci_64.c powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
pci_dn.c powerpc/pci: Fix build with PCI_IOV=y and EEH=n 2016-07-07 16:33:27 +10:00
pci_of_scan.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c
process.c powerpc/process: Fix CONFIG_ALIVEC typo in restore_tm_state() 2016-10-27 21:52:59 +11:00
prom.c powerpc/mm: Make MMU_FTR_RADIX a MMU family feature 2016-08-01 11:14:57 +10:00
prom_init.c powerpc/pasemi: Fix device_type of Nemo SB600 node. 2016-09-13 17:37:08 +10:00
prom_init_check.sh
prom_parse.c
ptrace.c powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
ptrace32.c mm: replace access_process_vm() write parameter with gup_flags 2016-10-19 08:31:25 -07:00
reloc_32.S
reloc_64.S
rtas-proc.c powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
rtas-rtc.c
rtas.c powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
rtas_flash.c
rtas_pci.c
rtasd.c powerpc/pseries: start rtasd before PCI probing 2016-07-08 19:22:15 +10:00
setup-common.c powerpc: Call chained reset handlers during reset 2016-09-25 00:06:40 -05:00
setup.h powerpc: Merge 32-bit and 64-bit setup_arch() 2016-07-21 19:17:46 +10:00
setup_32.c Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
setup_64.c powerpc/32: Fix crash during static key init 2016-08-10 19:41:58 +10:00
signal.c powerpc: signals: Stop using current in signal code 2016-10-04 16:43:07 +11:00
signal.h powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
signal_32.c powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
signal_64.c powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
smp-tbsync.c
smp.c powerpc, hotplug: Avoid to touch non-existent cpumasks. 2016-08-22 11:09:33 +10:00
stacktrace.c
suspend.c
swsusp.c powerpc/mm: Abstraction for switch_mmu_context() 2016-05-01 18:33:04 +10:00
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c
syscalls.c powerpc/sparse: Add more assembler prototypes 2016-09-13 17:36:58 +10:00
sysfs.c powerpc/sparse: make some things static 2016-06-16 22:23:11 +10:00
systbl.S
systbl_chk.c
systbl_chk.sh
tau_6xx.c
time.c Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
tm.S powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
trace_clock.c
traps.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux into next 2016-10-11 20:07:56 +11:00
udbg.c
udbg_16550.c
uprobes.c
vdso.c powerpc/vdso: Add missing include file 2016-08-09 16:52:00 +10:00
vecemu.c
vector.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
vio.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
vmlinux.lds.S Merge branch 'akpm' (patches from Andrew) 2016-10-07 21:38:00 -07:00