From: sashiko-bot@kernel.org
To: "Michael J. Ruhl" <michael.j.ruhl@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v11 16/20] drm/xe/vsec: Crescent Island PMT callbacks
Date: Wed, 23 Sep 2026 18:28:34 +0000 [thread overview]
Message-ID: <20260923182834.A8C601F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260923181115.2514193-38-michael.j.ruhl@intel.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] goto mixing: goto-based error handling mixed with scoped_guard()
--
commit e14ac202349f1aadb0ba7078894729003942c9fe
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
drm/xe/vsec: Crescent Island PMT callbacks
This commit introduces the necessary callbacks to get the status and control
information for Crescent Island (CRI) PMT usage. It adds xe_pmt_read_reg() and
xe_pmt_write_reg() to access the discovery status and control areas, and
registers the CRI PMT functionality.
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index a814d7151eeae..0f6e3be520c09 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
[ ... ]
> +static int xe_pmt_read_reg(struct device *dev, u32 guid, u32 *reg, u32 offset)
> +{
> + struct xe_device *xe = kdev_to_xe_device(dev);
> + void __iomem *disc_addr = xe->mmio.regs + xe->pmt.base_offset;
> + int ret = 0;
> + u32 inst;
> + int idx;
> +
> + if (!drm_dev_enter(&xe->drm, &idx))
> + return -ENODEV;
> +
> + if (FIELD_GET(GUID_DEVICE_ID, guid) != CRI_DEVICE_ID ||
> + FIELD_GET(GUID_CAP_TYPE, guid) != CRASHLOG) {
> + ret = -EINVAL;
> + goto dev_exit;
> + }
> +
> + inst = FIELD_GET(GUID_RECORD_ID, guid) == PUNIT ?
> + CRI_CRASHLOG_PUNIT_DISC_OFFSET : CRI_CRASHLOG_OOBMSM_DISC_OFFSET;
> + disc_addr += inst + offset;
> +
> + xe_pm_runtime_get(xe);
> +
> + scoped_guard(mutex, &xe->pmt.lock) {
> + xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
> +
> + *reg = readl(disc_addr);
> + }
> +
> + xe_pm_runtime_put(xe);
> +
> +dev_exit:
> + drm_dev_exit(idx);
> +
> + return ret;
> +}
[Severity: Low]
Does this violate the cleanup API contract by mixing manual goto-based cleanup
in xe_pmt_read_reg() with scope-based cleanup via scoped_guard()?
According to the subsystem guidelines in include/linux/cleanup.h, we should
either convert all resources that need a goto cleanup to scope-based cleanup,
or convert none of them. While this specific code path in
drivers/gpu/drm/xe/xe_vsec.c avoids immediate resource leaks because the
scope exits cleanly before the goto labels are reached, this architectural
pattern creates confusing ownership semantics and increases the risk of
double-free or resource leaks during future refactoring.
> +
> +static int xe_pmt_write_reg(struct device *dev, u32 guid, u32 reg, u32 offset)
> +{
> + struct xe_device *xe = kdev_to_xe_device(dev);
> + void __iomem *disc_addr = xe->mmio.regs + xe->pmt.base_offset;
> + int ret = 0;
> + u32 inst;
> + int idx;
> +
> + if (!drm_dev_enter(&xe->drm, &idx))
> + return -ENODEV;
> +
> + if (FIELD_GET(GUID_DEVICE_ID, guid) != CRI_DEVICE_ID ||
> + FIELD_GET(GUID_CAP_TYPE, guid) != CRASHLOG) {
> + ret = -EINVAL;
> + goto dev_exit;
> + }
> +
> + inst = FIELD_GET(GUID_RECORD_ID, guid) == PUNIT ?
> + CRI_CRASHLOG_PUNIT_DISC_OFFSET : CRI_CRASHLOG_OOBMSM_DISC_OFFSET;
> + disc_addr += inst + offset;
> +
> + xe_pm_runtime_get(xe);
> +
> + scoped_guard(mutex, &xe->pmt.lock) {
> + xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
> +
> + writel(reg, disc_addr);
> + }
> +
> + xe_pm_runtime_put(xe);
> +
> +dev_exit:
> + drm_dev_exit(idx);
> +
> + return ret;
> +}
[Severity: Low]
Similarly here in xe_pmt_write_reg(), is it appropriate to mix the goto dev_exit
error handling with the scoped_guard() block?
As noted above, mixing these two cleanup styles in the same function is
discouraged to prevent confusing semantics in the execution paths.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923181115.2514193-22-michael.j.ruhl@intel.com?part=16
next prev parent reply other threads:[~2026-09-23 18:28 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 18:11 [PATCH v11 00/20] Crescent Island PMT support Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 01/20] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 02/20] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 04/20] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 05/20] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
2026-09-23 18:29 ` sashiko-bot
2026-09-29 13:12 ` Rodrigo Vivi
2026-09-23 18:11 ` [PATCH v11 06/20] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 07/20] drm/xe/vsec: Correct locking order Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 08/20] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 10/20] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
2026-09-23 18:18 ` sashiko-bot
2026-09-23 18:11 ` [PATCH v11 11/20] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 12/20] drm/xe/vsec: Update VSEC probe order Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 13/20] drm/xe/vsec: Add base_offset to allow for more flexibilty Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 14/20] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 15/20] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 16/20] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
2026-09-23 18:28 ` sashiko-bot [this message]
2026-09-23 18:11 ` [PATCH v11 17/20] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
2026-09-23 18:31 ` sashiko-bot
2026-09-30 4:09 ` Rodrigo Vivi
2026-09-30 12:57 ` Ruhl, Michael J
2026-09-30 13:04 ` Rodrigo Vivi
2026-09-23 18:11 ` [PATCH v11 18/20] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 19/20] drm/xe/vsec: Update PMT " Michael J. Ruhl
2026-09-23 18:11 ` [PATCH v11 20/20] drm/xe/vsec: Refactor platform check Michael J. Ruhl
2026-09-23 18:20 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev13) Patchwork
2026-09-23 18:22 ` ✓ CI.KUnit: success " Patchwork
2026-09-23 20:26 ` ✓ Xe.CI.BAT: " Patchwork
2026-09-24 8:49 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-09-29 8:12 ` [PATCH v11 00/20] Crescent Island PMT support Ilpo Järvinen
2026-09-29 13:20 ` Rodrigo Vivi
2026-09-30 6:23 ` Ilpo Järvinen
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=20260923182834.A8C601F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=michael.j.ruhl@intel.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.