All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Arun Muthusamy" <arun.muthusamy@gaisler.com>
Cc: krzk+dt@kernel.org, conor+dt@kernel.org, robh@kernel.org,
	devicetree@vger.kernel.org
Subject: Re: [PATCH v7 09/15] can: grcan: Add saving and restoring of CAN FD baud-rate registers
Date: Fri, 08 May 2026 21:35:18 +0000	[thread overview]
Message-ID: <20260508213519.780E5C2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260508070121.6918-10-arun.muthusamy@gaisler.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The patch claims to save and restore CAN FD baud-rate registers upon reset but fails to restore the data bit-timing register (`regs->fdbtr`), causing it to be permanently wiped.
- [Medium] The `GENMASK` definitions for the GRCANFD `NBTR` register fields overlap, creating a latent bug in the hardware interface definition.
--

commit c685fd29f8a299a3b71b10448a638f1df08b5e0d
Author: Daniel Hellstrom <daniel@gaisler.com>

can: grcan: Add saving and restoring of CAN FD baud-rate registers

While reset the GRCAN baud-rates are preserved, since GRCANFD has the
baud-rate in different registers we need to add saving of those
registers too.

> diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c
> index 6e0a393785e86..ccf4032ed642e 100644
> --- a/drivers/net/can/grcan.c
> +++ b/drivers/net/can/grcan.c
> @@ -528,6 +528,8 @@ static void grcan_reset(struct net_device *dev)
>  
>  	/* Turn off hardware filtering - regs->rxcode set to 0 by reset */
>  	grcan_write_reg(&regs->rxmask, 0);
> +
> +	priv->hwcap->set_bittiming(dev);

Does this fully restore the CAN FD baud-rate registers?

The commit message indicates that the GRCANFD baud-rate registers need
to be saved and restored, but it looks like set_bittiming() only sets the
nominal bit-timing register (regs->nbtr):

drivers/net/can/grcan.c:grcanfd_set_bittiming() {
    ...
	timing |= FIELD_PREP(GRCANFD_NBTR_SJW, sjw);
	timing |= FIELD_PREP(GRCANFD_NBTR_PS1, ps1);
	timing |= FIELD_PREP(GRCANFD_NBTR_PS2, ps2);
	timing |= FIELD_PREP(GRCANFD_NBTR_SCALER, scaler);
	netdev_dbg(dev, "setting timing=0x%x\n", timing);
	grcan_write_bits(&regs->nbtr, timing, GRCANFD_NBTR_TIMING);

	return 0;
}

Since the hardware reset clears the registers, and the fast data bit-timing
register (regs->fdbtr) is not saved before the reset or recalculated here,
will regs->fdbtr be permanently wiped?

This could cause the data baud-rate scaler to become zero and break CAN FD
data phase communication if Bit Rate Switch (BRS) is enabled.

Additionally, while looking at the register field definitions used by
set_bittiming(), do the GENMASK definitions for the GRCANFD NBTR overlap?

drivers/net/can/grcan.c:
#define GRCANFD_NBTR_SCALER     GENMASK(23, 16)
#define GRCANFD_NBTR_PS1        GENMASK(17, 10)

Bits 16 and 17 are included in both GRCANFD_NBTR_SCALER and GRCANFD_NBTR_PS1.

While it seems the current maximum phase segment limit prevents active
collisions at runtime, any future increase or use of FIELD_GET could lead
to silent data corruption because the scaler and ps1 bits bleed into
each other.

>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260508070121.6918-1-arun.muthusamy@gaisler.com?part=9

  reply	other threads:[~2026-05-08 21:35 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-08  7:01 [PATCH v7 RESEND 00/15] can: grcan: Enhance driver with CANFD Support and Improvements Arun Muthusamy
2026-05-08  7:01 ` [PATCH v7 01/15] dt-bindings: Add vendor prefix for Frontgrade Gaisler AB Arun Muthusamy
2026-05-08  7:01 ` [PATCH v7 02/15] dt-bindings: net: can: gaisler,grcan: Convert to DT schema Arun Muthusamy
2026-05-08 18:37   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 03/15] MAINTAINERS: Add maintainers for GRCAN CAN network driver Arun Muthusamy
2026-05-08  7:01 ` [PATCH v7 04/15] can: grcan: Add clock handling Arun Muthusamy
2026-05-08 18:50   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 05/15] can: grcan: Replace bit timing macros with literal values Arun Muthusamy
2026-05-08  7:01 ` [PATCH v7 06/15] can: grcan: Simplify timing configuration Arun Muthusamy
2026-05-08 19:28   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 07/15] can: grcan: add FD capability detection and nominal bit-timing Arun Muthusamy
2026-05-08 19:45   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 08/15] can: grcan: set DMA mask for GRCAN and GRCANFD to 32-bit Arun Muthusamy
2026-05-08 19:53   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 09/15] can: grcan: Add saving and restoring of CAN FD baud-rate registers Arun Muthusamy
2026-05-08 21:35   ` sashiko-bot [this message]
2026-05-08  7:01 ` [PATCH v7 10/15] can: grcan: Reserve space between cap and next register to align with address layout Arun Muthusamy
2026-05-08  7:01 ` [PATCH v7 11/15] can: grcan: Refactor GRCAN DMA buffer to use structured memory layout Arun Muthusamy
2026-05-08 22:03   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 12/15] can: grcan: Add CANFD TX support alongside legacy CAN Arun Muthusamy
2026-05-08 22:40   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 13/15] can: grcan: Add CANFD RX " Arun Muthusamy
2026-05-08 23:08   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 14/15] can: grcan: Update echo skb handling to match variable length CANFD frame Arun Muthusamy
2026-05-08 23:25   ` sashiko-bot
2026-05-08  7:01 ` [PATCH v7 15/15] can: grcan: Advertise CANFD capability Arun Muthusamy
2026-05-08 23:50   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260508213519.780E5C2BCB0@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=arun.muthusamy@gaisler.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=robh@kernel.org \
    --cc=sashiko@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.