From: Ian Munsie Date: Wed, 29 Jun 2016 12:16:26 +0000 (+1000) Subject: cxl: Fix allocating a minimum of 2 pages for the SPA X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2224b6719b09052a9fbf29422a0e9b4f42407c35;p=linux-beck.git cxl: Fix allocating a minimum of 2 pages for the SPA The Scheduled Process Area is allocated dynamically with enough pages to fit at least as many processes as the AFU descriptor indicated. Since the calculation is non-trivial, it does this by calculating how many processes could fit in an allocation of a given order, and increasing that order until it can fit enough processes or hits the maximum supported size. Currently, it will start this search using a SPA of 2 pages instead of 1. This can waste a page of memory if the AFU's maximum number of supported processes was small enough to fit in one page. Fix the algorithm to start the search at 1 page. Signed-off-by: Ian Munsie Reviewed-by: Frederic Barrat Reviewed-by: Andrew Donnellan Signed-off-by: Michael Ellerman --- diff --git a/drivers/misc/cxl/native.c b/drivers/misc/cxl/native.c index e80d8f7d4dcb..120c468ee9e0 100644 --- a/drivers/misc/cxl/native.c +++ b/drivers/misc/cxl/native.c @@ -189,7 +189,7 @@ int cxl_alloc_spa(struct cxl_afu *afu) unsigned spa_size; /* Work out how many pages to allocate */ - afu->native->spa_order = 0; + afu->native->spa_order = -1; do { afu->native->spa_order++; spa_size = (1 << afu->native->spa_order) * PAGE_SIZE;