Hello William Qiu, The patch 9e622229bbf4: "mmc: starfive: Add sdio/emmc driver support" from Feb 15, 2023, leads to the following Smatch static checker warning: drivers/mmc/host/dw_mmc-starfive.c:77 dw_mci_starfive_execute_tuning() error: uninitialized symbol 'prev_err'. drivers/mmc/host/dw_mmc-starfive.c 47 static int dw_mci_starfive_execute_tuning(struct dw_mci_slot *slot, 48 u32 opcode) 49 { 50 static const int grade = MAX_DELAY_CHAIN; 51 struct dw_mci *host = slot->host; 52 struct starfive_priv *priv = host->priv; 53 int rise_point = -1, fall_point = -1; 54 int err, prev_err; 55 int i; 56 bool found = 0; 57 u32 regval; 58 59 /* 60 * Use grade as the max delay chain, and use the rise_point and 61 * fall_point to ensure the best sampling point of a data input 62 * signals. 63 */ 64 for (i = 0; i < grade; i++) { 65 regval = i << priv->syscon_shift; 66 err = regmap_update_bits(priv->reg_syscon, priv->syscon_offset, 67 priv->syscon_mask, regval); 68 if (err) 69 return err; 70 mci_writel(host, RINTSTS, ALL_INT_CLR); 71 72 err = mmc_send_tuning(slot->mmc, opcode, NULL); 73 if (!err) 74 found = 1; 75 76 if (i > 0) { --> 77 if (err && !prev_err) prev_err was never initialized to zero. 78 fall_point = i - 1; 79 if (!err && prev_err) 80 rise_point = i; 81 } 82 83 if (rise_point != -1 && fall_point != -1) 84 goto tuning_out; 85 86 prev_err = err; 87 err = 0; 88 } 89 regards, dan carpenter