Re: [PATCH] usb: dwc3: Fix GUID register programming order
From: Thinh Nguyen
Date: Mon Apr 13 2026 - 23:02:48 EST
On Fri, Apr 10, 2026, Selvarasu Ganesan wrote:
> The Linux Version Code is currently written to the GUID register before
> dwc3_core_soft_reset() is executed. Since the core soft reset clears the
> GUID register back to its default value, the version information is
> subsequently lost.
This is not right. Soft reset should not clear the GUID register.
Something else must have cleared it. Did you assert Vcc reset (hard
reset) during phy reset/initialization?
BR,
Thinh
>
> Move the GUID register programming to occur after the core soft reset
> has completed to ensure the value 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(-)
>
> 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);
>
> --
> 2.34.1
>