Linux CXL
 help / color / mirror / Atom feed
* [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow
@ 2025-11-16  1:30 Alison Schofield
  2025-11-18  2:04 ` Ira Weiny
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Alison Schofield @ 2025-11-16  1:30 UTC (permalink / raw)
  To: Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
	Vishal Verma, Ira Weiny, Dan Williams
  Cc: linux-cxl

mock_get_event() uses an uninitialized local variable, nr_overflow, to
populate the overflow_err_count field. That results in incorrect
overflow_err_count values in mocked cxl_overflow trace events, such as
this case where the records are reported as 0 and should be non-zero:

[] cxl_overflow: memdev=mem7 host=cxl_mem.6 serial=7: log=Failure : 0 records from 1763228189130895685 to 1763228193130896180

Fix by using log->nr_overflow and remove the unused local variable.

A follow-up change was considered in cxl_mem_get_records_log() to
confirm that the overflow_err_count is non-zero when the overflow flag
is set [1]. Since the driver has no functional dependency on this
constraint, and a device that violates this specific requirement does
not cause incorrect driver behavior, no validation check is added.

[1] CXL 3.2, Table 8-65 Get Event Records Output Payload

Signed-off-by: Alison Schofield <alison.schofield@intel.com>
---
 tools/testing/cxl/test/mem.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c
index d533481672b7..9853bccfa185 100644
--- a/tools/testing/cxl/test/mem.c
+++ b/tools/testing/cxl/test/mem.c
@@ -256,7 +256,6 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
 {
 	struct cxl_get_event_payload *pl;
 	struct mock_event_log *log;
-	u16 nr_overflow;
 	u8 log_type;
 	int i;
 
@@ -299,7 +298,7 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
 		u64 ns;
 
 		pl->flags |= CXL_GET_EVENT_FLAG_OVERFLOW;
-		pl->overflow_err_count = cpu_to_le16(nr_overflow);
+		pl->overflow_err_count = cpu_to_le16(log->nr_overflow);
 		ns = ktime_get_real_ns();
 		ns -= 5000000000; /* 5s ago */
 		pl->first_overflow_timestamp = cpu_to_le64(ns);

base-commit: e9a6fb0bcdd7609be6969112f3fbfcce3b1d4a7c
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow
  2025-11-16  1:30 [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow Alison Schofield
@ 2025-11-18  2:04 ` Ira Weiny
  2025-11-18 23:10 ` Dave Jiang
  2025-11-18 23:34 ` Dave Jiang
  2 siblings, 0 replies; 4+ messages in thread
From: Ira Weiny @ 2025-11-18  2:04 UTC (permalink / raw)
  To: Alison Schofield, Davidlohr Bueso, Jonathan Cameron, Dave Jiang,
	Vishal Verma, Ira Weiny, Dan Williams
  Cc: linux-cxl

Alison Schofield wrote:
> mock_get_event() uses an uninitialized local variable, nr_overflow, to
> populate the overflow_err_count field. That results in incorrect
> overflow_err_count values in mocked cxl_overflow trace events, such as
> this case where the records are reported as 0 and should be non-zero:
> 
> [] cxl_overflow: memdev=mem7 host=cxl_mem.6 serial=7: log=Failure : 0 records from 1763228189130895685 to 1763228193130896180
> 
> Fix by using log->nr_overflow and remove the unused local variable.
> 
> A follow-up change was considered in cxl_mem_get_records_log() to
> confirm that the overflow_err_count is non-zero when the overflow flag
> is set [1]. Since the driver has no functional dependency on this
> constraint, and a device that violates this specific requirement does
> not cause incorrect driver behavior, no validation check is added.
> 
> [1] CXL 3.2, Table 8-65 Get Event Records Output Payload
> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>

Clearly a bug on my part.  But in ndctl/test/cxl-events.sh we count the
overflow traces.  Does this still work with that?  I guess the '0' is
simply reported correctly right?

Reviewed-by: Ira Weiny <ira.weiny@intel.com>

[snip]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow
  2025-11-16  1:30 [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow Alison Schofield
  2025-11-18  2:04 ` Ira Weiny
@ 2025-11-18 23:10 ` Dave Jiang
  2025-11-18 23:34 ` Dave Jiang
  2 siblings, 0 replies; 4+ messages in thread
From: Dave Jiang @ 2025-11-18 23:10 UTC (permalink / raw)
  To: Alison Schofield, Davidlohr Bueso, Jonathan Cameron, Vishal Verma,
	Ira Weiny, Dan Williams
  Cc: linux-cxl



On 11/15/25 6:30 PM, Alison Schofield wrote:
> mock_get_event() uses an uninitialized local variable, nr_overflow, to
> populate the overflow_err_count field. That results in incorrect
> overflow_err_count values in mocked cxl_overflow trace events, such as
> this case where the records are reported as 0 and should be non-zero:
> 
> [] cxl_overflow: memdev=mem7 host=cxl_mem.6 serial=7: log=Failure : 0 records from 1763228189130895685 to 1763228193130896180
> 
> Fix by using log->nr_overflow and remove the unused local variable.
> 
> A follow-up change was considered in cxl_mem_get_records_log() to
> confirm that the overflow_err_count is non-zero when the overflow flag
> is set [1]. Since the driver has no functional dependency on this
> constraint, and a device that violates this specific requirement does
> not cause incorrect driver behavior, no validation check is added.
> 
> [1] CXL 3.2, Table 8-65 Get Event Records Output Payload
> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>

Reviewed-by: Dave Jiang <dave.jiang@intel.com>> ---
>  tools/testing/cxl/test/mem.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c
> index d533481672b7..9853bccfa185 100644
> --- a/tools/testing/cxl/test/mem.c
> +++ b/tools/testing/cxl/test/mem.c
> @@ -256,7 +256,6 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
>  {
>  	struct cxl_get_event_payload *pl;
>  	struct mock_event_log *log;
> -	u16 nr_overflow;
>  	u8 log_type;
>  	int i;
>  
> @@ -299,7 +298,7 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
>  		u64 ns;
>  
>  		pl->flags |= CXL_GET_EVENT_FLAG_OVERFLOW;
> -		pl->overflow_err_count = cpu_to_le16(nr_overflow);
> +		pl->overflow_err_count = cpu_to_le16(log->nr_overflow);
>  		ns = ktime_get_real_ns();
>  		ns -= 5000000000; /* 5s ago */
>  		pl->first_overflow_timestamp = cpu_to_le64(ns);
> 
> base-commit: e9a6fb0bcdd7609be6969112f3fbfcce3b1d4a7c


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow
  2025-11-16  1:30 [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow Alison Schofield
  2025-11-18  2:04 ` Ira Weiny
  2025-11-18 23:10 ` Dave Jiang
@ 2025-11-18 23:34 ` Dave Jiang
  2 siblings, 0 replies; 4+ messages in thread
From: Dave Jiang @ 2025-11-18 23:34 UTC (permalink / raw)
  To: Alison Schofield, Davidlohr Bueso, Jonathan Cameron, Vishal Verma,
	Ira Weiny, Dan Williams
  Cc: linux-cxl



On 11/15/25 6:30 PM, Alison Schofield wrote:
> mock_get_event() uses an uninitialized local variable, nr_overflow, to
> populate the overflow_err_count field. That results in incorrect
> overflow_err_count values in mocked cxl_overflow trace events, such as
> this case where the records are reported as 0 and should be non-zero:
> 
> [] cxl_overflow: memdev=mem7 host=cxl_mem.6 serial=7: log=Failure : 0 records from 1763228189130895685 to 1763228193130896180
> 
> Fix by using log->nr_overflow and remove the unused local variable.
> 
> A follow-up change was considered in cxl_mem_get_records_log() to
> confirm that the overflow_err_count is non-zero when the overflow flag
> is set [1]. Since the driver has no functional dependency on this
> constraint, and a device that violates this specific requirement does
> not cause incorrect driver behavior, no validation check is added.
> 
> [1] CXL 3.2, Table 8-65 Get Event Records Output Payload
> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>

Applied to cxl/next
f1840efdb2bf cxl/test: Assign overflow_err_count from log->nr_overflow

> ---
>  tools/testing/cxl/test/mem.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c
> index d533481672b7..9853bccfa185 100644
> --- a/tools/testing/cxl/test/mem.c
> +++ b/tools/testing/cxl/test/mem.c
> @@ -256,7 +256,6 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
>  {
>  	struct cxl_get_event_payload *pl;
>  	struct mock_event_log *log;
> -	u16 nr_overflow;
>  	u8 log_type;
>  	int i;
>  
> @@ -299,7 +298,7 @@ static int mock_get_event(struct device *dev, struct cxl_mbox_cmd *cmd)
>  		u64 ns;
>  
>  		pl->flags |= CXL_GET_EVENT_FLAG_OVERFLOW;
> -		pl->overflow_err_count = cpu_to_le16(nr_overflow);
> +		pl->overflow_err_count = cpu_to_le16(log->nr_overflow);
>  		ns = ktime_get_real_ns();
>  		ns -= 5000000000; /* 5s ago */
>  		pl->first_overflow_timestamp = cpu_to_le64(ns);
> 
> base-commit: e9a6fb0bcdd7609be6969112f3fbfcce3b1d4a7c


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-11-18 23:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-16  1:30 [PATCH] cxl/test: Assign overflow_err_count from log->nr_overflow Alison Schofield
2025-11-18  2:04 ` Ira Weiny
2025-11-18 23:10 ` Dave Jiang
2025-11-18 23:34 ` Dave Jiang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox