Re: [PATCH v2] usb: dwc3: Move GUID programming after PHY initialization
From: Selvarasu Ganesan
Date: Fri Apr 17 2026 - 03:07:52 EST
On 4/17/2026 12:03 PM, Selvarasu Ganesan wrote:
> The Linux Version Code is currently written to the GUID register before
> PHY initialization. Certain PHY implementations (such as Synopsys eUSB
> PHY performing link_sw_reset) clear the GUID register to its default
> value during initialization, causing the kernel version information to
> be lost.
>
> Move the GUID register programming to occur after PHY initialization
> completes to ensure the Linux version information persists.
>
> Fixes: fa0ea13e9f1c ("usb: dwc3: core: write LINUX_VERSION_CODE to our GUID register")
> Cc: stable@xxxxxxxxxxxxxxx
> Reported-by: Pritam Manohar Sutar <pritam.sutar@xxxxxxxxxxx>
> Signed-off-by: Selvarasu Ganesan <selvarasu.g@xxxxxxxxxxx>
> ---
> drivers/usb/dwc3/core.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
Apologies, I missed including the what is change in patch-v2 for this
submission.
Changes in v2:
- Update commit message for properly describe the problem and solution.
Link to v1:
https://lore.kernel.org/linux-usb/20260410064735.515-1-selvarasu.g@xxxxxxxxxxx/
Thanks,
Selva
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 161a4d58b2cec..0d3c7e7b2262f 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1341,12 +1341,6 @@ int dwc3_core_init(struct dwc3 *dwc)
>
> hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0);
>
> - /*
> - * Write Linux Version Code to our GUID register so it's easy to figure
> - * out which kernel version a bug was found.
> - */
> - dwc3_writel(dwc, DWC3_GUID, LINUX_VERSION_CODE);
> -
> ret = dwc3_phy_setup(dwc);
> if (ret)
> return ret;
> @@ -1378,6 +1372,12 @@ int dwc3_core_init(struct dwc3 *dwc)
> if (ret)
> goto err_exit_phy;
>
> + /*
> + * Write Linux Version Code to our GUID register so it's easy to figure
> + * out which kernel version a bug was found.
> + */
> + dwc3_writel(dwc, DWC3_GUID, LINUX_VERSION_CODE);
> +
> dwc3_core_setup_global_control(dwc);
> dwc3_core_num_eps(dwc);
>