From: sashiko-bot@kernel.org
To: "Vladimir Oltean" <vladimir.oltean@nxp.com>
Cc: wsa+renesas@sang-engineering.com, linux-pci@vger.kernel.org
Subject: Re: [PATCH v8 phy-next 02/31] ata: add <linux/pm_runtime.h> where missing
Date: Thu, 07 May 2026 07:59:58 +0000 [thread overview]
Message-ID: <20260507075958.82CD8C2BCC7@smtp.kernel.org> (raw)
In-Reply-To: <20260505100523.1922388-3-vladimir.oltean@nxp.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Callers of `ahci_rpm_get_port()` unconditionally ignore the return value of `pm_runtime_get_sync()`, potentially accessing suspended hardware.
- [High] AHCI interrupt handlers process interrupts without checking if the device is runtime-active, leading to spurious handling and MMIO reads on suspended devices.
--
commit 4c8bdcda88f27ad5b4d7ed5e7d48bab865cfb2dd
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
ata: add <linux/pm_runtime.h> where missing
This patch adds the <linux/pm_runtime.h> header to several AHCI drivers
that use runtime PM operations but previously relied on an indirect
inclusion from <linux/phy/phy.h>.
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index 1d73a53370cf3..1396a53bd6df3 100644
> --- a/drivers/ata/ahci.c
> +++ b/drivers/ata/ahci.c
> @@ -26,6 +26,7 @@
> #include <linux/device.h>
> #include <linux/dmi.h>
> #include <linux/gfp.h>
> +#include <linux/pm_runtime.h>
> #include <scsi/scsi_host.h>
> #include <scsi/scsi_cmnd.h>
> #include <linux/libata.h>
While reviewing the addition of runtime PM headers, I noticed a pre-existing
regression with how interrupts are handled in this driver.
Could ahci_single_level_irq_intr() be invoked for a runtime-suspended
device due to shared interrupts (IRQF_SHARED)?
If the device is powered down, would reading HOST_IRQ_STAT return 0xffffffff
and cause the handler to call ata_qc_complete_multiple() with fatal errors
(like PORT_IRQ_FREEZE and PORT_IRQ_ERROR), eventually triggering severe ATA
error handling and port resets?
Would using pm_runtime_get_if_active() before accessing the hardware registers
prevent this issue?
[ ... ]
> diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
> index c79abdfcd7a9b..e0de4703a4f2d 100644
> --- a/drivers/ata/libahci.c
> +++ b/drivers/ata/libahci.c
> @@ -30,6 +30,7 @@
> #include <scsi/scsi_cmnd.h>
> #include <linux/libata.h>
> #include <linux/pci.h>
> +#include <linux/pm_runtime.h>
> #include "ahci.h"
> #include "libata.h"
>
I also noticed another pre-existing regression in this driver.
Does ahci_rpm_get_port() need to have its return value checked by callers?
It looks like it directly returns the result of pm_runtime_get_sync(), but
callers like ahci_show_port_cmd(), ahci_read_em_buffer(), and
ahci_port_resume() seem to unconditionally ignore this return value.
If pm_runtime_get_sync() fails, could the callers proceed to access
memory-mapped I/O registers (such as PORT_CMD or HOST_EM_CTL) on a suspended
device, potentially causing a synchronous external abort on ARM or invalid
reads on x86?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260505100523.1922388-1-vladimir.oltean@nxp.com?part=2
next prev parent reply other threads:[~2026-05-07 7:59 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-05 10:04 [PATCH v8 phy-next 00/31] Split Generic PHY consumer and provider API Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` [PATCH v8 phy-next 01/31] PCI: cadence: Preserve all error codes in cdns_plat_pcie_probe() Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 16:26 ` Bjorn Helgaas
2026-05-05 16:26 ` Bjorn Helgaas
2026-05-05 16:26 ` Bjorn Helgaas
2026-05-05 16:26 ` Bjorn Helgaas
2026-05-07 7:59 ` sashiko-bot
2026-05-07 15:50 ` Bjorn Helgaas
2026-05-05 10:04 ` [PATCH v8 phy-next 02/31] ata: add <linux/pm_runtime.h> where missing Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-07 7:59 ` sashiko-bot [this message]
2026-05-05 10:04 ` [PATCH v8 phy-next 03/31] PCI: Add missing headers transitively included by <linux/phy/phy.h> Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` [PATCH v8 phy-next 04/31] usb: add " Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` [PATCH v8 phy-next 05/31] drm: add <linux/pm_runtime.h> where missing Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` [PATCH v8 phy-next 06/31] phy: " Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` [PATCH v8 phy-next 07/31] phy: spacemit: include missing <linux/phy/phy.h> Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:04 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 08/31] net: lan969x: include missing <linux/of.h> Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 09/31] PCI: Remove device links to PHY Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 7:59 ` sashiko-bot
2026-05-07 15:47 ` Bjorn Helgaas
2026-05-08 2:14 ` Hans Zhang
2026-05-05 10:05 ` [PATCH v8 phy-next 10/31] scsi: ufs: exynos: use dedicated API for updating PHY bus width Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 7:59 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 11/31] scsi: ufs: qcom: call phy_init() before phy_power_on() Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 12/31] scsi: ufs: qcom: make use of QMP PHY dynamic gear switching ability Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 13/31] scsi: ufs: qcom: keep separate track of PHY power state Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 14/31] scsi: ufs: qcom: include missing <linux/interrupt.h> Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 15/31] drm/rockchip: dw_hdmi: avoid direct dereference of phy->dev.of_node Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-20 14:21 ` Heiko Stuebner
2026-05-20 14:21 ` Heiko Stuebner
2026-05-20 14:21 ` Heiko Stuebner
2026-05-20 14:21 ` Heiko Stuebner
2026-05-20 15:20 ` Vladimir Oltean
2026-05-20 15:20 ` Vladimir Oltean
2026-05-20 15:20 ` Vladimir Oltean
2026-05-20 15:20 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 16/31] usb: host: tegra: " Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 17/31] usb: gadget: tegra-xudc: " Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 18/31] phy: move provider API out of public <linux/phy/phy.h> Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 19/31] phy: make phy_get_mode(), phy_get_bus_width() NULL tolerant Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 20/31] phy: introduce phy_get_max_link_rate() helper for consumers Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 21/31] drm/rockchip: dsi: include PHY provider header Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 22/31] drm: bridge: cdns-mhdp8546: use consumer API for getting PHY bus width Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 23/31] media: sunxi: a83-mips-csi2: include PHY provider header Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 24/31] net: renesas: rswitch: " Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 25/31] pinctrl: tegra-xusb: " Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 26/31] power: supply: cpcap-charger: include missing <linux/property.h> Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 27/31] phy: move ulpi_phy.h from include/linux/phy/ to drivers/phy/ Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 28/31] phy: include PHY provider header (1/2) Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 29/31] phy: include PHY provider header (2/2) Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` [PATCH v8 phy-next 30/31] phy: remove temporary provider compatibility from consumer header Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-07 8:00 ` sashiko-bot
2026-05-05 10:05 ` [PATCH v8 phy-next 31/31] MAINTAINERS: add regexes for linux-phy Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-05 10:05 ` Vladimir Oltean
2026-05-21 9:38 ` (subset) [PATCH v8 phy-next 00/31] Split Generic PHY consumer and provider API Heiko Stuebner
2026-05-21 9:38 ` Heiko Stuebner
2026-05-21 9:38 ` Heiko Stuebner
2026-06-03 21:39 ` Sebastian Reichel
2026-06-03 21:39 ` Sebastian Reichel
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=20260507075958.82CD8C2BCC7@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=sashiko@lists.linux.dev \
--cc=vladimir.oltean@nxp.com \
--cc=wsa+renesas@sang-engineering.com \
/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.