FAILED: patch "[PATCH] cxl: Fix number of allocated pages in SPA" failed to apply to 4.2-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.2-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
4108efb02daa09cbb5db048ada55a5b021b5183dMon Sep 17 00:00:00 2001
From: Christophe Lombard <[email protected]>
Date: Wed, 7 Oct 2015 16:07:40 +1100
Subject: [PATCH] cxl: Fix number of allocated pages in SPA
The scheduled process area is currently allocated before assigning the correct maximum processes to the AFU, which will mean we only ever allocate a fixed number of pages for the scheduled process area. This will limit us to 958 processes with 2 x 64K pages. If we try to use more processes than that we'd probably overrun the buffer and corrupt memory or crash.
AFUs that require three or more interrupts per process will not be affected as they are already limited to less processes than that, but we could hit it on an AFU that requires 0, 1 or 2 interrupts per process, or when using 4K pages.
This patch moves the initialisation of the num_procs to before the SPA allocation so that enough pages will be allocated for the number of processes that the AFU supports.
drivers/misc/cxl/native.c +1 -1
@@ -457,6 +457,7 @@ static int activate_afu_directed(struct cxl_afu *afu)dev_info (&afu->dev,"Activating AFU directed mode\n" ); + afu->num_procs = afu->max_procs_virtualised;if (afu->spa ==NULL ) {if (cxl_alloc_spa (afu))return -ENOMEM ;
@@ -468,7 +469,6 @@ static int activate_afu_directed(struct cxl_afu *afu)cxl_p1n_write (afu, CXL_PSL_ID_An, CXL_PSL_ID_An_F | CXL_PSL_ID_An_L); afu->current_mode =CXL_MODE_DIRECTED ; - afu->num_procs = afu->max_procs_virtualised;if ((rc =cxl_chardev_m_afu_add (afu)))return rc;