All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sebastian Reichel" <sebastian.reichel@collabora.com>
Cc: linux-phy@lists.infradead.org, robh@kernel.org,
	conor+dt@kernel.org, neil.armstrong@linaro.org,
	olteanv@gmail.com, devicetree@vger.kernel.org, vkoul@kernel.org
Subject: Re: [PATCH v13 28/35] phy: core: add notifier infrastructure
Date: Tue, 14 Jul 2026 20:10:11 +0000	[thread overview]
Message-ID: <20260714201012.134881F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260714-rockchip-usbdp-cleanup-v13-28-6cb3e769d4c5@collabora.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Missing rollback mechanism in PHY reset notifier chain
--

--- Patch [28]: [PATCH v13 28/35] phy: core: add notifier infrastructure ---
commit ec60b7ba41c261654c48fb56546b6b42f913f6e5
Author: Sebastian Reichel <sebastian.reichel@collabora.com>

phy: core: add notifier infrastructure

This commit introduces a new PHY notifier API to allow consumer drivers to
hook into reset events from a PHY device. This helps multi-port PHY devices
handle configuration or cable orientation changes without causing undefined
behavior in consumers.

> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index 21aaf2f76e53e..51d261daae7a9 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c

[ ... ]

> +int phy_notify_reset(struct phy *phy, enum phy_notification event)
> +{
> +	int ret;
> +
> +	if (!phy)
> +		return 0;
> +
> +	ret = blocking_notifier_call_chain(&phy->notifier, event, phy);
> +	return notifier_to_errno(ret);
> +}

[Severity: Medium]
Since blocking_notifier_call_chain() aborts on the first error, does this
leave earlier consumers permanently suspended?

If phy_notify_reset() is called with PHY_NOTIFY_PRE_RESET on a multi-consumer
PHY, and the notifier chain stops halfway through due to an error, the provider
receives a negative error code. The earlier consumers in the chain will have
already handled PHY_NOTIFY_PRE_RESET and quiesced their hardware.

Would it be safer to introduce a rollback mechanism to notify the successfully
suspended consumers that the reset has been aborted, so they don't remain
stuck indefinitely?

> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index ea47975e288ae..3779a4d0a02c3 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h

[ ... ]

> +/**
> + * enum phy_notification - PHY notification events
> + * @PHY_NOTIFY_PRE_RESET: PHY is about to be reset, consumers should quiesce
> + * @PHY_NOTIFY_POST_RESET: PHY reset is complete, consumers may resume
> + */
> +enum phy_notification {
> +	PHY_NOTIFY_PRE_RESET,
> +	PHY_NOTIFY_POST_RESET,
> +};

[Severity: Medium]
Is there a missing abort event here to support the rollback path mentioned
above?

If a pre-reset notification fails, broadcasting PHY_NOTIFY_POST_RESET might
break consumers that were never notified of the pre-reset in the first place.
Adding a dedicated abort event might give consumers a safe way to recover when
a provider has to cancel a planned reset.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260714-rockchip-usbdp-cleanup-v13-0-6cb3e769d4c5@collabora.com?part=28

-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

WARNING: multiple messages have this Message-ID (diff)
From: sashiko-bot@kernel.org
To: "Sebastian Reichel" <sebastian.reichel@collabora.com>
Cc: linux-phy@lists.infradead.org, robh@kernel.org,
	conor+dt@kernel.org, neil.armstrong@linaro.org,
	olteanv@gmail.com, devicetree@vger.kernel.org, vkoul@kernel.org
Subject: Re: [PATCH v13 28/35] phy: core: add notifier infrastructure
Date: Tue, 14 Jul 2026 20:10:11 +0000	[thread overview]
Message-ID: <20260714201012.134881F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260714-rockchip-usbdp-cleanup-v13-28-6cb3e769d4c5@collabora.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Missing rollback mechanism in PHY reset notifier chain
--

--- Patch [28]: [PATCH v13 28/35] phy: core: add notifier infrastructure ---
commit ec60b7ba41c261654c48fb56546b6b42f913f6e5
Author: Sebastian Reichel <sebastian.reichel@collabora.com>

phy: core: add notifier infrastructure

This commit introduces a new PHY notifier API to allow consumer drivers to
hook into reset events from a PHY device. This helps multi-port PHY devices
handle configuration or cable orientation changes without causing undefined
behavior in consumers.

> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index 21aaf2f76e53e..51d261daae7a9 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c

[ ... ]

> +int phy_notify_reset(struct phy *phy, enum phy_notification event)
> +{
> +	int ret;
> +
> +	if (!phy)
> +		return 0;
> +
> +	ret = blocking_notifier_call_chain(&phy->notifier, event, phy);
> +	return notifier_to_errno(ret);
> +}

[Severity: Medium]
Since blocking_notifier_call_chain() aborts on the first error, does this
leave earlier consumers permanently suspended?

If phy_notify_reset() is called with PHY_NOTIFY_PRE_RESET on a multi-consumer
PHY, and the notifier chain stops halfway through due to an error, the provider
receives a negative error code. The earlier consumers in the chain will have
already handled PHY_NOTIFY_PRE_RESET and quiesced their hardware.

Would it be safer to introduce a rollback mechanism to notify the successfully
suspended consumers that the reset has been aborted, so they don't remain
stuck indefinitely?

> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index ea47975e288ae..3779a4d0a02c3 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h

[ ... ]

> +/**
> + * enum phy_notification - PHY notification events
> + * @PHY_NOTIFY_PRE_RESET: PHY is about to be reset, consumers should quiesce
> + * @PHY_NOTIFY_POST_RESET: PHY reset is complete, consumers may resume
> + */
> +enum phy_notification {
> +	PHY_NOTIFY_PRE_RESET,
> +	PHY_NOTIFY_POST_RESET,
> +};

[Severity: Medium]
Is there a missing abort event here to support the rollback path mentioned
above?

If a pre-reset notification fails, broadcasting PHY_NOTIFY_POST_RESET might
break consumers that were never notified of the pre-reset in the first place.
Adding a dedicated abort event might give consumers a safe way to recover when
a provider has to cancel a planned reset.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260714-rockchip-usbdp-cleanup-v13-0-6cb3e769d4c5@collabora.com?part=28

  reply	other threads:[~2026-07-14 20:10 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-14 19:26 [PATCH v13 00/35] phy: rockchip: usbdp: Clean up the mess Sebastian Reichel
2026-07-14 19:26 ` Sebastian Reichel
2026-07-14 19:26 ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 01/35] dt-bindings: phy: rockchip-usbdp: add improved ports scheme Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 02/35] phy: rockchip: usbdp: Update mode_change after error handling Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:54   ` sashiko-bot
2026-07-14 19:54     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 03/35] phy: rockchip: usbdp: Do not lose USB3 PHY status Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:49   ` sashiko-bot
2026-07-14 19:49     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 04/35] phy: rockchip: usbdp: Fix devm_clk_bulk_get_all check Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:48   ` sashiko-bot
2026-07-14 19:48     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 05/35] phy: rockchip: usbdp: Handle missing clock-names DT property gracefully Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:00   ` sashiko-bot
2026-07-14 20:00     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 06/35] phy: rockchip: usbdp: Drop seamless DP takeover Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:01   ` sashiko-bot
2026-07-14 20:01     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 07/35] phy: rockchip: usbdp: Keep clocks running on PHY re-init Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:47   ` sashiko-bot
2026-07-14 19:47     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 08/35] phy: rockchip: usbdp: Amend SSC modulation deviation Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 09/35] phy: rockchip: usbdp: Fix LFPS detect threshold control Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 10/35] phy: rockchip: usbdp: Add missing mode_change update Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:49   ` sashiko-bot
2026-07-14 19:49     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 11/35] phy: rockchip: usbdp: Support single-lane DP Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 12/35] phy: rockchip: usbdp: Limit DP lane count to muxed lanes Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:11   ` sashiko-bot
2026-07-14 20:11     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 13/35] phy: rockchip: usbdp: Rename DP lane functions Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 14/35] phy: rockchip: usbdp: Use FIELD_PREP_WM16_CONST Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 15/35] phy: rockchip: usbdp: Cleanup DP lane selection function Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 16/35] phy: rockchip: usbdp: Register DP aux bridge Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 17/35] phy: rockchip: usbdp: Drop DP HPD handling Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:03   ` sashiko-bot
2026-07-14 20:03     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 18/35] phy: rockchip: usbdp: Rename mode_change to phy_needs_reinit Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:58   ` sashiko-bot
2026-07-14 19:58     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 19/35] phy: rockchip: usbdp: Re-init the PHY on orientation change Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:09   ` sashiko-bot
2026-07-14 20:09     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 20/35] phy: rockchip: usbdp: Factor out lane_mux_sel setup Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:03   ` sashiko-bot
2026-07-14 20:03     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 21/35] phy: rockchip: usbdp: Properly handle TYPEC_STATE_SAFE and TYPEC_STATE_USB Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:22   ` sashiko-bot
2026-07-14 20:22     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 22/35] phy: rockchip: usbdp: Use guard functions for mutex Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 23/35] phy: rockchip: usbdp: Hold mutex in DP PHY configure Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 24/35] phy: rockchip: usbdp: Add some extra debug messages Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 25/35] phy: rockchip: usbdp: Avoid xHCI SErrors Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:11   ` sashiko-bot
2026-07-14 20:11     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 26/35] phy: rockchip: usbdp: Handle rk_udphy_reset_deassert errors Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 27/35] phy: rockchip: usbdp: Only enable USB3 when not in high-speed mode Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:15   ` sashiko-bot
2026-07-14 20:15     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 28/35] phy: core: add notifier infrastructure Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:10   ` sashiko-bot [this message]
2026-07-14 20:10     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 29/35] usb: dwc3: core: support PHY reset notifications Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:15   ` sashiko-bot
2026-07-14 20:15     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 30/35] phy: rockchip: usbdp: Add phy reset notification support Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 31/35] phy: rockchip: usbdp: Drop -EPROBE_DEFER hack Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 32/35] phy: rockchip: usbdp: Rename mode to hw_mode Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:18   ` sashiko-bot
2026-07-14 20:18     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 33/35] phy: rockchip: usbdp: Fix power state handling Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26 ` [PATCH v13 34/35] phy: rockchip: usbdp: Re-init PHY on mux change Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 20:39   ` sashiko-bot
2026-07-14 20:39     ` sashiko-bot
2026-07-14 19:26 ` [PATCH v13 35/35] phy: rockchip: usbdp: Add USB-C state without DP enabled Sebastian Reichel
2026-07-14 19:26   ` Sebastian Reichel
2026-07-14 19:26   ` 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=20260714201012.134881F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=neil.armstrong@linaro.org \
    --cc=olteanv@gmail.com \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=sebastian.reichel@collabora.com \
    --cc=vkoul@kernel.org \
    /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.