All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/hid/intel-ish-hid/ishtp-fw-loader.c:714 ish_fw_xfer_direct_dma() error: uninitialized symbol 'rv'.
Date: Wed, 31 Aug 2022 11:26:56 +0800	[thread overview]
Message-ID: <202208311107.VDaPShK2-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 9704 bytes --]

BCC: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Gwendal Grignou <gwendal@chromium.org>
CC: Jiri Kosina <jkosina@suse.cz>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dcf8e5633e2e69ad60b730ab5905608b756a032f
commit: f97ec5d75e9261a5da78dc28a8955b7cc0c4468b HID: intel-ish-hid: Use dma_alloc_coherent for firmware update
date:   6 months ago
:::::: branch date: 31 hours ago
:::::: commit date: 6 months ago
config: x86_64-randconfig-m031-20220829 (https://download.01.org/0day-ci/archive/20220831/202208311107.VDaPShK2-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/hid/intel-ish-hid/ishtp-fw-loader.c:714 ish_fw_xfer_direct_dma() error: uninitialized symbol 'rv'.

vim +/rv +714 drivers/hid/intel-ish-hid/ishtp-fw-loader.c

91b228107da3e4 Rushikesh S Kadam 2019-04-02  618  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  619  /**
91b228107da3e4 Rushikesh S Kadam 2019-04-02  620   * ish_fw_xfer_direct_dma() - Loads ISH firmware using direct dma
91b228107da3e4 Rushikesh S Kadam 2019-04-02  621   * @client_data:	Client data instance
91b228107da3e4 Rushikesh S Kadam 2019-04-02  622   * @fw:			Pointer to firmware data struct in host memory
91b228107da3e4 Rushikesh S Kadam 2019-04-02  623   * @fw_info:		Loader firmware properties
91b228107da3e4 Rushikesh S Kadam 2019-04-02  624   *
91b228107da3e4 Rushikesh S Kadam 2019-04-02  625   * Host firmware load is a unique case where we need to download
91b228107da3e4 Rushikesh S Kadam 2019-04-02  626   * a large firmware image (200+ Kb). This function implements
91b228107da3e4 Rushikesh S Kadam 2019-04-02  627   * direct DMA transfer in kernel and ISH firmware. This allows
91b228107da3e4 Rushikesh S Kadam 2019-04-02  628   * us to overcome the ISH-TP 4 Kb limit, and allows us to DMA
91b228107da3e4 Rushikesh S Kadam 2019-04-02  629   * directly to ISH UMA at location of choice.
91b228107da3e4 Rushikesh S Kadam 2019-04-02  630   * Function depends on corresponding support in ISH firmware.
91b228107da3e4 Rushikesh S Kadam 2019-04-02  631   *
91b228107da3e4 Rushikesh S Kadam 2019-04-02  632   * Return: 0 for success, negative error code for failure.
91b228107da3e4 Rushikesh S Kadam 2019-04-02  633   */
91b228107da3e4 Rushikesh S Kadam 2019-04-02  634  static int ish_fw_xfer_direct_dma(struct ishtp_cl_data *client_data,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  635  				  const struct firmware *fw,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  636  				  const struct shim_fw_info fw_info)
91b228107da3e4 Rushikesh S Kadam 2019-04-02  637  {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  638  	int rv;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  639  	void *dma_buf;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  640  	dma_addr_t dma_buf_phy;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  641  	u32 fragment_offset, fragment_size, payload_max_size;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  642  	struct loader_msg_hdr ldr_xfer_dma_frag_ack;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  643  	struct loader_xfer_dma_fragment ldr_xfer_dma_frag;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  644  	struct device *devc = ishtp_get_pci_device(client_data->cl_device);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  645  	u32 shim_fw_buf_size =
91b228107da3e4 Rushikesh S Kadam 2019-04-02  646  		fw_info.ldr_capability.max_dma_buf_size;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  647  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  648  	/*
91b228107da3e4 Rushikesh S Kadam 2019-04-02  649  	 * payload_max_size should be set to minimum of
91b228107da3e4 Rushikesh S Kadam 2019-04-02  650  	 *  (1) Size of firmware to be loaded,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  651  	 *  (2) Max DMA buffer size supported by Shim firmware,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  652  	 *  (3) DMA buffer size limit set by boot_param dma_buf_size_limit.
91b228107da3e4 Rushikesh S Kadam 2019-04-02  653  	 */
91b228107da3e4 Rushikesh S Kadam 2019-04-02  654  	payload_max_size = min3(fw->size,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  655  				(size_t)shim_fw_buf_size,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  656  				(size_t)dma_buf_size_limit);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  657  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  658  	/*
91b228107da3e4 Rushikesh S Kadam 2019-04-02  659  	 * Buffer size should be multiple of cacheline size
91b228107da3e4 Rushikesh S Kadam 2019-04-02  660  	 * if it's not, select the previous cacheline boundary.
91b228107da3e4 Rushikesh S Kadam 2019-04-02  661  	 */
91b228107da3e4 Rushikesh S Kadam 2019-04-02  662  	payload_max_size &= ~(L1_CACHE_BYTES - 1);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  663  
f97ec5d75e9261 Gwendal Grignou   2022-02-08  664  	dma_buf = dma_alloc_coherent(devc, payload_max_size, &dma_buf_phy, GFP_KERNEL);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  665  	if (!dma_buf) {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  666  		client_data->flag_retry = true;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  667  		return -ENOMEM;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  668  	}
91b228107da3e4 Rushikesh S Kadam 2019-04-02  669  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  670  	ldr_xfer_dma_frag.fragment.hdr.command = LOADER_CMD_XFER_FRAGMENT;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  671  	ldr_xfer_dma_frag.fragment.xfer_mode = LOADER_XFER_MODE_DIRECT_DMA;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  672  	ldr_xfer_dma_frag.ddr_phys_addr = (u64)dma_buf_phy;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  673  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  674  	/* Send the firmware image in chucks of payload_max_size */
91b228107da3e4 Rushikesh S Kadam 2019-04-02  675  	fragment_offset = 0;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  676  	while (fragment_offset < fw->size) {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  677  		if (fragment_offset + payload_max_size < fw->size) {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  678  			fragment_size = payload_max_size;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  679  			ldr_xfer_dma_frag.fragment.is_last = 0;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  680  		} else {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  681  			fragment_size = fw->size - fragment_offset;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  682  			ldr_xfer_dma_frag.fragment.is_last = 1;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  683  		}
91b228107da3e4 Rushikesh S Kadam 2019-04-02  684  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  685  		ldr_xfer_dma_frag.fragment.offset = fragment_offset;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  686  		ldr_xfer_dma_frag.fragment.size = fragment_size;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  687  		memcpy(dma_buf, &fw->data[fragment_offset], fragment_size);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  688  
f97ec5d75e9261 Gwendal Grignou   2022-02-08  689  		/* Flush cache to be sure the data is in main memory. */
91b228107da3e4 Rushikesh S Kadam 2019-04-02  690  		clflush_cache_range(dma_buf, payload_max_size);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  691  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  692  		dev_dbg(cl_data_to_dev(client_data),
91b228107da3e4 Rushikesh S Kadam 2019-04-02  693  			"xfer_mode=dma offset=0x%08x size=0x%x is_last=%d ddr_phys_addr=0x%016llx\n",
91b228107da3e4 Rushikesh S Kadam 2019-04-02  694  			ldr_xfer_dma_frag.fragment.offset,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  695  			ldr_xfer_dma_frag.fragment.size,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  696  			ldr_xfer_dma_frag.fragment.is_last,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  697  			ldr_xfer_dma_frag.ddr_phys_addr);
91b228107da3e4 Rushikesh S Kadam 2019-04-02  698  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  699  		rv = loader_cl_send(client_data,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  700  				    (u8 *)&ldr_xfer_dma_frag,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  701  				    sizeof(ldr_xfer_dma_frag),
91b228107da3e4 Rushikesh S Kadam 2019-04-02  702  				    (u8 *)&ldr_xfer_dma_frag_ack,
91b228107da3e4 Rushikesh S Kadam 2019-04-02  703  				    sizeof(ldr_xfer_dma_frag_ack));
91b228107da3e4 Rushikesh S Kadam 2019-04-02  704  		if (rv < 0) {
91b228107da3e4 Rushikesh S Kadam 2019-04-02  705  			client_data->flag_retry = true;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  706  			goto end_err_resp_buf_release;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  707  		}
91b228107da3e4 Rushikesh S Kadam 2019-04-02  708  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  709  		fragment_offset += fragment_size;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  710  	}
91b228107da3e4 Rushikesh S Kadam 2019-04-02  711  
91b228107da3e4 Rushikesh S Kadam 2019-04-02  712  end_err_resp_buf_release:
f97ec5d75e9261 Gwendal Grignou   2022-02-08  713  	dma_free_coherent(devc, payload_max_size, dma_buf, dma_buf_phy);
91b228107da3e4 Rushikesh S Kadam 2019-04-02 @714  	return rv;
91b228107da3e4 Rushikesh S Kadam 2019-04-02  715  }
91b228107da3e4 Rushikesh S Kadam 2019-04-02  716  

:::::: The code at line 714 was first introduced by commit
:::::: 91b228107da3e41558449a62cd93816b47b3b4b5 HID: intel-ish-hid: ISH firmware loader client driver

:::::: TO: Rushikesh S Kadam <rushikesh.s.kadam@intel.com>
:::::: CC: Jiri Kosina <jkosina@suse.cz>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

             reply	other threads:[~2022-08-31  3:26 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-31  3:26 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-10-19  9:07 drivers/hid/intel-ish-hid/ishtp-fw-loader.c:714 ish_fw_xfer_direct_dma() error: uninitialized symbol 'rv' kernel test robot
2022-10-19  4:54 kernel test robot
2022-09-01 18:38 kernel test robot
2022-05-03 14:04 kernel test robot

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=202208311107.VDaPShK2-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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.