linux/arch/powerpc
Alistair Popple 28a5933e8d powerpc/powernv/npu: Add lock to prevent race in concurrent context init/destroy
The pnv_npu2_init_context() and pnv_npu2_destroy_context() functions
are used to allocate/free contexts to allow address translation and
shootdown by the NPU on a particular GPU. Context initialisation is
implicitly safe as it is protected by the requirement mmap_sem be held
in write mode, however pnv_npu2_destroy_context() does not require
mmap_sem to be held and it is not safe to call with a concurrent
initialisation for a different GPU.

It was assumed the driver would ensure destruction was not called
concurrently with initialisation. However the driver may be simplified
by allowing concurrent initialisation and destruction for different
GPUs. As npu context creation/destruction is not a performance
critical path and the critical section is not large a single spinlock
is used for simplicity.

Fixes: 1ab66d1fba ("powerpc/powernv: Introduce address translation services for Nvlink2")
Cc: stable@vger.kernel.org # v4.12+
Signed-off-by: Alistair Popple <alistair@popple.id.au>
Reviewed-by: Mark Hairgrove <mhairgrove@nvidia.com>
Tested-by: Mark Hairgrove <mhairgrove@nvidia.com>
Reviewed-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2018-04-24 09:46:56 +10:00
..
boot powerpc updates for 4.17 2018-04-07 12:08:19 -07:00
configs scsi: remove the fdomain and fdomain_cs drivers 2018-03-19 22:54:47 -04:00
crypto crypto: hash - annotate algorithms taking optional key 2018-01-12 23:03:35 +11:00
include powerpc fixes for 4.17 #2 2018-04-15 11:57:12 -07:00
kernel powerpc/kvm: Fix lockups when running KVM guests on Power8 2018-04-19 16:22:20 +10:00
kvm powerpc fixes for 4.17 #2 2018-04-15 11:57:12 -07:00
lib powerpc/lib: Fix off-by-one in alternate feature patching 2018-04-17 00:37:48 +10:00
math-emu
mm powerpc/mm: Flush cache on memory hot(un)plug 2018-04-24 09:46:56 +10:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-05 11:29:24 -08:00
oprofile powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
perf powerpc updates for 4.17 2018-04-07 12:08:19 -07:00
platforms powerpc/powernv/npu: Add lock to prevent race in concurrent context init/destroy 2018-04-24 09:46:56 +10:00
purgatory
sysdev powerpc/xive: Fix trying to "push" an already active pool VP 2018-04-19 00:49:45 +10:00
tools
xmon Merge branch 'topic/paca' into next 2018-03-31 09:09:36 +11:00
Kconfig kexec_file: make use of purgatory optional 2018-04-13 17:10:27 -07:00
Kconfig.debug powerpc: Add new kconfig CONFIG_PPC_IRQ_SOFT_MASK_DEBUG 2018-01-19 22:37:03 +11:00
Makefile powerpc/64s: Add POWER9 CPU type selection 2018-04-01 22:15:32 +10:00
Makefile.postlink