drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2789 iwl_mvm_resume_firmware() error: uninitialized symbol 'd3_status'.

From: Dan Carpenter
Date: Tue Feb 14 2023 - 03:27:29 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f6feea56f66d34259c4222fa02e8171c4f2673d1
commit: b75dac847c9453d017d463a97e253416abf93d36 wifi: iwlwifi: mvm: trigger resume flow before wait for notifications
config: x86_64-randconfig-m001-20230213 (https://download.01.org/0day-ci/archive/20230214/202302140947.nQROevUz-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <error27@xxxxxxxxx>
| Link: https://lore.kernel.org/r/202302140947.nQROevUz-lkp@xxxxxxxxx/

smatch warnings:
drivers/net/wireless/intel/iwlwifi/mvm/d3.c:2789 iwl_mvm_resume_firmware() error: uninitialized symbol 'd3_status'.

vim +/d3_status +2789 drivers/net/wireless/intel/iwlwifi/mvm/d3.c

4da46a06d4430a Haim Dreyfuss 2022-09-06 2773
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2774 static int iwl_mvm_resume_firmware(struct iwl_mvm *mvm, bool test)
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2775 {
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2776 int ret;
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2777 enum iwl_d3_status d3_status;
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2778 struct iwl_host_cmd cmd = {
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2779 .id = D0I3_END_CMD,
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2780 .flags = CMD_WANT_SKB | CMD_SEND_IN_D3,
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2781 };
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2782 bool reset = fw_has_capa(&mvm->fw->ucode_capa,
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2783 IWL_UCODE_TLV_CAPA_CNSLDTD_D3_D0_IMG);
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2784
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2785 ret = iwl_trans_d3_resume(mvm->trans, &d3_status, test, !reset);
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2786 if (ret)
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2787 return ret;
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2788
b75dac847c9453 Haim, Dreyfuss 2022-09-06 @2789 if (d3_status != IWL_D3_STATUS_ALIVE) {

The iwl_trans_d3_resume() function does not initialize d3_status if
trans->ops->d3_resume is NULL.

b75dac847c9453 Haim, Dreyfuss 2022-09-06 2790 IWL_INFO(mvm, "Device was reset during suspend\n");
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2791 return -ENOENT;
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2792 }
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2793
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2794 /*
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2795 * We should trigger resume flow using command only for 22000 family
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2796 * AX210 and above don't need the command since they have
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2797 * the doorbell interrupt.
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2798 */
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2799 if (mvm->trans->trans_cfg->device_family <= IWL_DEVICE_FAMILY_22000 &&
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2800 fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_D0I3_END_FIRST)) {
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2801 ret = iwl_mvm_send_cmd(mvm, &cmd);
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2802 if (ret < 0)
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2803 IWL_ERR(mvm, "Failed to send D0I3_END_CMD first (%d)\n",
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2804 ret);
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2805 }
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2806
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2807 return ret;
b75dac847c9453 Haim, Dreyfuss 2022-09-06 2808 }

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