On 1/4/2024 7:39 AM, Brian Masney wrote:
Right now when we boot the RideSX4 (sa8775p) board on linux-next with a quiet kernel log (specifically loglevel=4 - warning) about 50% of the boots fail since UFS cannot be mounted. Changing the loglevel to 5 (notice) or higher to show more logging makes the race condition and error go away. I tracked the error down to the following: - The ice driver fails to probe due to the error "gcc_ufs_phy_ice_core_clk status stuck at 'off'" and returns -EBUSY and is not retried. platform_set_drvdata() is never called as expected. - The qcom UFS host driver calls of_qcom_ice_get(), however this will always return -EPROBE_DEFER since the ice probe failed, and platform_get_drvdata() is always null. Here's the relevant log messages that I was able to get from a failed boot once I configured dracut to time out: gcc_ufs_phy_ice_core_clk status stuck at 'off' qcom-ice: probe of 1d88000.crypto failed with error -16 ufshcd-qcom 1d84000.ufs: Cannot get ice instance from 1d88000.crypto ufshcd-qcom 1d84000.ufs: Cannot get ice instance from 1d88000.crypto platform 1d84000.ufs: deferred probe pending: ufshcd-qcom: ufshcd_pltfrm_init() failed I assume that there's some kind of vote (icc, clk, regulator, etc) that's missing from the ice driver, and another driver is performing the necessary votes. However, I don't have access to the hardware docs to tell if that's the case. Can someone that has access take a look? I can post patch(es) if someone can point me to what needs configured. Brian
Hi Brian, I can see that gcc_ufs_phy_ice_core_clk needs the gcc_ufs_phy_gdsc to be enabled before this particular clk is enabled. But that required power-domain I do not see in the ice DT node. That can cause this problem. -Shazad