CC: [email protected]
In-Reply-To: <20210215003249.GA12303@lupo-laptop>
References: <20210215003249.GA12303@lupo-laptop>
TO: Luca Porzio <[email protected]>

Hi Luca,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on next-20210212]
[cannot apply to linus/master mmc/mmc-next v5.11-rc7 v5.11-rc6 v5.11-rc5 v5.11]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Luca-Porzio/Support-temporarily-disable-of-the-CMDQ-mode/20210215-083730
base:    07f7e57c63aaa2afb4ea31edef05e08699a63a00
:::::: branch date: 2 hours ago
:::::: commit date: 2 hours ago
config: i386-randconfig-m021-20210215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/mmc/core/mmc.c:870 mmc_cmdq_setup() error: uninitialized symbol 'err'.
drivers/mmc/core/mmc.c:889 cmdq_en_store() warn: variable dereferenced before 
check 'card' (see line 885)

Old smatch warnings:
drivers/mmc/core/mmc.c:774 mmc_erase_size_show() warn: should 'card->erase_size 
<< 9' be a 64 bit type?
drivers/mmc/core/mmc.c:775 mmc_preferred_erase_size_show() warn: should 
'card->pref_erase << 9' be a 64 bit type?
drivers/mmc/core/mmc.c:1072 mmc_select_powerclass() warn: should '1 << 
bus_width' be a 64 bit type?
drivers/mmc/core/mmc.c:1159 mmc_select_bus_width() warn: should '1 << 
bus_width' be a 64 bit type?
drivers/mmc/core/mmc.c:1211 mmc_select_hs_ddr() warn: should '1 << bus_width' 
be a 64 bit type?

vim +/err +870 drivers/mmc/core/mmc.c

07a9ce0e702520 Luca Porzio 2021-02-15  797  
07a9ce0e702520 Luca Porzio 2021-02-15  798  
07a9ce0e702520 Luca Porzio 2021-02-15  799  /* Setup command queue mode and CQE 
if underling hw supports it
07a9ce0e702520 Luca Porzio 2021-02-15  800   * and assuming force_disable_cmdq 
has not been set.
07a9ce0e702520 Luca Porzio 2021-02-15  801   */
07a9ce0e702520 Luca Porzio 2021-02-15  802  static int mmc_cmdq_setup(struct 
mmc_host *host, struct mmc_card *card)
07a9ce0e702520 Luca Porzio 2021-02-15  803  {
07a9ce0e702520 Luca Porzio 2021-02-15  804      int err;
07a9ce0e702520 Luca Porzio 2021-02-15  805  
07a9ce0e702520 Luca Porzio 2021-02-15  806      /* Check HW support */
07a9ce0e702520 Luca Porzio 2021-02-15  807      if (!card->ext_csd.cmdq_support 
|| !(host->caps2 & MMC_CAP2_CQE))
07a9ce0e702520 Luca Porzio 2021-02-15  808              
card->force_disable_cmdq = true;
07a9ce0e702520 Luca Porzio 2021-02-15  809  
07a9ce0e702520 Luca Porzio 2021-02-15  810      /* Enable/Disable  CMDQ mode */
07a9ce0e702520 Luca Porzio 2021-02-15  811      if (!card->ext_csd.cmdq_en && 
!card->force_disable_cmdq) {
07a9ce0e702520 Luca Porzio 2021-02-15  812              err = 
mmc_cmdq_enable(card);
07a9ce0e702520 Luca Porzio 2021-02-15  813              if (err && err != 
-EBADMSG)
07a9ce0e702520 Luca Porzio 2021-02-15  814                      return err;
07a9ce0e702520 Luca Porzio 2021-02-15  815              if (err) {
07a9ce0e702520 Luca Porzio 2021-02-15  816                      pr_warn("%s: 
Enabling CMDQ failed\n",
07a9ce0e702520 Luca Porzio 2021-02-15  817                          
mmc_hostname(card->host));
07a9ce0e702520 Luca Porzio 2021-02-15  818                      
card->ext_csd.cmdq_support = false;
07a9ce0e702520 Luca Porzio 2021-02-15  819                      
card->ext_csd.cmdq_depth = 0;
07a9ce0e702520 Luca Porzio 2021-02-15  820              }
07a9ce0e702520 Luca Porzio 2021-02-15  821  
07a9ce0e702520 Luca Porzio 2021-02-15  822      } else if 
(card->ext_csd.cmdq_en && card->force_disable_cmdq) {
07a9ce0e702520 Luca Porzio 2021-02-15  823              err = 
mmc_cmdq_disable(card);
07a9ce0e702520 Luca Porzio 2021-02-15  824              if (err) {
07a9ce0e702520 Luca Porzio 2021-02-15  825                      pr_warn("%s: 
Disabling CMDQ failed, error %d\n",
07a9ce0e702520 Luca Porzio 2021-02-15  826                          
mmc_hostname(card->host), err);
07a9ce0e702520 Luca Porzio 2021-02-15  827                      err = 0;
07a9ce0e702520 Luca Porzio 2021-02-15  828              }
07a9ce0e702520 Luca Porzio 2021-02-15  829      }
07a9ce0e702520 Luca Porzio 2021-02-15  830  
07a9ce0e702520 Luca Porzio 2021-02-15  831      /*
07a9ce0e702520 Luca Porzio 2021-02-15  832       * In some cases (e.g. RPMB or 
mmc_test), the Command Queue must be
07a9ce0e702520 Luca Porzio 2021-02-15  833       * disabled for a time, so a 
flag is needed to indicate to re-enable the
07a9ce0e702520 Luca Porzio 2021-02-15  834       * Command Queue.
07a9ce0e702520 Luca Porzio 2021-02-15  835       */
07a9ce0e702520 Luca Porzio 2021-02-15  836      card->reenable_cmdq = 
card->ext_csd.cmdq_en;
07a9ce0e702520 Luca Porzio 2021-02-15  837  
07a9ce0e702520 Luca Porzio 2021-02-15  838      /* Enable/Disable Host CQE */
07a9ce0e702520 Luca Porzio 2021-02-15  839      if (!card->force_disable_cmdq) {
07a9ce0e702520 Luca Porzio 2021-02-15  840  
07a9ce0e702520 Luca Porzio 2021-02-15  841              if (host->cqe_ops && 
!host->cqe_enabled) {
07a9ce0e702520 Luca Porzio 2021-02-15  842                      err = 
host->cqe_ops->cqe_enable(host, card);
07a9ce0e702520 Luca Porzio 2021-02-15  843                      if (!err) {
07a9ce0e702520 Luca Porzio 2021-02-15  844                              
host->cqe_enabled = true;
07a9ce0e702520 Luca Porzio 2021-02-15  845  
07a9ce0e702520 Luca Porzio 2021-02-15  846                              if 
(card->ext_csd.cmdq_en) {
07a9ce0e702520 Luca Porzio 2021-02-15  847                                      
pr_info("%s: Command Queue Engine enabled\n",
07a9ce0e702520 Luca Porzio 2021-02-15  848                                      
    mmc_hostname(host));
07a9ce0e702520 Luca Porzio 2021-02-15  849                              } else {
07a9ce0e702520 Luca Porzio 2021-02-15  850                                      
host->hsq_enabled = true;
07a9ce0e702520 Luca Porzio 2021-02-15  851                                      
pr_info("%s: Host Software Queue enabled\n",
07a9ce0e702520 Luca Porzio 2021-02-15  852                                      
    mmc_hostname(host));
07a9ce0e702520 Luca Porzio 2021-02-15  853                              }
07a9ce0e702520 Luca Porzio 2021-02-15  854                      }
07a9ce0e702520 Luca Porzio 2021-02-15  855              }
07a9ce0e702520 Luca Porzio 2021-02-15  856  
07a9ce0e702520 Luca Porzio 2021-02-15  857      } else {
07a9ce0e702520 Luca Porzio 2021-02-15  858  
07a9ce0e702520 Luca Porzio 2021-02-15  859              if (host->cqe_enabled) {
07a9ce0e702520 Luca Porzio 2021-02-15  860                      
host->cqe_ops->cqe_disable(host);
07a9ce0e702520 Luca Porzio 2021-02-15  861                      
host->cqe_enabled = false;
07a9ce0e702520 Luca Porzio 2021-02-15  862                      pr_info("%s: 
Command Queue Engine disabled\n",
07a9ce0e702520 Luca Porzio 2021-02-15  863                          
mmc_hostname(host));
07a9ce0e702520 Luca Porzio 2021-02-15  864              }
07a9ce0e702520 Luca Porzio 2021-02-15  865  
07a9ce0e702520 Luca Porzio 2021-02-15  866              host->hsq_enabled = 
false;
07a9ce0e702520 Luca Porzio 2021-02-15  867              err = 0;
07a9ce0e702520 Luca Porzio 2021-02-15  868      }
07a9ce0e702520 Luca Porzio 2021-02-15  869  
07a9ce0e702520 Luca Porzio 2021-02-15 @870      return err;
07a9ce0e702520 Luca Porzio 2021-02-15  871  }
07a9ce0e702520 Luca Porzio 2021-02-15  872  
07a9ce0e702520 Luca Porzio 2021-02-15  873  
07a9ce0e702520 Luca Porzio 2021-02-15  874  static ssize_t cmdq_en_show(struct 
device *dev, struct device_attribute *attr, char *buf)
07a9ce0e702520 Luca Porzio 2021-02-15  875  {
07a9ce0e702520 Luca Porzio 2021-02-15  876      struct mmc_card *card = 
mmc_dev_to_card(dev);
07a9ce0e702520 Luca Porzio 2021-02-15  877  
07a9ce0e702520 Luca Porzio 2021-02-15  878      return sprintf(buf, "%d\n", 
card->ext_csd.cmdq_en);
07a9ce0e702520 Luca Porzio 2021-02-15  879  }
07a9ce0e702520 Luca Porzio 2021-02-15  880  
07a9ce0e702520 Luca Porzio 2021-02-15  881  static ssize_t cmdq_en_store(struct 
device *dev, struct device_attribute *attr,
07a9ce0e702520 Luca Porzio 2021-02-15  882                               const 
char *buf, size_t count)
07a9ce0e702520 Luca Porzio 2021-02-15  883  {
07a9ce0e702520 Luca Porzio 2021-02-15  884      struct mmc_card *card = 
mmc_dev_to_card(dev);
07a9ce0e702520 Luca Porzio 2021-02-15 @885      struct mmc_host *host = 
card->host;
07a9ce0e702520 Luca Porzio 2021-02-15  886      unsigned long enable;
07a9ce0e702520 Luca Porzio 2021-02-15  887      int err;
07a9ce0e702520 Luca Porzio 2021-02-15  888  
07a9ce0e702520 Luca Porzio 2021-02-15 @889      if (!card || kstrtoul(buf, 0, 
&enable))
07a9ce0e702520 Luca Porzio 2021-02-15  890              return -EINVAL;
07a9ce0e702520 Luca Porzio 2021-02-15  891      if (!card->ext_csd.cmdq_support)
07a9ce0e702520 Luca Porzio 2021-02-15  892              return -EOPNOTSUPP;
07a9ce0e702520 Luca Porzio 2021-02-15  893  
07a9ce0e702520 Luca Porzio 2021-02-15  894      enable = !!enable;
07a9ce0e702520 Luca Porzio 2021-02-15  895      if (enable == 
card->ext_csd.cmdq_en)
07a9ce0e702520 Luca Porzio 2021-02-15  896              return count;
07a9ce0e702520 Luca Porzio 2021-02-15  897  
07a9ce0e702520 Luca Porzio 2021-02-15  898      mmc_get_card(card, NULL);
07a9ce0e702520 Luca Porzio 2021-02-15  899      card->force_disable_cmdq = 
!enable;
07a9ce0e702520 Luca Porzio 2021-02-15  900      err = mmc_cmdq_setup(host, 
card);
07a9ce0e702520 Luca Porzio 2021-02-15  901      mmc_put_card(card, NULL);
07a9ce0e702520 Luca Porzio 2021-02-15  902  
07a9ce0e702520 Luca Porzio 2021-02-15  903      if (err)
07a9ce0e702520 Luca Porzio 2021-02-15  904              return err;
07a9ce0e702520 Luca Porzio 2021-02-15  905      else
07a9ce0e702520 Luca Porzio 2021-02-15  906              return count;
07a9ce0e702520 Luca Porzio 2021-02-15  907  }
07a9ce0e702520 Luca Porzio 2021-02-15  908  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to