mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: HOYOUNG SEO <hy50.seo@samsung.com>,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
	alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, bvanassche@acm.org,
	kwangwon.min@samsung.com, kwmad.kim@samsung.com,
	cpgs@samsung.com, h10.kim@samsung.com
Cc: oe-kbuild-all@lists.linux.dev, HOYOUNG SEO <hy50.seo@samsung.com>
Subject: Re: [PATCH v4] scsi: ufs: Change the error check sequence for auto hibern8
Date: Tue, 27 Oct 2026 02:44:26 +0800	[thread overview]
Message-ID: <202610270253.MSZEgXih-lkp@intel.com> (raw)
In-Reply-To: <20261026052632.1848929-1-hy50.seo@samsung.com>

Hi HOYOUNG,

kernel test robot noticed the following build errors:

[auto build test ERROR on jejb-scsi/for-next]
[also build test ERROR on mkp-scsi/for-next linus/master next-20261023]
[cannot apply to linux-review/HOYOUNG-SEO/scsi-ufs-Change-the-error-check-sequence-for-auto-hibern8/20261022-164249 v7.3]
[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/HOYOUNG-SEO/scsi-ufs-Change-the-error-check-sequence-for-auto-hibern8/20261026-142632
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link:    https://lore.kernel.org/r/20261026052632.1848929-1-hy50.seo%40samsung.com
patch subject: [PATCH v4] scsi: ufs: Change the error check sequence for auto hibern8
config: sh-randconfig-1001-20261026 (https://download.01.org/0day-ci/archive/20261027/202610270253.MSZEgXih-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 13.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261027/202610270253.MSZEgXih-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610270253.MSZEgXih-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/ufs/core/ufshcd.c: In function 'ufshcd_uic_cmd_compl':
>> drivers/ufs/core/ufshcd.c:6032:13: error: invalid storage class for function '__ufshcd_transfer_req_compl'
    6032 | static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6046:13: error: invalid storage class for function 'ufshcd_clear_polled'
    6046 | static void ufshcd_clear_polled(struct ufs_hba *hba,
         |             ^~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6065:12: error: invalid storage class for function 'ufshcd_poll'
    6065 | static int ufshcd_poll(struct Scsi_Host *shost, unsigned int queue_num)
         |            ^~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6097:13: error: invalid storage class for function 'ufshcd_mcq_force_compl_one'
    6097 | static bool ufshcd_mcq_force_compl_one(struct request *rq, void *priv)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6134:13: error: invalid storage class for function 'ufshcd_mcq_compl_pending_transfer'
    6134 | static void ufshcd_mcq_compl_pending_transfer(struct ufs_hba *hba,
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6159:20: error: invalid storage class for function 'ufshcd_transfer_req_compl'
    6159 | static irqreturn_t ufshcd_transfer_req_compl(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6234:19: error: invalid storage class for function 'ufshcd_disable_ee'
    6234 | static inline int ufshcd_disable_ee(struct ufs_hba *hba, u16 mask)
         |                   ^~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6249:19: error: invalid storage class for function 'ufshcd_enable_ee'
    6249 | static inline int ufshcd_enable_ee(struct ufs_hba *hba, u16 mask)
         |                   ^~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6266:12: error: invalid storage class for function 'ufshcd_enable_auto_bkops'
    6266 | static int ufshcd_enable_auto_bkops(struct ufs_hba *hba)
         |            ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6306:12: error: invalid storage class for function 'ufshcd_disable_auto_bkops'
    6306 | static int ufshcd_disable_auto_bkops(struct ufs_hba *hba)
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6350:13: error: invalid storage class for function 'ufshcd_force_reset_auto_bkops'
    6350 | static void ufshcd_force_reset_auto_bkops(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6365:19: error: invalid storage class for function 'ufshcd_get_bkops_status'
    6365 | static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status)
         |                   ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6386:12: error: invalid storage class for function 'ufshcd_bkops_ctrl'
    6386 | static int ufshcd_bkops_ctrl(struct ufs_hba *hba)
         |            ^~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6412:19: error: invalid storage class for function 'ufshcd_get_ee_status'
    6412 | static inline int ufshcd_get_ee_status(struct ufs_hba *hba, u32 *status)
         |                   ^~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6418:13: error: invalid storage class for function 'ufshcd_bkops_exception_event_handler'
    6418 | static void ufshcd_bkops_exception_event_handler(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6455:12: error: invalid storage class for function '__ufshcd_wb_toggle'
    6455 | static int __ufshcd_wb_toggle(struct ufs_hba *hba, bool set, enum flag_idn idn)
         |            ^~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6487:13: error: invalid storage class for function 'ufshcd_wb_toggle_buf_flush_during_h8'
    6487 | static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6540:13: error: invalid storage class for function 'ufshcd_wb_curr_buff_threshold_check'
    6540 | static bool ufshcd_wb_curr_buff_threshold_check(struct ufs_hba *hba,
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6566:13: error: invalid storage class for function 'ufshcd_wb_force_disable'
    6566 | static void ufshcd_wb_force_disable(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/ufs/core/ufshcd.c:6578:13: error: invalid storage class for function 'ufshcd_is_wb_buf_lifetime_available'
    6578 | static bool ufshcd_is_wb_buf_lifetime_available(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6607:13: error: invalid storage class for function 'ufshcd_wb_need_flush'
    6607 | static bool ufshcd_wb_need_flush(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6646:13: error: invalid storage class for function 'ufshcd_rpm_dev_flush_recheck_work'
    6646 | static void ufshcd_rpm_dev_flush_recheck_work(struct work_struct *work)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6668:13: error: invalid storage class for function 'ufshcd_exception_event_handler'
    6668 | static void ufshcd_exception_event_handler(struct work_struct *work)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6704:13: error: invalid storage class for function 'ufshcd_complete_requests'
    6704 | static void ufshcd_complete_requests(struct ufs_hba *hba, bool force_compl)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6721:13: error: invalid storage class for function 'ufshcd_quirk_dl_nac_errors'
    6721 | static bool ufshcd_quirk_dl_nac_errors(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6786:20: error: invalid storage class for function 'ufshcd_is_saved_err_fatal'
    6786 | static inline bool ufshcd_is_saved_err_fatal(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from arch/sh/include/asm/bug.h:5,
                    from include/linux/bug.h:5,
                    from include/linux/instrumented.h:10,
                    from include/linux/atomic/atomic-instrumented.h:17,
                    from include/linux/atomic.h:82,
                    from include/asm-generic/bitops/atomic.h:5,
                    from arch/sh/include/asm/bitops.h:23,
                    from include/linux/bitops.h:67,
                    from include/linux/bitmap.h:8,
                    from include/linux/nodemask.h:91,
                    from include/linux/numa.h:6,
                    from include/linux/async.h:13,
                    from drivers/ufs/core/ufshcd.c:12:
   drivers/ufs/core/ufshcd.c:6814:19: error: non-static declaration of 'ufshcd_force_error_recovery' follows static declaration
    6814 | EXPORT_SYMBOL_GPL(ufshcd_force_error_recovery);
         |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/export.h:76:28: note: in definition of macro '__EXPORT_SYMBOL'
      76 |         extern typeof(sym) sym;                                 \
         |                            ^~~
   include/linux/export.h:90:41: note: in expansion of macro '_EXPORT_SYMBOL'
      90 | #define EXPORT_SYMBOL_GPL(sym)          _EXPORT_SYMBOL(sym, "GPL")
         |                                         ^~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6814:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    6814 | EXPORT_SYMBOL_GPL(ufshcd_force_error_recovery);
         | ^~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6807:6: note: previous definition of 'ufshcd_force_error_recovery' with type 'void(struct ufs_hba *)'
    6807 | void ufshcd_force_error_recovery(struct ufs_hba *hba)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6816:13: error: invalid storage class for function 'ufshcd_clk_scaling_allow'
    6816 | static void ufshcd_clk_scaling_allow(struct ufs_hba *hba, bool allow)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6825:13: error: invalid storage class for function 'ufshcd_clk_scaling_suspend'
    6825 | static void ufshcd_clk_scaling_suspend(struct ufs_hba *hba, bool suspend)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6838:13: error: invalid storage class for function 'ufshcd_err_handling_prepare'
    6838 | static void ufshcd_err_handling_prepare(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6882:13: error: invalid storage class for function 'ufshcd_err_handling_unprepare'
    6882 | static void ufshcd_err_handling_unprepare(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6893:20: error: invalid storage class for function 'ufshcd_err_handling_should_stop'
    6893 | static inline bool ufshcd_err_handling_should_stop(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6950:20: error: invalid storage class for function 'ufshcd_recover_pm_error'
    6950 | static inline void ufshcd_recover_pm_error(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6955:13: error: invalid storage class for function 'ufshcd_is_pwr_mode_restore_needed'
    6955 | static bool ufshcd_is_pwr_mode_restore_needed(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6971:13: error: invalid storage class for function 'ufshcd_abort_one'
    6971 | static bool ufshcd_abort_one(struct request *rq, void *priv)
         |             ^~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:6997:13: error: invalid storage class for function 'ufshcd_abort_all'
    6997 | static bool ufshcd_abort_all(struct ufs_hba *hba)
         |             ^~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7023:13: error: invalid storage class for function 'ufshcd_err_handler'
    7023 | static void ufshcd_err_handler(struct work_struct *work)
         |             ^~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7230:20: error: invalid storage class for function 'ufshcd_update_uic_error'
    7230 | static irqreturn_t ufshcd_update_uic_error(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7332:20: error: invalid storage class for function 'ufshcd_check_errors'
    7332 | static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba, u32 intr_status)
         |                    ^~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7409:20: error: invalid storage class for function 'ufshcd_tmc_handler'
    7409 | static irqreturn_t ufshcd_tmc_handler(struct ufs_hba *hba)
         |                    ^~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7437:20: error: invalid storage class for function 'ufshcd_handle_mcq_cq_events'
    7437 | static irqreturn_t ufshcd_handle_mcq_cq_events(struct ufs_hba *hba, bool reset_iag)
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7480:20: error: invalid storage class for function 'ufshcd_sl_intr'
    7480 | static irqreturn_t ufshcd_sl_intr(struct ufs_hba *hba, u32 intr_status)
         |                    ^~~~~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7514:20: error: invalid storage class for function 'ufshcd_intr'
    7514 | static irqreturn_t ufshcd_intr(int irq, void *__hba)
         |                    ^~~~~~~~~~~
   drivers/ufs/core/ufshcd.c:7553:12: error: invalid storage class for function 'ufshcd_clear_tm_cmd'
    7553 | static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag)
         |            ^~~~~~~~~~~~~~~~~~~


vim +/__ufshcd_transfer_req_compl +6032 drivers/ufs/core/ufshcd.c

c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6026  
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6027  /**
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6028   * __ufshcd_transfer_req_compl - handle SCSI and query command completion
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6029   * @hba: per adapter instance
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6030   * @completed_reqs: bitmask that indicates which requests to complete
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6031   */
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13 @6032  static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6033  					unsigned long completed_reqs)
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6034  {
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6035  	int tag;
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6036  
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6037  	for_each_set_bit(tag, &completed_reqs, hba->nutrs)
c30d8d010b5efd drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6038  		ufshcd_compl_one_cqe(hba, tag, NULL);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  6039  }
7a3e97b0dc4bba drivers/scsi/ufs/ufshcd.c Santosh Yaraganavi    2012-02-29  6040  
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6041  /* Any value that is not an existing queue number is fine for this constant. */
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6042  enum {
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6043  	UFSHCD_POLL_FROM_INTERRUPT_CONTEXT = -1
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6044  };
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6045  
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18 @6046  static void ufshcd_clear_polled(struct ufs_hba *hba,
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6047  				unsigned long *completed_reqs)
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6048  {
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6049  	int tag;
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6050  
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6051  	for_each_set_bit(tag, completed_reqs, hba->nutrs) {
22089c218037ca drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6052  		struct scsi_cmnd *cmd = scsi_host_find_tag(hba->host, tag);
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6053  
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6054  		if (!cmd)
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6055  			continue;
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6056  		if (scsi_cmd_to_rq(cmd)->cmd_flags & REQ_POLLED)
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6057  			__clear_bit(tag, completed_reqs);
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6058  	}
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6059  }
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6060  
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6061  /*
3a17fefe0f1960 drivers/ufs/core/ufshcd.c Bart Van Assche       2023-07-27  6062   * Return: > 0 if one or more commands have been completed or 0 if no
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6063   * requests have been completed.
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6064   */
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03 @6065  static int ufshcd_poll(struct Scsi_Host *shost, unsigned int queue_num)
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6066  {
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6067  	struct ufs_hba *hba = shost_priv(shost);
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6068  	unsigned long completed_reqs, flags;
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6069  	u32 tr_doorbell;
ed975065c31c2a drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6070  	struct ufs_hw_queue *hwq;
ed975065c31c2a drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6071  
0fca3318e550d4 drivers/ufs/core/ufshcd.c Bart Van Assche       2024-07-08  6072  	if (hba->mcq_enabled) {
ccb23dc3435a0d drivers/ufs/core/ufshcd.c Po-Wen Kao            2023-06-10  6073  		hwq = &hba->uhq[queue_num];
ed975065c31c2a drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6074  
ed975065c31c2a drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6075  		return ufshcd_mcq_poll_cqe_lock(hba, hwq);
ed975065c31c2a drivers/ufs/core/ufshcd.c Asutosh Das           2023-01-13  6076  	}
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6077  
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6078  	spin_lock_irqsave(&hba->outstanding_lock, flags);
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6079  	tr_doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6080  	completed_reqs = ~tr_doorbell & hba->outstanding_reqs;
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6081  	WARN_ONCE(completed_reqs & ~hba->outstanding_reqs,
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6082  		  "completed: %#lx; outstanding: %#lx\n", completed_reqs,
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6083  		  hba->outstanding_reqs);
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6084  	if (queue_num == UFSHCD_POLL_FROM_INTERRUPT_CONTEXT) {
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6085  		/* Do not complete polled requests from interrupt context. */
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6086  		ufshcd_clear_polled(hba, &completed_reqs);
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6087  	}
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6088  	hba->outstanding_reqs &= ~completed_reqs;
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6089  	spin_unlock_irqrestore(&hba->outstanding_lock, flags);
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6090  
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6091  	if (completed_reqs)
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6092  		__ufshcd_transfer_req_compl(hba, completed_reqs);
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6093  
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6094  	return completed_reqs != 0;
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6095  }
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6096  
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31 @6097  static bool ufshcd_mcq_force_compl_one(struct request *rq, void *priv)
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6098  {
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6099  	struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq);
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6100  	struct scsi_device *sdev = rq->q->queuedata;
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6101  	struct Scsi_Host *shost = sdev->host;
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6102  	struct ufs_hba *hba = shost_priv(shost);
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6103  	struct ufs_hw_queue *hwq = ufshcd_mcq_req_to_hwq(hba, rq);
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6104  
4b6c0d9cca359d drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6105  	if (blk_mq_is_reserved_rq(rq) || !hwq)
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6106  		return true;
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6107  
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6108  	/*
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6109  	 * For those cmds of which the cqes are not present in the cq, complete
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6110  	 * them explicitly.
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6111  	 */
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6112  	scoped_guard(spinlock_irqsave, &hwq->cq_lock) {
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6113  		if (!test_bit(SCMD_STATE_COMPLETE, &cmd->state)) {
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6114  			set_host_byte(cmd, DID_REQUEUE);
22089c218037ca drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6115  			ufshcd_release_scsi_cmd(hba, cmd);
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6116  			scsi_done(cmd);
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6117  		}
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6118  	}
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6119  
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6120  	return true;
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6121  }
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6122  
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6123  /**
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6124   * ufshcd_mcq_compl_pending_transfer - MCQ mode function. It is
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6125   * invoked from the error handler context or ufshcd_host_reset_and_restore()
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6126   * to complete the pending transfers and free the resources associated with
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6127   * the scsi command.
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6128   *
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6129   * @hba: per adapter instance
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6130   * @force_compl: This flag is set to true when invoked
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6131   * from ufshcd_host_reset_and_restore() in which case it requires special
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6132   * handling because the host controller has been reset by ufshcd_hba_stop().
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6133   */
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29 @6134  static void ufshcd_mcq_compl_pending_transfer(struct ufs_hba *hba,
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6135  					      bool force_compl)
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6136  {
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6137  	int i;
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6138  
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6139  	for (i = 0; i < hba->nr_hw_queues; i++) {
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6140  		if (force_compl)
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6141  			ufshcd_mcq_compl_all_cqes_lock(hba, &hba->uhq[i]);
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6142  		else
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6143  			ufshcd_mcq_poll_cqe_lock(hba, &hba->uhq[i]);
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6144  	}
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6145  
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6146  	if (force_compl)
63a5b959c854c3 drivers/ufs/core/ufshcd.c Bart Van Assche       2025-10-31  6147  		blk_mq_tagset_busy_iter(&hba->host->tag_set,
469fa055664bfd drivers/ufs/core/ufshcd.c Stanley Jhu           2026-09-28  6148  					ufshcd_mcq_force_compl_one, NULL);
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6149  }
ab248643d3d68b drivers/ufs/core/ufshcd.c Bao D. Nguyen         2023-05-29  6150  
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6151  /**
1f522c5049016c drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-07-21  6152   * ufshcd_transfer_req_compl - handle SCSI and query command completion
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6153   * @hba: per adapter instance
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  6154   *
3a17fefe0f1960 drivers/ufs/core/ufshcd.c Bart Van Assche       2023-07-27  6155   * Return:
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  6156   *  IRQ_HANDLED - If interrupt is valid
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  6157   *  IRQ_NONE    - If invalid interrupt
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6158   */
11682523573c1c drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-10-20 @6159  static irqreturn_t ufshcd_transfer_req_compl(struct ufs_hba *hba)
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6160  {
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6161  	/* Resetting interrupt aggregation counters first and reading the
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6162  	 * DOOR_BELL afterward allows us to handle all the completed requests.
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6163  	 * In order to prevent other interrupts starvation the DB is read once
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6164  	 * after reset. The down side of this solution is the possibility of
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6165  	 * false interrupt if device completes another request after resetting
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6166  	 * aggregation and before reading the DB.
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6167  	 */
b638b5eb624bd5 drivers/scsi/ufs/ufshcd.c Alim Akhtar           2020-05-28  6168  	if (ufshcd_is_intr_aggr_allowed(hba) &&
b638b5eb624bd5 drivers/scsi/ufs/ufshcd.c Alim Akhtar           2020-05-28  6169  	    !(hba->quirks & UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR))
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6170  		ufshcd_reset_intr_aggr(hba);
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6171  
045da3077bc57e drivers/ufs/core/ufshcd.c Akinobu Mita          2023-11-18  6172  	if (ufs_fail_completion(hba))
c11a1ae9b8f65e drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-07-21  6173  		return IRQ_HANDLED;
c11a1ae9b8f65e drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-07-21  6174  
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6175  	/*
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6176  	 * Ignore the ufshcd_poll() return value and return IRQ_HANDLED since we
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6177  	 * do not want polling to trigger spurious interrupt complaints.
eaab9b57305496 drivers/scsi/ufs/ufshcd.c Bart Van Assche       2021-12-03  6178  	 */
ee8c88cab4afbd drivers/ufs/core/ufshcd.c Bart Van Assche       2022-11-18  6179  	ufshcd_poll(hba->host, UFSHCD_POLL_FROM_INTERRUPT_CONTEXT);
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6180  
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  6181  	return IRQ_HANDLED;
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6182  }
9a47ec7c390e81 drivers/scsi/ufs/ufshcd.c Yaniv Gardi           2016-03-10  6183  
7deedfdaeccfec drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6184  int __ufshcd_write_ee_control(struct ufs_hba *hba, u32 ee_ctrl_mask)
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6185  {
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6186  	return ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_WRITE_ATTR,
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6187  				       QUERY_ATTR_IDN_EE_CONTROL, 0, 0,
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6188  				       &ee_ctrl_mask);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6189  }
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6190  
7deedfdaeccfec drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6191  int ufshcd_write_ee_control(struct ufs_hba *hba)
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6192  {
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6193  	int err;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6194  
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6195  	mutex_lock(&hba->ee_ctrl_mutex);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6196  	err = __ufshcd_write_ee_control(hba, hba->ee_ctrl_mask);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6197  	mutex_unlock(&hba->ee_ctrl_mutex);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6198  	if (err)
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6199  		dev_err(hba->dev, "%s: failed to write ee control %d\n",
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6200  			__func__, err);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6201  	return err;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6202  }
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6203  
35d11ec239e099 drivers/ufs/core/ufshcd.c Krzysztof Kozlowski   2022-06-23 @6204  int ufshcd_update_ee_control(struct ufs_hba *hba, u16 *mask,
35d11ec239e099 drivers/ufs/core/ufshcd.c Krzysztof Kozlowski   2022-06-23  6205  			     const u16 *other_mask, u16 set, u16 clr)
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6206  {
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6207  	u16 new_mask, ee_ctrl_mask;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6208  	int err = 0;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6209  
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6210  	mutex_lock(&hba->ee_ctrl_mutex);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6211  	new_mask = (*mask & ~clr) | set;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6212  	ee_ctrl_mask = new_mask | *other_mask;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6213  	if (ee_ctrl_mask != hba->ee_ctrl_mask)
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6214  		err = __ufshcd_write_ee_control(hba, ee_ctrl_mask);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6215  	/* Still need to update 'mask' even if 'ee_ctrl_mask' was unchanged */
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6216  	if (!err) {
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6217  		hba->ee_ctrl_mask = ee_ctrl_mask;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6218  		*mask = new_mask;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6219  	}
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6220  	mutex_unlock(&hba->ee_ctrl_mutex);
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6221  	return err;
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6222  }
cd4694756188dc drivers/scsi/ufs/ufshcd.c Adrian Hunter         2021-02-09  6223  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

      parent reply	other threads:[~2026-10-26 18:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20261026053046epcas2p31ae8a493f40c0f12523feec6e036072f@epcas2p3.samsung.com>
2026-10-26  5:26 ` HOYOUNG SEO
2026-10-26 14:42   ` Stanley Jhu
2026-10-26 15:34     ` Bart Van Assche
2026-10-26 17:44   ` kernel test robot
2026-10-26 18:44   ` kernel test robot [this message]

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=202610270253.MSZEgXih-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alim.akhtar@samsung.com \
    --cc=avri.altman@wdc.com \
    --cc=bvanassche@acm.org \
    --cc=cpgs@samsung.com \
    --cc=h10.kim@samsung.com \
    --cc=hy50.seo@samsung.com \
    --cc=jejb@linux.ibm.com \
    --cc=kwangwon.min@samsung.com \
    --cc=kwmad.kim@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®