__ufshcd_send_uic_cmd is wrapped uic_cmd_mutex and
its related contexts are accessed within the period wrappted
by uic_cmd_mutex. Thus, wrapping with host_lock is
redundant.
Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
---
drivers/ufs/core/ufshcd.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 9434328..e096401 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -2457,7 +2457,6 @@ __ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd,
bool completion)
{
lockdep_assert_held(&hba->uic_cmd_mutex);
- lockdep_assert_held(hba->host->host_lock);
if (!ufshcd_ready_for_uic_cmd(hba)) {
dev_err(hba->dev,
@@ -2493,9 +2492,7 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
mutex_lock(&hba->uic_cmd_mutex);
ufshcd_add_delay_before_dme_cmd(hba);
- spin_lock_irqsave(hba->host->host_lock, flags);
ret = __ufshcd_send_uic_cmd(hba, uic_cmd, true);
- spin_unlock_irqrestore(hba->host->host_lock, flags);
if (!ret)
ret = ufshcd_wait_for_uic_cmd(hba, uic_cmd);
@@ -4180,8 +4177,8 @@ static int ufshcd_uic_pwr_ctrl(struct ufs_hba *hba, struct uic_command *cmd)
wmb();
reenable_intr = true;
}
- ret = __ufshcd_send_uic_cmd(hba, cmd, false);
spin_unlock_irqrestore(hba->host->host_lock, flags);
+ ret = __ufshcd_send_uic_cmd(hba, cmd, false);
if (ret) {
dev_err(hba->dev,
"pwr ctrl cmd 0x%x with mode 0x%x uic error %d\n",
--
2.7.4
Hi Kiwoong,
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.4-rc3]
[also build test WARNING on linus/master next-20230523]
[cannot apply to jejb-scsi/for-next mkp-scsi/for-next]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Kiwoong-Kim/ufs-poll-HCS-UCRDY-before-issuing-a-UIC-command/20230523-215413
base: 44c026a73be8038f03dbdeef028b642880cf1511
patch link: https://lore.kernel.org/r/c511c7f03ce77a604aa5211c3ffac96022c3ee40.1684822284.git.kwmad.kim%40samsung.com
patch subject: [PATCH v1 1/3] ufs: make __ufshcd_send_uic_cmd not wrapped by host_lock
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20230524/202305240017.qlNZOZVe-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/c3fdde6dc3c766e3141c3ed43ae136ceb345c1c1
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Kiwoong-Kim/ufs-poll-HCS-UCRDY-before-issuing-a-UIC-command/20230523-215413
git checkout c3fdde6dc3c766e3141c3ed43ae136ceb345c1c1
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 olddefconfig
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/ufs/core/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202305240017.qlNZOZVe-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/ufs/core/ufshcd.c: In function 'ufshcd_send_uic_cmd':
>> drivers/ufs/core/ufshcd.c:2479:23: warning: unused variable 'flags' [-Wunused-variable]
2479 | unsigned long flags;
| ^~~~~
vim +/flags +2479 drivers/ufs/core/ufshcd.c
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2468
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2469 /**
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2470 * ufshcd_send_uic_cmd - Send UIC commands and retrieve the result
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2471 * @hba: per adapter instance
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2472 * @uic_cmd: UIC command
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2473 *
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2474 * Returns 0 only if success.
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2475 */
e77044c5a8422e drivers/scsi/ufs/ufshcd.c Avri Altman 2018-10-07 2476 int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2477 {
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2478 int ret;
57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani 2014-09-25 @2479 unsigned long flags;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2480
a22bcfdbf10b41 drivers/scsi/ufs/ufshcd.c jongmin jeong 2021-10-18 2481 if (hba->quirks & UFSHCD_QUIRK_BROKEN_UIC_CMD)
a22bcfdbf10b41 drivers/scsi/ufs/ufshcd.c jongmin jeong 2021-10-18 2482 return 0;
a22bcfdbf10b41 drivers/scsi/ufs/ufshcd.c jongmin jeong 2021-10-18 2483
1ab27c9cf8b63d drivers/scsi/ufs/ufshcd.c Sahitya Tummala 2014-09-25 2484 ufshcd_hold(hba, false);
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2485 mutex_lock(&hba->uic_cmd_mutex);
cad2e03d860779 drivers/scsi/ufs/ufshcd.c Yaniv Gardi 2015-03-31 2486 ufshcd_add_delay_before_dme_cmd(hba);
cad2e03d860779 drivers/scsi/ufs/ufshcd.c Yaniv Gardi 2015-03-31 2487
d75f7fe495cf57 drivers/scsi/ufs/ufshcd.c Yaniv Gardi 2016-02-01 2488 ret = __ufshcd_send_uic_cmd(hba, uic_cmd, true);
57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani 2014-09-25 2489 if (!ret)
57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani 2014-09-25 2490 ret = ufshcd_wait_for_uic_cmd(hba, uic_cmd);
57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani 2014-09-25 2491
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2492 mutex_unlock(&hba->uic_cmd_mutex);
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2493
1ab27c9cf8b63d drivers/scsi/ufs/ufshcd.c Sahitya Tummala 2014-09-25 2494 ufshcd_release(hba);
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2495 return ret;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2496 }
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon 2013-06-26 2497
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
© 2016 - 2026 Red Hat, Inc.