lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <lt2v3pw4byfdmmgwo35sppmempnyeeu4hsl6eoula5o4h7q22j@z7dmakunwnuk>
Date: Mon, 7 Apr 2025 00:32:27 +0300
From: Dmitry Baryshkov <dmitry.baryshkov@....qualcomm.com>
To: Pengyu Luo <mitltlatltl@...il.com>
Cc: Bjorn Andersson <andersson@...nel.org>,
        Michael Turquette <mturquette@...libre.com>,
        Stephen Boyd <sboyd@...nel.org>, linux-arm-msm@...r.kernel.org,
        linux-clk@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] clk: qcom: rpmh: make clkaN optional

On Fri, Apr 04, 2025 at 03:20:02PM +0800, Pengyu Luo wrote:
> On sm8650, clkaN are missing in cmd-db for some specific devices. This
> caused a boot failure. Printing log during initramfs phase, I found
> 
> [    0.053281] clk-rpmh 17a00000.rsc:clock-controller: missing RPMh resource address for clka1
> 
> Adding the optional property to avoid probing failure which causes
> countless deferred probe. In the downstream tree,similar workarounds
> are introduced for sm7635, sm8550, sm8635, sm8650, sm8750.

Nit: SM7635, SM8550, etc.

> 
> Tested-by: Pengyu Luo <mitltlatltl@...il.com> # Oneplus Pad Pro / Oneplus Pad 2

I'm not so sure about this tag. You are expected to test the patch that
you are submitting.

> Signed-off-by: Pengyu Luo <mitltlatltl@...il.com>
> ---
>  drivers/clk/qcom/clk-rpmh.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
> index c7675930f..68704c4f0 100644
> --- a/drivers/clk/qcom/clk-rpmh.c
> +++ b/drivers/clk/qcom/clk-rpmh.c
> @@ -66,6 +66,8 @@ struct clk_rpmh {
>  struct clk_rpmh_desc {
>  	struct clk_hw **clks;
>  	size_t num_clks;
> +	/* rpmh clock clkaN are optional for this latform */

RPMh, platform

> +	bool clka_optional;
>  };
>  
>  static DEFINE_MUTEX(rpmh_clk_lock);
> @@ -648,6 +650,7 @@ static struct clk_hw *sm8550_rpmh_clocks[] = {
>  static const struct clk_rpmh_desc clk_rpmh_sm8550 = {
>  	.clks = sm8550_rpmh_clocks,
>  	.num_clks = ARRAY_SIZE(sm8550_rpmh_clocks),
> +	.clka_optional = true,
>  };
>  
>  static struct clk_hw *sm8650_rpmh_clocks[] = {
> @@ -679,6 +682,7 @@ static struct clk_hw *sm8650_rpmh_clocks[] = {
>  static const struct clk_rpmh_desc clk_rpmh_sm8650 = {
>  	.clks = sm8650_rpmh_clocks,
>  	.num_clks = ARRAY_SIZE(sm8650_rpmh_clocks),
> +	.clka_optional = true,
>  };
>  
>  static struct clk_hw *sc7280_rpmh_clocks[] = {
> @@ -847,6 +851,7 @@ static struct clk_hw *sm8750_rpmh_clocks[] = {
>  static const struct clk_rpmh_desc clk_rpmh_sm8750 = {
>  	.clks = sm8750_rpmh_clocks,
>  	.num_clks = ARRAY_SIZE(sm8750_rpmh_clocks),
> +	.clka_optional = true,
>  };
>  
>  static struct clk_hw *of_clk_rpmh_hw_get(struct of_phandle_args *clkspec,
> @@ -890,6 +895,11 @@ static int clk_rpmh_probe(struct platform_device *pdev)
>  		rpmh_clk = to_clk_rpmh(hw_clks[i]);
>  		res_addr = cmd_db_read_addr(rpmh_clk->res_name);
>  		if (!res_addr) {
> +			hw_clks[i] = NULL;
> +
> +			if (desc->clka_optional && !strncmp(rpmh_clk->res_name, "clka", sizeof("clka") - 1))

Carriage return after &&

> +				continue;
> +
>  			dev_err(&pdev->dev, "missing RPMh resource address for %s\n",
>  				rpmh_clk->res_name);
>  			return -ENODEV;
> -- 
> 2.48.1
> 

-- 
With best wishes
Dmitry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ