linux_dsm_epyc7002/drivers/misc/cxl
Daniel Axtens 05155772f6 cxl: Allocate and release the SPA with the AFU
Previously the SPA was allocated and freed upon entering and leaving
AFU-directed mode. This causes some issues for error recovery - contexts
hold a pointer inside the SPA, and they may persist after the AFU has
been detached.

We would ideally like to allocate the SPA when the AFU is allocated, and
release it until the AFU is released. However, we don't know how big the
SPA needs to be until we read the AFU descriptor.

Therefore, restructure the code:

 - Allocate the SPA only once, on the first attach.

 - Release the SPA only when the entire AFU is being released (not
   detached). Guard the release with a NULL check, so we don't free
   if it was never allocated (e.g. dedicated mode)

Acked-by: Cyril Bur <cyrilbur@gmail.com>
Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-08-14 21:32:04 +10:00
..
api.c cxl: Fix refcounting in kernel API 2015-07-07 19:38:37 +10:00
base.c cxl: Move include file cxl.h -> cxl-base.h 2015-06-03 13:27:19 +10:00
context.c cxl: Drop commands if the PCI channel is not in normal state 2015-08-14 21:32:03 +10:00
cxl.h cxl: Allocate and release the SPA with the AFU 2015-08-14 21:32:04 +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: Drop commands if the PCI channel is not in normal state 2015-08-14 21:32:03 +10:00
irq.c cxl: sparse: Make declarations static 2015-08-12 14:49:09 +10:00
Kconfig cxl: Add CXL_KERNEL_API config option 2015-06-19 17:10:30 +10:00
main.c cxl: Destroy cxl_adapter_idr on module_exit 2015-07-16 14:14:55 +10:00
Makefile cxl: Compile with -Werror 2015-08-11 07:43:40 +10:00
native.c cxl: Allocate and release the SPA with the AFU 2015-08-14 21:32:04 +10:00
pci.c cxl: Allocate and release the SPA with the AFU 2015-08-14 21:32:04 +10:00
sysfs.c cxl: cxl_afu_reset() -> __cxl_afu_reset() 2015-06-03 13:27:18 +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: Drop commands if the PCI channel is not in normal state 2015-08-14 21:32:03 +10:00