> > + if (!err) > > + card->ext_perf.feature_enabled |= SD_EXT_PERF_CACHE; > Maybe > If (err) > card->ext_perf.feature_enabled &= ~SD_EXT_PERF_CACHE; > > and move to out: to catch the sd_write_ext_reg err ? Please ignore - got mixed up with card->ext_perf.feature_support... Sorry, Avri > > > + > > +out: > > + kfree(reg_buf); > > + return err; > > +} > > + > > /* > > * Handle the detection and initialisation of a card. > > * > > @@ -1442,6 +1531,13 @@ static int mmc_sd_init_card(struct mmc_host > > *host, u32 ocr, > > goto free_card; > > } > > > > + /* Enable internal SD cache if supported. */ > > + if (card->ext_perf.feature_support & SD_EXT_PERF_CACHE) { > > + err = sd_enable_cache(card); > > + if (err) > > + goto free_card; > If cache enablement failed, is it worthwhile to bail out? > Maybe disabling the cache with the appropriate message is enough? > > > + } > > + > > if (host->cqe_ops && !host->cqe_enabled) { > > err = host->cqe_ops->cqe_enable(host, card); > > if (!err) { > > @@ -1694,6 +1790,8 @@ static const struct mmc_bus_ops mmc_sd_ops = > { > > .alive = mmc_sd_alive, > > .shutdown = mmc_sd_suspend, > > .hw_reset = mmc_sd_hw_reset, > > + .cache_enabled = sd_cache_enabled, > > + .flush_cache = sd_flush_cache, > > }; > > I would expect 2 more patches in this series: > - flush cache on power down > - cache disablement events? > > Thanks, > Avri