All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jpb@kernel.org>
To: sashiko-reviews@lists.linux.dev
Cc: Ryan Roberts <ryan.roberts@arm.com>, dri-devel@lists.freedesktop.org
Subject: Re: [RFC PATCH v1 4/8] misc/arm-cla: Initialize devices on CPU bringup
Date: Wed, 30 Sep 2026 12:54:55 +0100	[thread overview]
Message-ID: <20260930115455.GD480985@myrica> (raw)
In-Reply-To: <20260717105847.93A7E1F000E9@smtp.kernel.org>

On Fri, Jul 17, 2026 at 10:58:47AM +0000, sashiko-bot@kernel.org wrote:
> > +	reg = FIELD_PREP(CLA_TSOFFOWNER_PL, cla_kernel_pl);
> > +	ret = cla_op_regread(dev, accid, CLA_REG_TSOFFOWNER, 1, &reg);
> 
> [Severity: Medium]
> Does this code mistakenly call cla_op_regread() instead of cla_op_regwrite()
> here in cla_reset_ts()? Doing so will clobber the newly prepared configuration
> value with the current hardware state, meaning the kernel fails to claim
> ownership of the TSOFFOWNER register. This could cause the subsequent writes
> to CLA_REG_TSVOFF and CLA_REG_TSPOFF to be ignored.

Yes


> > +	if (!ret) {
> > +		reg = 0;
> > +		ret = cla_op_regwrite(dev, accid, CLA_REG_TSVOFF, 1, &reg);
> [ ... ]
> > +static int cla_dev_setup(unsigned int cpu)
> > +{
> [ ... ]
> > +	/* Clear DATA and LRESP_DATANZ */
> > +	for (i = 0; i < CLA_NUM_DATA_REGS; i++)
> > +		cla_reg_write(dev, CLA_REG_DATA(i), 0);
> 
> [Severity: Medium]
> The comment above indicates this should clear DATA and LRESP_DATANZ, but is
> there a missing cla_reg_write() for CLA_REG_LRESP here in cla_dev_setup()? If
> left uncleared, stale response data from before the CPU was offlined might
> remain and confuse userspace or the driver later.

No, DATANZ is tied to DATA


> > +
> > +	/*
> > +	 * Reset all accelerators. We restrict PLxCTRL to the accelerators that
> > +	 * are attached and well behaved.
> > +	 */
> > +	for (accid = 0; accid < CLA_NUM_ACC; accid++) {
> > +		ret = cla_dev_setup_accel(dev, accid);
> > +		if (ret > 0)
> > +			continue;
> > +		else if (ret < 0)
> > +			goto err;
> > +
> > +		dev->accelerators |= (1 << accid);
> 
> [Severity: Medium]
> Could this accumulate stale state across CPU hotplug events?
> 
> Because dev->accelerators is never explicitly cleared to 0 at the start of
> cla_dev_setup() or during teardown, if a CPU is offlined and an accelerator
> subsequently fails to probe on the next online event, it will incorrectly
> remain in the dev->accelerators mask.
> 
> During teardown, cla_op_reset_all() might then attempt to reset a non-existent
> accelerator, fail, and mark the entire device as broken.

The FW does not change the visible accelerators across CPUHP events


> > +int cla_op_reset_all(struct cla_dev *dev)
> > +{
> > +	int ret;
> > +	unsigned int accid;
> > +
> > +	cla_for_each_accid(dev, accid) {
> > +		ret = cla_op_reset(dev, accid);
> > +		if (ret)
> > +			return ret < 0 ? ret : -ENODEV;
> 
> [Severity: High]
> Does returning immediately on the first error leave the remaining attached
> accelerators running?
> 
> When cla_op_reset_all() is called during CPU teardown, an early abort means
> subsequent accelerators are never quiesced. As the CPU goes offline, these
> active hardware accelerators could continue issuing DMA transactions or raising
> interrupts, posing a risk of memory corruption.

I wouldn't put too much effort into handling HW failures because they
normally don't happen at this level, but finishing the iteration
even in case of failure seems simple enough here.


  reply	other threads:[~2026-09-30 11:54 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-17 10:47 [RFC PATCH v1 0/8] Arm Core Local Accelerator Driver Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 1/8] misc/arm-cla: Add driver skeleton and documentation Ryan Roberts
2026-07-17 10:56   ` sashiko-bot
2026-09-30 11:51     ` Jean-Philippe Brucker
2026-07-17 13:49   ` Arnd Bergmann
2026-07-17 15:44     ` Ryan Roberts
2026-07-17 16:10       ` Arnd Bergmann
2026-07-20  9:54         ` Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 2/8] misc/arm-cla: Add launch operation helpers Ryan Roberts
2026-07-17 11:01   ` sashiko-bot
2026-09-30 11:52     ` Jean-Philippe Brucker
2026-07-17 12:16   ` Arnd Bergmann
2026-08-04 11:03     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 3/8] misc/arm-cla: Probe firmware-described devices Ryan Roberts
2026-07-17 10:57   ` sashiko-bot
2026-09-30 11:53     ` Jean-Philippe Brucker
2026-07-17 12:25   ` Arnd Bergmann
2026-07-17 12:36     ` Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 4/8] misc/arm-cla: Initialize devices on CPU bringup Ryan Roberts
2026-07-17 10:58   ` sashiko-bot
2026-09-30 11:54     ` Jean-Philippe Brucker [this message]
2026-07-17 10:47 ` [RFC PATCH v1 5/8] misc/arm-cla: Accelerator context save and restore Ryan Roberts
2026-07-17 10:58   ` sashiko-bot
2026-09-30 11:55     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 6/8] misc/arm-cla: Set up memory translation context Ryan Roberts
2026-07-17 11:02   ` sashiko-bot
2026-09-30 11:56     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 7/8] misc/arm-cla: Manage domain contexts Ryan Roberts
2026-07-17 11:01   ` sashiko-bot
2026-09-30 11:57     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 8/8] misc/arm-cla: Add userspace interface Ryan Roberts
2026-07-17 11:10   ` sashiko-bot
2026-09-30 11:58     ` Jean-Philippe Brucker
2026-07-17 12:54   ` Arnd Bergmann
2026-07-17 14:35     ` Ryan Roberts
2026-07-17 15:31       ` Arnd Bergmann
2026-07-17 16:21         ` Ryan Roberts
2026-07-17 20:11           ` Arnd Bergmann
2026-08-19 16:08             ` Ryan Roberts
2026-07-17 11:33 ` [RFC PATCH v1 0/8] Arm Core Local Accelerator Driver Will Deacon
2026-07-17 12:09   ` Marc Zyngier
2026-07-17 12:33     ` Ryan Roberts
2026-07-19  7:47       ` Marc Zyngier
2026-07-17 12:30   ` Ryan Roberts
2026-07-17 13:32   ` Jason Gunthorpe
2026-07-17 13:42     ` Ryan Roberts

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=20260930115455.GD480985@myrica \
    --to=jpb@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ryan.roberts@arm.com \
    --cc=sashiko-reviews@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.