linux/drivers/misc/cxl
Michael Neuling b184522f68 cxl: Keep IRQ mappings on context teardown
commit d6776bba44 upstream.

Keep IRQ mappings on context teardown.  This won't leak IRQs as if we
allocate the mapping again, the generic code will give the same
mapping used last time.

Doing this works around a race in the generic code. Masking the
interrupt introduces a race which can crash the kernel or result in
IRQ that is never EOIed. The lost of EOI results in all subsequent
mappings to the same HW IRQ never receiving an interrupt.

We've seen this race with cxl test cases which are doing heavy context
startup and teardown at the same time as heavy interrupt load.

A fix to the generic code is being investigated also.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Tested-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
Tested-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2016-05-04 14:48:48 -07:00
..
api.c cxl: fix leak of IRQ names in cxl_free_afu_irqs() 2015-10-01 11:49:32 +10:00
base.c cxl: Move include file cxl.h -> cxl-base.h 2015-06-03 13:27:19 +10:00
context.c cxl: fix leak of ctx->irq_bitmap when releasing context via kernel API 2015-10-01 11:49:32 +10:00
cxl.h cxl: fix leak of IRQ names in cxl_free_afu_irqs() 2015-10-01 11:49:32 +10:00
debugfs.c cxl: sparse: Silence iomem warning in debugfs file creation 2015-08-12 14:49:29 +10:00
fault.c cxl: Only check pid for userspace contexts 2015-06-03 13:27:18 +10:00
file.c cxl: fix leak of ctx->mapping when releasing kernel API contexts 2015-10-01 11:50:12 +10:00
irq.c cxl: Keep IRQ mappings on context teardown 2016-05-04 14:48:48 -07:00
Kconfig cxl: Add CONFIG_CXL_EEH symbol 2015-08-17 13:56:29 +10:00
main.c cxl: Destroy cxl_adapter_idr on module_exit 2015-07-16 14:14:55 +10:00
Makefile cxl: Fix build failure due to -Wunused-variable behaviour change 2015-09-15 19:33:51 +10:00
native.c cxl: Set endianess of kernel contexts 2015-12-08 16:57:01 +11:00
pci.c cxl: Fix PSL timebase synchronization detection 2016-03-09 15:34:55 -08:00
sysfs.c cxl: Fix lockdep warning while creating afu_err_buff attribute 2015-09-23 20:57:13 +10:00
trace.c cxl: Add tracepoints 2015-01-22 17:31:51 +11:00
trace.h cxl: use more common format specifier 2015-07-13 10:10:54 +10:00
vphb.c cxl: use correct operator when writing pcie config space values 2016-03-03 15:07:17 -08:00