Message ID | 1444194460-13584-1-git-send-email-imunsie@au.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Wed, 2015-07-10 at 05:07:40 UTC, Ian Munsie wrote: > From: Christophe Lombard <clombard@linux.vnet.ibm.com> > > 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. > > Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> > Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> > Cc: stable <stable@vger.kernel.org> # 3.18+ Applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/4108efb02daa09cbb5db048a cheers
diff --git a/drivers/misc/cxl/native.c b/drivers/misc/cxl/native.c index b37f2e8..d2e75c8 100644 --- a/drivers/misc/cxl/native.c +++ b/drivers/misc/cxl/native.c @@ -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;