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: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20261026053046epcas2p31ae8a493f40c0f12523feec6e036072f@epcas2p3.samsung.com>
2026-10-26 5:26 ` [PATCH v4] scsi: ufs: Change the error check sequence for auto hibern8 HOYOUNG SEO
2026-10-26 9:23 ` sashiko-bot
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 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.