drivers/edac/versalnet_edac.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
The current code assumes that only DDR errors have split messages.
Ensures proper logging of non-standard event errors
that may be split across multiple messages.
Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
---
drivers/edac/versalnet_edac.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/edac/versalnet_edac.c b/drivers/edac/versalnet_edac.c
index fc7e4c43b387..a055f54a389b 100644
--- a/drivers/edac/versalnet_edac.c
+++ b/drivers/edac/versalnet_edac.c
@@ -605,6 +605,12 @@ static int rpmsg_cb(struct rpmsg_device *rpdev, void *data,
length = result[MSG_ERR_LENGTH];
offset = result[MSG_ERR_OFFSET];
+ for (i = 0 ; i < length; i++) {
+ k = offset + i;
+ j = ERROR_DATA + i;
+ mc_priv->regs[k] = result[j];
+ }
+
if (result[TOTAL_ERR_LENGTH] > length) {
if (!mc_priv->part_len)
mc_priv->part_len = length;
@@ -615,11 +621,6 @@ static int rpmsg_cb(struct rpmsg_device *rpdev, void *data,
* messages the offset indicates the offset from which the data is to
* be taken
*/
- for (i = 0 ; i < length; i++) {
- k = offset + i;
- j = ERROR_DATA + i;
- mc_priv->regs[k] = result[j];
- }
if (mc_priv->part_len < result[TOTAL_ERR_LENGTH])
return 0;
mc_priv->part_len = 0;
@@ -705,7 +706,7 @@ static int rpmsg_cb(struct rpmsg_device *rpdev, void *data,
/* Convert to bytes */
length = result[TOTAL_ERR_LENGTH] * 4;
log_non_standard_event(sec_type, &amd_versalnet_guid, mc_priv->message,
- sec_sev, (void *)&result[ERROR_DATA], length);
+ sec_sev, (void *)&mc_priv->regs, length);
return 0;
}
--
2.34.1
On Thu, Oct 23, 2025 at 05:01:08PM +0530, Shubhrajyoti Datta wrote:
> The current code assumes that only DDR errors have split messages.
> Ensures proper logging of non-standard event errors
> that may be split across multiple messages.
>
> Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
> ---
>
> drivers/edac/versalnet_edac.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/edac/versalnet_edac.c b/drivers/edac/versalnet_edac.c
> index fc7e4c43b387..a055f54a389b 100644
> --- a/drivers/edac/versalnet_edac.c
> +++ b/drivers/edac/versalnet_edac.c
> @@ -605,6 +605,12 @@ static int rpmsg_cb(struct rpmsg_device *rpdev, void *data,
> length = result[MSG_ERR_LENGTH];
> offset = result[MSG_ERR_OFFSET];
>
> + for (i = 0 ; i < length; i++) {
> + k = offset + i;
> + j = ERROR_DATA + i;
> + mc_priv->regs[k] = result[j];
> + }
> +
> if (result[TOTAL_ERR_LENGTH] > length) {
> if (!mc_priv->part_len)
> mc_priv->part_len = length;
> @@ -615,11 +621,6 @@ static int rpmsg_cb(struct rpmsg_device *rpdev, void *data,
> * messages the offset indicates the offset from which the data is to
> * be taken
> */
I'm guessing you want to move that comment too?
If so, I can move it - you don't have to resend.
> - for (i = 0 ; i < length; i++) {
> - k = offset + i;
> - j = ERROR_DATA + i;
> - mc_priv->regs[k] = result[j];
> - }a
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
© 2016 - 2026 Red Hat, Inc.