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
prev 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®