From: sashiko-bot@kernel.org
To: "Chih Kai Hsu" <hsu.chih.kai@realtek.com>
Cc: linux-usb@vger.kernel.org
Subject: Re: [PATCH net-next v8 11/11] r8152: enable UPS for RTL8157 and RTL8159 QFN68
Date: Wed, 11 Nov 2026 03:25:19 +0000 [thread overview]
Message-ID: <sashiko-outbox-208192@kernel.org> (raw)
In-Reply-To: <20261110032416.16968-12-nic_swsd@realtek.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Medium] r8152: unrecoverable RTL8152_INACCESSIBLE latch in
r8157_ups_en()
--
commit be4db4d81b51525250cdaed81bde5b818204e21b
Author: Chih Kai Hsu <hsu.chih.kai@realtek.com>
r8152: enable UPS for RTL8157 and RTL8159 QFN68
This commit adds r8157_ups_en() and updates r8156_ups_flags() and
rtl8157_runtime_enable() to enable UPS during runtime suspend/resume on
RTL8157 and RTL8159 QFN68.
> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index 703ec5483778b..9c7031f938bc2 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c
[ ... ]
> @@ -4496,6 +4534,58 @@ static void r8156_ups_en(struct r8152 *tp, bool enable)
> }
> }
>
> +static void r8157_ups_en(struct r8152 *tp, bool enable)
> +{
> + u32 ocp_data;
> + int ret;
> +
> + if (enable) {
> + r8156_ups_flags(tp);
> +
> + ocp_byte_set_bits(tp, MCU_TYPE_USB, USB_POWER_CUT,
> + UPS_EN | USP_PREWAKE | PHASE2_EN);
> +
> + ocp_byte_set_bits(tp, MCU_TYPE_USB, USB_MISC_2,
> + UPS_FORCE_PWR_DOWN);
> + } else {
> + ocp_byte_clr_bits(tp, MCU_TYPE_USB, USB_POWER_CUT,
> + UPS_EN | USP_PREWAKE);
> +
> + ocp_byte_clr_bits(tp, MCU_TYPE_USB, USB_MISC_2,
> + UPS_FORCE_PWR_DOWN);
> +
> + ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_MISC_0);
> + if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
> + return;
> +
> + if (ocp_data & PCUT_STATUS) {
> + ret = read_poll_timeout(ocp_read_word, ocp_data,
> + test_bit(RTL8152_INACCESSIBLE,
> + &tp->flags) ||
> + (ocp_data & BACKUP_RESTRORE),
> + 200, 20000, false, tp,
> + MCU_TYPE_USB, USB_GPHY_CTRL);
> + if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
> + return;
> +
> + if (ret) {
> + rtl_set_inaccessible(tp);
> + dev_err(&tp->intf->dev,
> + "backup-restore timed out\n");
> + return;
> + }
[Severity: Medium]
As reported by Jakub Kicinski on v7 [1], does setting RTL8152_INACCESSIBLE
here without queuing a USB reset or returning an error leave the interface
permanently dead on runtime resume?
When rtl8152_runtime_resume() -> rtl8157_runtime_enable(tp, false) ->
r8157_ups_en(tp, false) times out waiting for BACKUP_RESTRORE,
r8157_ups_en() returns void and rtl8152_runtime_resume() returns 0, while
rtl8152_resume() skips its usb_reset_device() fallback when runtime_resume
is true:
drivers/net/usb/r8152.c:rtl8152_resume() {
...
if (!runtime_resume && test_bit(RTL8152_INACCESSIBLE, &tp->flags))
usb_reset_device(tp->udev);
...
}
Because RTL8152_INACCESSIBLE causes subsequent r8152_control_msg() calls to
bail out with -ENODEV before reaching usb_queue_reset_device(), and
rtl_set_accessible() only runs in rtl8152_post_reset(), nothing recovers the
device until a physical replug or system suspend/resume.
[1] https://lore.kernel.org/r/20261021005214.1255071-1-kuba@kernel.org
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261110032416.16968-1-nic_swsd@realtek.com?part=11
next prev parent reply other threads:[~2026-11-11 3:25 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 3:24 [PATCH net-next v8 00/11] r8152: refactor and extend RTL8157/8159 support Chih Kai Hsu
2026-11-10 3:24 ` [PATCH net-next v8 01/11] r8152: fix RTL8156/RTL8156B/RTL8157/RTL8159 up and down settings Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 02/11] r8152: add rtl8157_unload() for RTL8157 and RTL8159 Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 03/11] r8152: add rtl8157_change_mtu() " Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 04/11] r8152: fix flow control for RTL8156/RTL8156B/RTL8157/RTL8159 Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 05/11] r8152: split r8156_init by generation and factor out wait_autoload_done Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 06/11] r8152: add new init writes for RTL8156/8156B/8157/8159 Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 07/11] r8152: split RTL_VER_17 into QFN68 and QFN100 package variants Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 08/11] r8152: split rtl8156_enable/up/down into per-generation functions Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 09/11] r8152: split r8157_hw_phy_cfg into RTL8157 and RTL8159 variants Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 10/11] r8152: add TGPHY register access for RTL8157 and RTL8159 Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot
2026-11-10 3:24 ` [PATCH net-next v8 11/11] r8152: enable UPS for RTL8157 and RTL8159 QFN68 Chih Kai Hsu
2026-11-11 3:25 ` sashiko-bot [this message]
2026-11-10 5:04 ` [PATCH net-next v8 00/11] r8152: refactor and extend RTL8157/8159 support netdev-bot+sinfo
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=sashiko-outbox-208192@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=hsu.chih.kai@realtek.com \
--cc=linux-usb@vger.kernel.org \
--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.