* [PATCH] cxl/hdm: Fix skip allocations vs multiple pmem allocations
@ 2022-08-05 22:12 Dan Williams
2022-08-05 22:36 ` Ira Weiny
0 siblings, 1 reply; 2+ messages in thread
From: Dan Williams @ 2022-08-05 22:12 UTC (permalink / raw)
To: linux-cxl
Cc: Vishal Verma, Vishal Verma, vishal.l.verma, dave.jiang,
alison.schofield, ira.weiny
Vishal notes that when attempting to define a second pmem region on a
device the DPA allocation fails with a message of the form:
decoder11.1: failed to reserve skipped space
Recall that the skip setting is used when there is a pmem allocation in
the presence of free ram DPA space. The first pmem allocation skips over
the free ram and subsequent pmem allocations do not require a skip. The
bug is that a skip is still attempted and the DPA reservation code
flags the double skip allocation conflict.
Fixes: cf880423b6a0 ("cxl/hdm: Add support for allocating DPA to an endpoint decoder")
Reported-by: Vishal Verma <vishal.l.verma@intel.com>
Tested-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
drivers/cxl/core/hdm.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c
index e096f74e19df..d1d2caea5c62 100644
--- a/drivers/cxl/core/hdm.c
+++ b/drivers/cxl/core/hdm.c
@@ -445,7 +445,16 @@ int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size)
start = free_pmem_start;
avail = cxlds->pmem_res.end - start + 1;
skip_start = free_ram_start;
- skip_end = start - 1;
+
+ /*
+ * If some pmem is already allocated, then that allocation
+ * already handled the skip.
+ */
+ if (cxlds->pmem_res.child &&
+ skip_start == cxlds->pmem_res.child->start)
+ skip_end = skip_start - 1;
+ else
+ skip_end = start - 1;
skip = skip_end - skip_start + 1;
} else {
dev_dbg(dev, "mode not set\n");
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] cxl/hdm: Fix skip allocations vs multiple pmem allocations
2022-08-05 22:12 [PATCH] cxl/hdm: Fix skip allocations vs multiple pmem allocations Dan Williams
@ 2022-08-05 22:36 ` Ira Weiny
0 siblings, 0 replies; 2+ messages in thread
From: Ira Weiny @ 2022-08-05 22:36 UTC (permalink / raw)
To: Dan Williams; +Cc: linux-cxl, Vishal Verma, dave.jiang, alison.schofield
On Fri, Aug 05, 2022 at 03:12:27PM -0700, Dan Williams wrote:
> Vishal notes that when attempting to define a second pmem region on a
> device the DPA allocation fails with a message of the form:
>
> decoder11.1: failed to reserve skipped space
>
> Recall that the skip setting is used when there is a pmem allocation in
> the presence of free ram DPA space. The first pmem allocation skips over
> the free ram and subsequent pmem allocations do not require a skip. The
> bug is that a skip is still attempted and the DPA reservation code
> flags the double skip allocation conflict.
>
> Fixes: cf880423b6a0 ("cxl/hdm: Add support for allocating DPA to an endpoint decoder")
> Reported-by: Vishal Verma <vishal.l.verma@intel.com>
> Tested-by: Vishal Verma <vishal.l.verma@intel.com>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> ---
> drivers/cxl/core/hdm.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c
> index e096f74e19df..d1d2caea5c62 100644
> --- a/drivers/cxl/core/hdm.c
> +++ b/drivers/cxl/core/hdm.c
> @@ -445,7 +445,16 @@ int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size)
> start = free_pmem_start;
> avail = cxlds->pmem_res.end - start + 1;
> skip_start = free_ram_start;
> - skip_end = start - 1;
> +
> + /*
> + * If some pmem is already allocated, then that allocation
> + * already handled the skip.
> + */
> + if (cxlds->pmem_res.child &&
> + skip_start == cxlds->pmem_res.child->start)
> + skip_end = skip_start - 1;
> + else
> + skip_end = start - 1;
> skip = skip_end - skip_start + 1;
> } else {
> dev_dbg(dev, "mode not set\n");
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-08-05 22:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-05 22:12 [PATCH] cxl/hdm: Fix skip allocations vs multiple pmem allocations Dan Williams
2022-08-05 22:36 ` Ira Weiny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox