linux/arch/powerpc/include/asm
Frederic Barrat 03b8abedf4 cxl: Enable global TLBIs for cxl contexts
The PSL and nMMU need to see all TLB invalidations for the memory
contexts used on the adapter. For the hash memory model, it is done by
making all TLBIs global as soon as the cxl driver is in use. For
radix, we need something similar, but we can refine and only convert
to global the invalidations for contexts actually used by the device.

The new mm_context_add_copro() API increments the 'active_cpus' count
for the contexts attached to the cxl adapter. As soon as there's more
than 1 active cpu, the TLBIs for the context become global. Active cpu
count must be decremented when detaching to restore locality if
possible and to avoid overflowing the counter.

The hash memory model support is somewhat limited, as we can't
decrement the active cpus count when mm_context_remove_copro() is
called, because we can't flush the TLB for a mm on hash. So TLBIs
remain global on hash.

Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Fixes: f24be42aab ("cxl: Add psl9 specific code")
Tested-by: Alistair Popple <alistair@popple.id.au>
[mpe: Fold in updated comment on the barrier from Fred]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-09-28 17:09:16 +10:00
..
book3s powerpc/mm: Export flush_all_mm() 2017-09-28 16:28:22 +10:00
nohash powerpc/hugetlb: fix page rights verification in gup_hugepte() 2017-08-15 22:55:58 +10:00
8xx_immap.h
accounting.h sched/cputime, powerpc: Prepare accounting structure for cputime flush on tick 2017-01-14 09:54:12 +01:00
agp.h
archrandom.h
asm-compat.h powerpc/asm: Convert .llong directives to .8byte 2017-08-31 14:26:47 +10:00
asm-offsets.h
asm-prototypes.h powerpc: Fix missing CRCs, add more asm-prototypes.h declarations 2017-03-21 22:09:26 +11:00
async_tx.h
atomic.h powerpc/64: Fix atomic64_inc_not_zero() to return an int 2017-07-12 21:49:55 +10:00
backlight.h
barrier.h locking: Remove smp_mb__before_spinlock() 2017-08-10 12:29:03 +02:00
bitops.h powerpc: Remove __ilog2()s and use generic ones 2017-06-02 19:23:56 +10:00
bootx.h
btext.h
bug.h powerpc/powernv: Use kernel crash path for machine checks 2017-08-31 14:26:04 +10:00
bugs.h
cache.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
cacheflush.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
cell-pmu.h
cell-regs.h
checksum.h powerpc/64: Fix checksum folding in csum_add() 2017-03-04 23:07:17 +11:00
cmpxchg.h powerpc: Fix __cmpxchg() to take a volatile ptr again 2016-11-25 14:07:50 +11:00
code-patching.h powerpc64/elfv1: Only dereference function descriptor for non-text symbols 2017-07-03 23:08:50 +10:00
compat.h take compat_sys_old_getrlimit() to native syscall 2017-05-27 15:38:06 -04:00
context_tracking.h
copro.h
cpm1.h powerpc/8xx: Adding support of IRQ in MPC8xx GPIO 2017-05-02 22:35:00 -05:00
cpm2.h
cpm.h
cpu_has_feature.h powerpc/64s: Support new device tree binding for discovering CPU features 2017-05-09 23:42:55 +10:00
cpufeature.h powerpc: Add module autoloading based on CPU features 2016-07-21 20:33:57 +10:00
cpuidle.h powerpc/64s: Move IDLE_STATE_ENTER_SEQ[_NORET] into idle_book3s.S 2017-08-29 21:38:47 +10:00
cputable.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
cputhreads.h powerpc: cputhreads: Add missing include file 2016-08-22 11:09:33 +10:00
cputime.h sched/cputime: Remove generic asm headers 2017-02-01 09:14:07 +01:00
current.h
dbdma.h
dbell.h powerpc/64s: msgclr when handling doorbell exceptions from system reset 2017-06-19 19:46:27 +10:00
dcr-generic.h
dcr-mmio.h
dcr-native.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
dcr-regs.h
dcr.h
debug.h powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
debugfs.h powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
delay.h powerpc: use spin loop primitives in some functions 2017-07-02 20:40:24 +10:00
device.h treewide: Move dma_ops from struct dev_archdata into struct device 2017-01-24 12:23:35 -05:00
disassemble.h KVM: PPC: Book3S: Add MMIO emulation for FP and VSX instructions 2017-04-20 11:36:41 +10:00
dma-mapping.h powerpc: merge __dma_set_mask into dma_set_mask 2017-06-28 06:54:55 -07:00
dma.h
dt_cpu_ftrs.h powerpc/64s: Support new device tree binding for discovering CPU features 2017-05-09 23:42:55 +10:00
edac.h
eeh_event.h
eeh.h powerpc/powernv: Rework EEH initialization on powernv 2017-09-26 11:19:07 +10:00
ehv_pic.h
elf.h powerpc: move ELF_ET_DYN_BASE to 4GB / 4MB 2017-07-10 16:32:36 -07:00
emergency-restart.h
emulated_ops.h powerpc/64s: Add workaround for P9 vector CI load issue 2017-09-27 08:23:22 +10:00
epapr_hcalls.h
exception-64e.h
exception-64s.h powerpc/64s/paca: EX_CTR is not used with RELOCATABLE=n, remove it 2017-06-20 22:22:02 +10:00
exec.h
extable.h powerpc: switch to extable.h 2017-03-28 18:23:54 -04:00
fadump.h powerpc/powernv: Use kernel crash path for machine checks 2017-08-31 14:26:04 +10:00
fb.h
feature-fixups.h powerpc/asm: Convert .llong directives to .8byte 2017-08-31 14:26:47 +10:00
firmware.h powerpc/pseries: Add hypercall wrappers for hash page table resizing 2017-02-09 21:45:48 +11:00
fixmap.h powerpc/mm: Simplify __set_fixmap() 2017-08-15 22:55:58 +10:00
floppy.h
fs_pd.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_hcalls.h scripts/spelling.txt: add "partiton" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
fsl_lbc.h
fsl_pamu_stash.h
fsl_pm.h
ftrace.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
futex.h futex: Remove duplicated code and fix undefined behaviour 2017-08-25 22:49:59 +02:00
grackle.h
hardirq.h powerpc: Add irq accounting for watchdog interrupts 2017-08-10 22:30:02 +10:00
head-64.h powerpc/64s: Add EX_SIZE definition for paca exception save areas 2017-06-20 22:22:00 +10:00
heathrow.h
highmem.h
hmi.h powerpc: move hmi.c to arch/powerpc/kvm/ 2016-09-09 16:18:07 +10:00
hugetlb.h powerpc/mm/hugetlb: Add support for reserving gigantic huge pages via kernel command line 2017-08-16 14:56:12 +10:00
hvcall.h powerpc/xive: guest exploitation of the XIVE interrupt controller 2017-09-02 21:02:35 +10:00
hvconsole.h
hvcserver.h
hvsi.h
hw_breakpoint.h
hw_irq.h powerpc/64s/idle: Process interrupts from system reset wakeup 2017-06-19 19:46:27 +10:00
hydra.h
i8259.h
ibmebus.h
icswx.h crypto/nx: Add P9 NX specific error codes for 842 engine 2017-09-01 16:42:50 +10:00
ide.h
ima.h powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
imc-pmu.h powerpc/powernv: Detect and create IMC device 2017-07-25 22:55:27 +10:00
immap_cpm2.h
io_event_irq.h
io-defs.h
io-workarounds.h
io.h powerpc/mm: Wire up ioremap_cache() 2017-04-21 21:08:47 +10:00
iommu.h powerpc: implement ->mapping_error 2017-06-28 06:54:33 -07:00
ipic.h
irq_work.h
irq.h
irqflags.h
isa-bridge.h powerpc: Add support for non-PCI ISA bridges 2017-01-31 13:54:17 +11:00
jump_label.h powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
Kbuild powerpc: allow compiling with GENERIC_MSI_IRQ_DOMAIN 2017-07-24 21:19:32 +10:00
kdebug.h
kdump.h
kexec.h powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
keylargo.h
kgdb.h
kmap_types.h
kprobes.h powerpc/kprobes: Skip livepatch_handler() for jprobes 2017-06-16 19:49:43 +10:00
kvm_asm.h KVM: PPC: Book3S HV: Enable hypervisor virtualization interrupts while in guest 2016-11-24 09:24:23 +11:00
kvm_book3s_32.h
kvm_book3s_64.h powerpc/pseries: Skip using reserved virtual address range 2017-04-01 21:12:27 +11:00
kvm_book3s_asm.h KVM: PPC: Book3S HV: POWER9 does not require secondary thread management 2017-08-29 14:48:59 +10:00
kvm_book3s.h KVM: PPC: Book3S HV: Simplify dynamic micro-threading code 2017-07-01 18:59:01 +10:00
kvm_booke_hv_asm.h
kvm_booke.h
kvm_fpu.h
kvm_host.h KVM: update to new mmu_notifier semantic v2 2017-08-31 16:13:00 -07:00
kvm_para.h
kvm_ppc.h KVM: PPC: Book3S HV: Allow userspace to set the desired SMT mode 2017-06-19 14:34:20 +10:00
libata-portmap.h libata: remove unused definitions from <asm/libata-portmap.h> 2016-09-22 11:50:19 -04:00
linkage.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
livepatch.h powerpc/livepatch: Remove klp_write_module_reloc() stub 2016-12-19 11:15:25 +01:00
local.h
lppaca.h
lv1call.h
machdep.h powerpc: Do not call ppc_md.panic in fadump panic notifier 2017-08-31 14:26:01 +10:00
macio.h
mc146818rtc.h
mce.h powerpc/64s: Machine check handle ifetch from foreign real address for POWER9 2017-06-06 21:17:15 +10:00
mediabay.h
mm-arch-hooks.h
mman.h powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
mmu_context.h cxl: Enable global TLBIs for cxl contexts 2017-09-28 17:09:16 +10:00
mmu-8xx.h powerpc/8xx: Implement support of hugepages 2016-12-09 22:49:07 -06:00
mmu-40x.h
mmu-44x.h
mmu-book3e.h powerpc/mm/nohash: MM_SLICE is only used by book3s 64 2017-03-31 23:09:47 +11:00
mmu.h powerpc/mm/hash: Support 68 bit VA 2017-03-31 23:10:00 +11:00
mmzone.h powerpc: implement arch_reserved_kernel_pages 2016-10-07 18:46:28 -07:00
module.h powerpc/modules: If mprofile-kernel is enabled add it to vermagic 2017-05-15 19:31:38 +10:00
mpc5xxx.h
mpc6xx.h
mpc52xx_psc.h
mpc52xx.h powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
mpc85xx.h
mpc5121.h
mpc8260.h
mpic_msgr.h powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
mpic_timer.h
mpic.h
msi_bitmap.h
nmi.h powerpc/64: Fix watchdog configuration regressions 2017-08-31 14:26:00 +10:00
nvram.h
ohare.h
opal-api.h powerpc/powernv: Add support to clear sensor groups data 2017-08-10 22:40:05 +10:00
opal.h powerpc/powernv: Flush console before platform error reboot 2017-08-31 14:26:03 +10:00
oprofile_impl.h
paca.h powerpc/64s: Add workaround for P9 vector CI load issue 2017-09-27 08:23:22 +10:00
page_32.h
page_64.h powerpc/mm/slice: Move slice_mask struct definition to slice.c 2017-03-31 23:09:56 +11:00
page.h powerpc/mm: Fix virt_addr_valid() etc. on 64-bit hash 2017-05-19 13:04:35 +10:00
parport.h powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pasemi_dma.h
pci-bridge.h powerpc/pci: Remove OF node back pointer from pci_dn 2017-08-31 14:26:12 +10:00
pci.h PCI: Add arch_can_pci_mmap_io() on architectures which can mmap() I/O space 2017-04-18 13:02:26 -05:00
percpu.h
perf_event_fsl_emb.h
perf_event_server.h powerpc/perf: Support to export MMCRA[TEC*] field to userspace 2017-04-19 20:00:22 +10:00
perf_event.h
pgalloc.h powerpc/mm/nohash: Move definition of PGALLOC_GFP to fix build errors 2017-08-15 20:02:56 +10:00
pgtable-be-types.h powerpc/mm: Ensure cpumask update is ordered 2017-08-18 13:07:16 +10:00
pgtable-types.h powerpc/mm: Ensure cpumask update is ordered 2017-08-18 13:07:16 +10:00
pgtable.h Merge branch 'topic/ppc-kvm' into next 2017-08-17 23:14:17 +10:00
plpar_wrappers.h powerpc/pseries: Add hypercall wrappers for hash page table resizing 2017-02-09 21:45:48 +11:00
pmac_feature.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
pnv-pci.h powerpc/powernv: Enable PCI peer-to-peer 2017-08-08 11:27:30 +10:00
powernv.h powerpc/powernv: Introduce address translation services for Nvlink2 2017-04-04 13:27:26 +10:00
ppc4xx_ocm.h
ppc4xx.h powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
ppc_asm.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
ppc-opcode.h powerpc: Handle most loads and stores in instruction emulation code 2017-09-01 16:39:48 +10:00
ppc-pci.h powerpc/eeh: Refactor EEH PE reset functions 2016-11-22 11:57:08 +11:00
probes.h
processor.h powerpc updates for 4.13 2017-07-07 13:55:45 -07:00
prom.h powerpc/xive: add XIVE Exploitation Mode to CAS 2017-09-02 21:02:38 +10:00
ps3.h treewide: Consolidate get_dma_ops() implementations 2017-01-24 12:23:35 -05:00
ps3av.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
ps3gpu.h
ps3stor.h
pte-common.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
pte-walk.h powerpc/mm: Rename find_linux_pte_or_hugepte() 2017-08-17 23:13:46 +10:00
ptrace.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
reg_8xx.h powerpc/8xx: Perf events on PPC 8xx 2017-01-26 17:49:34 -06:00
reg_a2.h
reg_booke.h powerpc: Remove old unused icswx based coprocessor support 2017-08-03 16:06:52 +10:00
reg_fsl_emb.h
reg.h powerpc/asm: Convert .llong directives to .8byte 2017-08-31 14:26:47 +10:00
rheap.h
rio.h
rtas.h powerpc/pseries: Implement indexed-count hotplug memory add 2017-02-17 17:57:30 +11:00
runlatch.h
scom.h
seccomp.h
sections.h powerpc/kprobes: Blacklist exception handlers 2017-04-23 20:32:25 +10:00
serial.h
setjmp.h
setup.h powerpc: Do not call ppc_md.panic in fadump panic notifier 2017-08-31 14:26:01 +10:00
sfp-machine.h
shmparam.h
signal.h powerpc: signals: Stop using current in signal code 2016-10-04 16:43:07 +11:00
smp.h powerpc/smp: Add cpu_l2_cache_map 2017-08-31 14:26:56 +10:00
smu.h powerpc/pmac: Remove early allocation of the SMU command buffer 2016-07-21 18:56:38 +10:00
sparsemem.h powerpc/mm: Fix build break with BOOK3S_64=n and MEMORY_HOTPLUG=y 2017-02-15 19:58:39 +11:00
spinlock_types.h
spinlock.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 11:52:29 -07:00
spu_csa.h
spu_info.h
spu_priv1.h
spu.h
sstep.h powerpc: Emulate load/store floating point as integer word instructions 2017-09-01 16:42:44 +10:00
string.h powerpc/32: add memset16() 2017-09-01 16:42:45 +10:00
swab.h
swiotlb.h treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00
switch_to.h powerpc/ptrace: Fix coredump since ptrace TM changes 2016-08-10 16:34:20 +10:00
synch.h powerpc: Factor do_feature_fixup calls 2016-07-21 18:51:42 +10:00
syscall.h
syscalls.h powerpc/tracing: Allow tracing of mmap syscalls 2017-04-12 22:32:43 +10:00
systbl.h powerpc: Wire up statx() syscall 2017-03-16 20:45:53 +11:00
tce.h powerpc/powernv/pci: Remove SWINV constants and obsolete TCE code 2016-07-17 16:42:47 +10:00
termios.h
thread_info.h powerpc updates for 4.12 part 1. 2017-05-05 11:36:44 -07:00
time.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
timex.h powerpc/8xx: Getting rid of remaining use of CONFIG_8xx 2017-08-10 23:32:12 +10:00
tlb.h powerpc/mm: Optimize detection of thread local mm's 2017-08-23 22:28:38 +10:00
tlbflush.h powerpc/mm: remove flush_tlb_page_nohash 2016-08-01 11:15:13 +10:00
tm.h powerpc: Remove do_load_up_transact_{fpu,altivec} 2016-10-04 20:33:16 +11:00
topology.h powerpc/topology: Remove the unused parent_node() macro 2017-08-16 21:12:41 +10:00
trace_clock.h
trace.h powerpc/mm: Trace tlbie(l) instructions 2017-06-23 21:14:49 +10:00
tsi108_irq.h
tsi108_pci.h
tsi108.h powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
types.h powerpc: Define and use PPC64_ELF_ABI_v2/v1 2016-06-14 13:58:27 +10:00
uaccess.h powerpc/64s: Add workaround for P9 vector CI load issue 2017-09-27 08:23:22 +10:00
udbg.h
uic.h
unaligned.h
uninorth.h
unistd.h powerpc: Wire up statx() syscall 2017-03-16 20:45:53 +11:00
uprobes.h
user.h
vas.h powerpc/powernv/vas: Define copy/paste interfaces 2017-08-31 14:26:38 +10:00
vdso_datapage.h
vdso.h
vga.h vga: optimise console scrolling 2017-09-08 18:26:48 -07:00
vio.h
word-at-a-time.h powerpc: EX_TABLE macro for exception tables 2016-11-14 11:11:51 +11:00
xics.h powerpc: Change the doorbell IPI calling convention 2017-04-13 23:34:33 +10:00
xilinx_intc.h powerpc/virtex: Use generic xilinx irqchip driver 2016-11-29 09:14:50 +00:00
xilinx_pci.h
xive-regs.h powerpc/xive: Native exploitation of the XIVE interrupt controller 2017-04-10 21:41:34 +10:00
xive.h powerpc/xive: introduce H_INT_ESB hcall 2017-09-02 21:02:37 +10:00
xmon.h powerpc/xive: Native exploitation of the XIVE interrupt controller 2017-04-10 21:41:34 +10:00
xor.h powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00