2024-03-15 10:54:51

by Yuquan Wang

[permalink] [raw]
Subject: [PATCH 1/1] cxl/mem: Fix for the index of Clear Event Record Handle

The dev_dbg info for Clear Event Records mailbox command would report
the handle of the next record to clear not the current one.

This was because the index 'i' had incremented before printing the
current handle value.

This fix also adjusts the index variable name from 'i' to 'clear_cnt'
which can be easier for developers to distinguish and understand.

Signed-off-by: Yuquan Wang <[email protected]>
---
drivers/cxl/core/mbox.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
index 9adda4795eb7..3ca2845ae6aa 100644
--- a/drivers/cxl/core/mbox.c
+++ b/drivers/cxl/core/mbox.c
@@ -881,7 +881,7 @@ static int cxl_clear_event_record(struct cxl_memdev_state *mds,
struct cxl_mbox_cmd mbox_cmd;
u16 cnt;
int rc = 0;
- int i;
+ int clear_cnt;

/* Payload size may limit the max handles */
if (pl_size > mds->payload_size) {
@@ -908,28 +908,29 @@ static int cxl_clear_event_record(struct cxl_memdev_state *mds,
* Clear Event Records uses u8 for the handle cnt while Get Event
* Record can return up to 0xffff records.
*/
- i = 0;
+ clear_cnt = 0;
for (cnt = 0; cnt < total; cnt++) {
struct cxl_event_record_raw *raw = &get_pl->records[cnt];
struct cxl_event_generic *gen = &raw->event.generic;

- payload->handles[i++] = gen->hdr.handle;
+ payload->handles[clear_cnt] = gen->hdr.handle;
dev_dbg(mds->cxlds.dev, "Event log '%d': Clearing %u\n", log,
- le16_to_cpu(payload->handles[i]));
+ le16_to_cpu(payload->handles[clear_cnt]));

- if (i == max_handles) {
- payload->nr_recs = i;
+ clear_cnt++;
+ if (clear_cnt == max_handles) {
+ payload->nr_recs = clear_cnt;
rc = cxl_internal_send_cmd(mds, &mbox_cmd);
if (rc)
goto free_pl;
- i = 0;
+ clear_cnt = 0;
}
}

/* Clear what is left if any */
- if (i) {
- payload->nr_recs = i;
- mbox_cmd.size_in = struct_size(payload, handles, i);
+ if (clear_cnt) {
+ payload->nr_recs = clear_cnt;
+ mbox_cmd.size_in = struct_size(payload, handles, clear_cnt);
rc = cxl_internal_send_cmd(mds, &mbox_cmd);
if (rc)
goto free_pl;
--
2.34.1



2024-03-15 17:53:43

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH 1/1] cxl/mem: Fix for the index of Clear Event Record Handle

Yuquan Wang wrote:
> The dev_dbg info for Clear Event Records mailbox command would report
> the handle of the next record to clear not the current one.
>
> This was because the index 'i' had incremented before printing the
> current handle value.
>
> This fix also adjusts the index variable name from 'i' to 'clear_cnt'
> which can be easier for developers to distinguish and understand.
>
> Signed-off-by: Yuquan Wang <[email protected]>
> ---
> drivers/cxl/core/mbox.c | 21 +++++++++++----------
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
> index 9adda4795eb7..3ca2845ae6aa 100644
> --- a/drivers/cxl/core/mbox.c
> +++ b/drivers/cxl/core/mbox.c
> @@ -881,7 +881,7 @@ static int cxl_clear_event_record(struct cxl_memdev_state *mds,
> struct cxl_mbox_cmd mbox_cmd;
> u16 cnt;
> int rc = 0;
> - int i;
> + int clear_cnt;
>
> /* Payload size may limit the max handles */
> if (pl_size > mds->payload_size) {
> @@ -908,28 +908,29 @@ static int cxl_clear_event_record(struct cxl_memdev_state *mds,
> * Clear Event Records uses u8 for the handle cnt while Get Event
> * Record can return up to 0xffff records.
> */
> - i = 0;
> + clear_cnt = 0;
> for (cnt = 0; cnt < total; cnt++) {
> struct cxl_event_record_raw *raw = &get_pl->records[cnt];
> struct cxl_event_generic *gen = &raw->event.generic;
>
> - payload->handles[i++] = gen->hdr.handle;
> + payload->handles[clear_cnt] = gen->hdr.handle;
> dev_dbg(mds->cxlds.dev, "Event log '%d': Clearing %u\n", log,
> - le16_to_cpu(payload->handles[i]));

Couldn't this patch be much smaller by just changing this to "i - 1",
because from the description the only problem is the dev_dbg()
statement, so just fix that.