On Sun, 11 Aug 2024 at 23:23, Ben Whitten <ben.whitten@xxxxxxxxx> wrote: > > Fix a race condition if the clock provider comes up after mmc is probed, > this causes mmc to fail without retrying. > When given the DEFER error from the clk source, pass it on up the chain. > > Fixes: f90a0612f0e1 ("mmc: dw_mmc: lookup for optional biu and ciu clocks") > > Signed-off-by: Ben Whitten <ben.whitten@xxxxxxxxx> Applied for fixes and by adding a stable tag, thanks! Kind regards Uffe > --- > drivers/mmc/host/dw_mmc.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 2333ef4893ee..e9f6e4e62290 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -3299,6 +3299,10 @@ int dw_mci_probe(struct dw_mci *host) > host->biu_clk = devm_clk_get(host->dev, "biu"); > if (IS_ERR(host->biu_clk)) { > dev_dbg(host->dev, "biu clock not available\n"); > + ret = PTR_ERR(host->biu_clk); > + if (ret == -EPROBE_DEFER) > + return ret; > + > } else { > ret = clk_prepare_enable(host->biu_clk); > if (ret) { > @@ -3310,6 +3314,10 @@ int dw_mci_probe(struct dw_mci *host) > host->ciu_clk = devm_clk_get(host->dev, "ciu"); > if (IS_ERR(host->ciu_clk)) { > dev_dbg(host->dev, "ciu clock not available\n"); > + ret = PTR_ERR(host->ciu_clk); > + if (ret == -EPROBE_DEFER) > + goto err_clk_biu; > + > host->bus_hz = host->pdata->bus_hz; > } else { > ret = clk_prepare_enable(host->ciu_clk); > > base-commit: 5189dafa4cf950e675f02ee04b577dfbbad0d9b1 > -- > 2.43.0 >