From: kernel test robot <rong.a.chen@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC PATCH 2/2] Make cmdq_en attribute writeable
Date: Wed, 17 Feb 2021 21:04:25 +0800 [thread overview]
Message-ID: <20210217130425.GT219708@shao2-debian> (raw)
In-Reply-To: <20210215003249.GA12303@lupo-laptop>
[-- Attachment #1: Type: text/plain, Size: 9291 bytes --]
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
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 <lkp@intel.com>
"cppcheck warnings: (new ones prefixed by >>)"
>> drivers/mmc/core/mmc.c:870:9: warning: Uninitialized variable: err [uninitvar]
return err;
^
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> drivers/mmc/core/mmc.c:885:26: warning: Either the condition '!card' is redundant or there is possible null pointer dereference: card. [nullPointerRedundantCheck]
struct mmc_host *host = card->host;
^
drivers/mmc/core/mmc.c:889:6: note: Assuming that condition '!card' is not redundant
if (!card || kstrtoul(buf, 0, &enable))
^
drivers/mmc/core/mmc.c:885:26: note: Null pointer dereference
struct mmc_host *host = card->host;
^
vim +885 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/kbuild-all(a)lists.01.org
next prev parent reply other threads:[~2021-02-17 13:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-15 0:32 [RFC PATCH 2/2] Make cmdq_en attribute writeable Luca Porzio
2021-02-15 13:49 ` Dan Carpenter
2021-02-15 13:49 ` Dan Carpenter
2021-02-17 13:04 ` kernel test robot [this message]
2021-03-02 10:46 ` Ulf Hansson
2021-03-10 8:54 ` Adrian Hunter
2021-03-14 22:33 ` [EXT] " Luca Porzio (lporzio)
2021-03-15 7:11 ` Adrian Hunter
2021-03-08 17:05 ` Ulf Hansson
[not found] ` <CABhGgDPpUXPHJ49E_ku5N-fO=GWZKTdQQUGugAruG6y2=J1YgA@mail.gmail.com>
2021-03-09 15:47 ` Ulf Hansson
2021-03-14 22:26 ` [EXT] " Luca Porzio (lporzio)
2021-02-15 2:21 kernel test robot
2021-02-15 3:09 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210217130425.GT219708@shao2-debian \
--to=rong.a.chen@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.