All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Vinod Koul <vkoul@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Mark Brown <broonie@kernel.org>,
	Wolfram Sang <wsa-dev@sang-engineering.com>
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	Vinod Koul <vkoul@kernel.org>, Andy Gross <agross@kernel.org>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Douglas Anderson <dianders@chromium.org>,
	Matthias Kaehlcke <mka@chromium.org>,
	linux-spi@vger.kernel.org, linux-i2c@vger.kernel.org
Subject: Re: [PATCH v3 4/5] spi: spi-geni-qcom: Add support for GPI dma
Date: Fri, 25 Jun 2021 20:10:09 +0800	[thread overview]
Message-ID: <202106252043.yop2gBOp-lkp@intel.com> (raw)
In-Reply-To: <20210625052213.32260-5-vkoul@kernel.org>

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

Hi Vinod,

I love your patch! Perhaps something to improve:

[auto build test WARNING on spi/for-next]
[also build test WARNING on wsa/i2c/for-next asoc/for-next linus/master v5.13-rc7 next-20210624]
[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]

url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/Add-and-enable-GPI-DMA-users/20210625-132320
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: x86_64-randconfig-a012-20210625 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9ca0171a9ffdef5fdb1511d197a3fd72490362de)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3632ac4a40c3ef7f86f081d462bf17b45e4c0085
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Vinod-Koul/Add-and-enable-GPI-DMA-users/20210625-132320
        git checkout 3632ac4a40c3ef7f86f081d462bf17b45e4c0085
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/spi/spi-geni-qcom.c:496:44: warning: variable 'i' is uninitialized when used here [-Wuninitialized]
                   dev_err(mas->dev, "Tx[%d] timeout%lu\n", i, timeout);
                                                            ^
   include/linux/dev_printk.h:112:32: note: expanded from macro 'dev_err'
           _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
                                         ^~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:407:12: note: initialize the variable 'i' to silence this warning
           int ret, i;
                     ^
                      = 0
>> drivers/spi/spi-geni-qcom.c:579:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (IS_ERR_OR_NULL(mas->gsi))
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:590:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/spi/spi-geni-qcom.c:579:2: note: remove the 'if' if its condition is always false
           if (IS_ERR_OR_NULL(mas->gsi))
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:562:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   2 warnings generated.


vim +/i +496 drivers/spi/spi-geni-qcom.c

   398	
   399	static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas,
   400				  struct spi_device *spi_slv, struct spi_master *spi)
   401	{
   402		unsigned long flags = DMA_PREP_INTERRUPT | DMA_CTRL_ACK;
   403		struct spi_geni_gsi *gsi;
   404		struct dma_slave_config config = {};
   405		struct gpi_spi_config peripheral = {};
   406		unsigned long timeout, jiffies;
   407		int ret, i;
   408	
   409		config.peripheral_config = &peripheral;
   410		config.peripheral_size = sizeof(peripheral);
   411		peripheral.set_config = true;
   412	
   413		if (xfer->bits_per_word != mas->cur_bits_per_word ||
   414		    xfer->speed_hz != mas->cur_speed_hz) {
   415			mas->cur_bits_per_word = xfer->bits_per_word;
   416			mas->cur_speed_hz = xfer->speed_hz;
   417		}
   418	
   419		if (!(mas->cur_bits_per_word % MIN_WORD_LEN)) {
   420			peripheral.rx_len = ((xfer->len << 3) / mas->cur_bits_per_word);
   421		} else {
   422			int bytes_per_word = (mas->cur_bits_per_word / BITS_PER_BYTE) + 1;
   423	
   424			peripheral.rx_len = (xfer->len / bytes_per_word);
   425		}
   426	
   427		if (xfer->tx_buf && xfer->rx_buf) {
   428			peripheral.cmd = SPI_DUPLEX;
   429		} else if (xfer->tx_buf) {
   430			peripheral.cmd = SPI_TX;
   431			peripheral.rx_len = 0;
   432		} else if (xfer->rx_buf) {
   433			peripheral.cmd = SPI_RX;
   434		}
   435	
   436		if (spi_slv->mode & SPI_LOOP)
   437			peripheral.loopback_en = true;
   438		if (spi_slv->mode & SPI_CPOL)
   439			peripheral.clock_pol_high = true;
   440		if (spi_slv->mode & SPI_CPHA)
   441			peripheral.data_pol_high = true;
   442	
   443		peripheral.cs = spi_slv->chip_select;
   444		peripheral.pack_en = true;
   445		peripheral.word_len = xfer->bits_per_word - MIN_WORD_LEN;
   446		peripheral.fragmentation = FRAGMENTATION;
   447	
   448		ret = get_spi_clk_cfg(mas->cur_speed_hz, mas,
   449				      &peripheral.clk_src, &peripheral.clk_div);
   450		if (ret) {
   451			dev_err(mas->dev, "Err in get_spi_clk_cfg() :%d\n", ret);
   452			return ret;
   453		}
   454	
   455		gsi = &mas->gsi[mas->num_xfers];
   456		gsi->rx_cb.mas = mas;
   457		gsi->rx_cb.xfer = xfer;
   458	
   459		if (peripheral.cmd & SPI_RX) {
   460			dmaengine_slave_config(mas->rx, &config);
   461			gsi->rx_desc = dmaengine_prep_slave_sg(mas->rx, xfer->rx_sg.sgl, xfer->rx_sg.nents,
   462							       DMA_DEV_TO_MEM, flags);
   463			if (!gsi->rx_desc) {
   464				dev_err(mas->dev, "Err setting up rx desc\n");
   465				return -EIO;
   466			}
   467			gsi->rx_desc->callback_result = spi_gsi_rx_callback_result;
   468			gsi->rx_desc->callback_param = &gsi->rx_cb;
   469		}
   470	
   471		dmaengine_slave_config(mas->tx, &config);
   472		gsi->tx_desc = dmaengine_prep_slave_sg(mas->tx, xfer->tx_sg.sgl, xfer->tx_sg.nents,
   473						       DMA_MEM_TO_DEV, flags);
   474		if (!gsi->tx_desc) {
   475			dev_err(mas->dev, "Err setting up tx desc\n");
   476			return -EIO;
   477		}
   478	
   479		gsi->tx_cb.mas = mas;
   480		gsi->tx_cb.xfer = xfer;
   481		gsi->tx_desc->callback_result = spi_gsi_tx_callback_result;
   482		gsi->tx_desc->callback_param = &gsi->tx_cb;
   483	
   484		if (peripheral.cmd & SPI_RX)
   485			gsi->rx_cookie = dmaengine_submit(gsi->rx_desc);
   486		gsi->tx_cookie = dmaengine_submit(gsi->tx_desc);
   487	
   488		if (peripheral.cmd & SPI_RX)
   489			dma_async_issue_pending(mas->rx);
   490		dma_async_issue_pending(mas->tx);
   491		mas->num_xfers++;
   492	
   493		jiffies = msecs_to_jiffies(SPI_XFER_TIMEOUT_MS);
   494		timeout = wait_for_completion_timeout(&mas->tx_cb, jiffies);
   495		if (timeout <= 0) {
 > 496			dev_err(mas->dev, "Tx[%d] timeout%lu\n", i, timeout);
   497			ret = -ETIMEDOUT;
   498			goto err_gsi_geni_transfer_one;
   499		}
   500	
   501		if (peripheral.cmd & SPI_RX) {
   502			jiffies = msecs_to_jiffies(SPI_XFER_TIMEOUT_MS);
   503			timeout = wait_for_completion_timeout(&mas->rx_cb, jiffies);
   504			if (timeout <= 0) {
   505				dev_err(mas->dev, "Rx[%d] timeout%lu\n", i, timeout);
   506				ret = -ETIMEDOUT;
   507				goto err_gsi_geni_transfer_one;
   508			}
   509		}
   510	
   511		spi_finalize_current_transfer(spi);
   512		return 0;
   513	
   514	err_gsi_geni_transfer_one:
   515		dmaengine_terminate_all(mas->tx);
   516		return ret;
   517	}
   518	
   519	static bool geni_can_dma(struct spi_controller *ctlr,
   520				 struct spi_device *slv, struct spi_transfer *xfer)
   521	{
   522		struct spi_geni_master *mas = spi_master_get_devdata(slv->master);
   523	
   524		/* check if dma is supported */
   525		if (mas->cur_xfer_mode == GENI_GPI_DMA)
   526			return true;
   527	
   528		return false;
   529	}
   530	
   531	static int spi_geni_prepare_message(struct spi_master *spi,
   532						struct spi_message *spi_msg)
   533	{
   534		struct spi_geni_master *mas = spi_master_get_devdata(spi);
   535		int ret;
   536	
   537		switch (mas->cur_xfer_mode) {
   538		case GENI_SE_FIFO:
   539			if (spi_geni_is_abort_still_pending(mas))
   540				return -EBUSY;
   541			ret = setup_fifo_params(spi_msg->spi, spi);
   542			if (ret)
   543				dev_err(mas->dev, "Couldn't select mode %d\n", ret);
   544			return ret;
   545	
   546		case GENI_GPI_DMA:
   547			mas->num_xfers = 0;
   548			reinit_completion(&mas->tx_cb);
   549			reinit_completion(&mas->rx_cb);
   550			memset(mas->gsi, 0, (sizeof(struct spi_geni_gsi) * NUM_SPI_XFER));
   551	
   552			return 0;
   553		}
   554	
   555		dev_err(mas->dev, "Mode not supported %d", mas->cur_xfer_mode);
   556		return -EINVAL;
   557	}
   558	
   559	static int spi_geni_grab_gpi_chan(struct spi_geni_master *mas)
   560	{
   561		size_t gsi_sz;
   562		int ret;
   563	
   564		mas->tx = dma_request_chan(mas->dev, "tx");
   565		if (IS_ERR_OR_NULL(mas->tx)) {
   566			dev_err(mas->dev, "Failed to get tx DMA ch %ld", PTR_ERR(mas->tx));
   567			ret = PTR_ERR(mas->tx);
   568			goto err_tx;
   569		}
   570		mas->rx = dma_request_chan(mas->dev, "rx");
   571		if (IS_ERR_OR_NULL(mas->rx)) {
   572			dev_err(mas->dev, "Failed to get rx DMA ch %ld", PTR_ERR(mas->rx));
   573			ret = PTR_ERR(mas->rx);
   574			goto err_rx;
   575		}
   576	
   577		gsi_sz = sizeof(struct spi_geni_gsi) * NUM_SPI_XFER;
   578		mas->gsi = devm_kzalloc(mas->dev, gsi_sz, GFP_KERNEL);
 > 579		if (IS_ERR_OR_NULL(mas->gsi))
   580			goto err_mem;
   581		return 0;
   582	
   583	err_mem:
   584		dma_release_channel(mas->rx);
   585	err_rx:
   586		dma_release_channel(mas->tx);
   587	err_tx:
   588		mas->tx = NULL;
   589		mas->rx = NULL;
   590		return ret;
   591	}
   592	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 46664 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v3 4/5] spi: spi-geni-qcom: Add support for GPI dma
Date: Fri, 25 Jun 2021 20:10:09 +0800	[thread overview]
Message-ID: <202106252043.yop2gBOp-lkp@intel.com> (raw)
In-Reply-To: <20210625052213.32260-5-vkoul@kernel.org>

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

Hi Vinod,

I love your patch! Perhaps something to improve:

[auto build test WARNING on spi/for-next]
[also build test WARNING on wsa/i2c/for-next asoc/for-next linus/master v5.13-rc7 next-20210624]
[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]

url:    https://github.com/0day-ci/linux/commits/Vinod-Koul/Add-and-enable-GPI-DMA-users/20210625-132320
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: x86_64-randconfig-a012-20210625 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 9ca0171a9ffdef5fdb1511d197a3fd72490362de)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3632ac4a40c3ef7f86f081d462bf17b45e4c0085
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Vinod-Koul/Add-and-enable-GPI-DMA-users/20210625-132320
        git checkout 3632ac4a40c3ef7f86f081d462bf17b45e4c0085
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/spi/spi-geni-qcom.c:496:44: warning: variable 'i' is uninitialized when used here [-Wuninitialized]
                   dev_err(mas->dev, "Tx[%d] timeout%lu\n", i, timeout);
                                                            ^
   include/linux/dev_printk.h:112:32: note: expanded from macro 'dev_err'
           _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
                                         ^~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:407:12: note: initialize the variable 'i' to silence this warning
           int ret, i;
                     ^
                      = 0
>> drivers/spi/spi-geni-qcom.c:579:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (IS_ERR_OR_NULL(mas->gsi))
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:590:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   drivers/spi/spi-geni-qcom.c:579:2: note: remove the 'if' if its condition is always false
           if (IS_ERR_OR_NULL(mas->gsi))
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-geni-qcom.c:562:9: note: initialize the variable 'ret' to silence this warning
           int ret;
                  ^
                   = 0
   2 warnings generated.


vim +/i +496 drivers/spi/spi-geni-qcom.c

   398	
   399	static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas,
   400				  struct spi_device *spi_slv, struct spi_master *spi)
   401	{
   402		unsigned long flags = DMA_PREP_INTERRUPT | DMA_CTRL_ACK;
   403		struct spi_geni_gsi *gsi;
   404		struct dma_slave_config config = {};
   405		struct gpi_spi_config peripheral = {};
   406		unsigned long timeout, jiffies;
   407		int ret, i;
   408	
   409		config.peripheral_config = &peripheral;
   410		config.peripheral_size = sizeof(peripheral);
   411		peripheral.set_config = true;
   412	
   413		if (xfer->bits_per_word != mas->cur_bits_per_word ||
   414		    xfer->speed_hz != mas->cur_speed_hz) {
   415			mas->cur_bits_per_word = xfer->bits_per_word;
   416			mas->cur_speed_hz = xfer->speed_hz;
   417		}
   418	
   419		if (!(mas->cur_bits_per_word % MIN_WORD_LEN)) {
   420			peripheral.rx_len = ((xfer->len << 3) / mas->cur_bits_per_word);
   421		} else {
   422			int bytes_per_word = (mas->cur_bits_per_word / BITS_PER_BYTE) + 1;
   423	
   424			peripheral.rx_len = (xfer->len / bytes_per_word);
   425		}
   426	
   427		if (xfer->tx_buf && xfer->rx_buf) {
   428			peripheral.cmd = SPI_DUPLEX;
   429		} else if (xfer->tx_buf) {
   430			peripheral.cmd = SPI_TX;
   431			peripheral.rx_len = 0;
   432		} else if (xfer->rx_buf) {
   433			peripheral.cmd = SPI_RX;
   434		}
   435	
   436		if (spi_slv->mode & SPI_LOOP)
   437			peripheral.loopback_en = true;
   438		if (spi_slv->mode & SPI_CPOL)
   439			peripheral.clock_pol_high = true;
   440		if (spi_slv->mode & SPI_CPHA)
   441			peripheral.data_pol_high = true;
   442	
   443		peripheral.cs = spi_slv->chip_select;
   444		peripheral.pack_en = true;
   445		peripheral.word_len = xfer->bits_per_word - MIN_WORD_LEN;
   446		peripheral.fragmentation = FRAGMENTATION;
   447	
   448		ret = get_spi_clk_cfg(mas->cur_speed_hz, mas,
   449				      &peripheral.clk_src, &peripheral.clk_div);
   450		if (ret) {
   451			dev_err(mas->dev, "Err in get_spi_clk_cfg() :%d\n", ret);
   452			return ret;
   453		}
   454	
   455		gsi = &mas->gsi[mas->num_xfers];
   456		gsi->rx_cb.mas = mas;
   457		gsi->rx_cb.xfer = xfer;
   458	
   459		if (peripheral.cmd & SPI_RX) {
   460			dmaengine_slave_config(mas->rx, &config);
   461			gsi->rx_desc = dmaengine_prep_slave_sg(mas->rx, xfer->rx_sg.sgl, xfer->rx_sg.nents,
   462							       DMA_DEV_TO_MEM, flags);
   463			if (!gsi->rx_desc) {
   464				dev_err(mas->dev, "Err setting up rx desc\n");
   465				return -EIO;
   466			}
   467			gsi->rx_desc->callback_result = spi_gsi_rx_callback_result;
   468			gsi->rx_desc->callback_param = &gsi->rx_cb;
   469		}
   470	
   471		dmaengine_slave_config(mas->tx, &config);
   472		gsi->tx_desc = dmaengine_prep_slave_sg(mas->tx, xfer->tx_sg.sgl, xfer->tx_sg.nents,
   473						       DMA_MEM_TO_DEV, flags);
   474		if (!gsi->tx_desc) {
   475			dev_err(mas->dev, "Err setting up tx desc\n");
   476			return -EIO;
   477		}
   478	
   479		gsi->tx_cb.mas = mas;
   480		gsi->tx_cb.xfer = xfer;
   481		gsi->tx_desc->callback_result = spi_gsi_tx_callback_result;
   482		gsi->tx_desc->callback_param = &gsi->tx_cb;
   483	
   484		if (peripheral.cmd & SPI_RX)
   485			gsi->rx_cookie = dmaengine_submit(gsi->rx_desc);
   486		gsi->tx_cookie = dmaengine_submit(gsi->tx_desc);
   487	
   488		if (peripheral.cmd & SPI_RX)
   489			dma_async_issue_pending(mas->rx);
   490		dma_async_issue_pending(mas->tx);
   491		mas->num_xfers++;
   492	
   493		jiffies = msecs_to_jiffies(SPI_XFER_TIMEOUT_MS);
   494		timeout = wait_for_completion_timeout(&mas->tx_cb, jiffies);
   495		if (timeout <= 0) {
 > 496			dev_err(mas->dev, "Tx[%d] timeout%lu\n", i, timeout);
   497			ret = -ETIMEDOUT;
   498			goto err_gsi_geni_transfer_one;
   499		}
   500	
   501		if (peripheral.cmd & SPI_RX) {
   502			jiffies = msecs_to_jiffies(SPI_XFER_TIMEOUT_MS);
   503			timeout = wait_for_completion_timeout(&mas->rx_cb, jiffies);
   504			if (timeout <= 0) {
   505				dev_err(mas->dev, "Rx[%d] timeout%lu\n", i, timeout);
   506				ret = -ETIMEDOUT;
   507				goto err_gsi_geni_transfer_one;
   508			}
   509		}
   510	
   511		spi_finalize_current_transfer(spi);
   512		return 0;
   513	
   514	err_gsi_geni_transfer_one:
   515		dmaengine_terminate_all(mas->tx);
   516		return ret;
   517	}
   518	
   519	static bool geni_can_dma(struct spi_controller *ctlr,
   520				 struct spi_device *slv, struct spi_transfer *xfer)
   521	{
   522		struct spi_geni_master *mas = spi_master_get_devdata(slv->master);
   523	
   524		/* check if dma is supported */
   525		if (mas->cur_xfer_mode == GENI_GPI_DMA)
   526			return true;
   527	
   528		return false;
   529	}
   530	
   531	static int spi_geni_prepare_message(struct spi_master *spi,
   532						struct spi_message *spi_msg)
   533	{
   534		struct spi_geni_master *mas = spi_master_get_devdata(spi);
   535		int ret;
   536	
   537		switch (mas->cur_xfer_mode) {
   538		case GENI_SE_FIFO:
   539			if (spi_geni_is_abort_still_pending(mas))
   540				return -EBUSY;
   541			ret = setup_fifo_params(spi_msg->spi, spi);
   542			if (ret)
   543				dev_err(mas->dev, "Couldn't select mode %d\n", ret);
   544			return ret;
   545	
   546		case GENI_GPI_DMA:
   547			mas->num_xfers = 0;
   548			reinit_completion(&mas->tx_cb);
   549			reinit_completion(&mas->rx_cb);
   550			memset(mas->gsi, 0, (sizeof(struct spi_geni_gsi) * NUM_SPI_XFER));
   551	
   552			return 0;
   553		}
   554	
   555		dev_err(mas->dev, "Mode not supported %d", mas->cur_xfer_mode);
   556		return -EINVAL;
   557	}
   558	
   559	static int spi_geni_grab_gpi_chan(struct spi_geni_master *mas)
   560	{
   561		size_t gsi_sz;
   562		int ret;
   563	
   564		mas->tx = dma_request_chan(mas->dev, "tx");
   565		if (IS_ERR_OR_NULL(mas->tx)) {
   566			dev_err(mas->dev, "Failed to get tx DMA ch %ld", PTR_ERR(mas->tx));
   567			ret = PTR_ERR(mas->tx);
   568			goto err_tx;
   569		}
   570		mas->rx = dma_request_chan(mas->dev, "rx");
   571		if (IS_ERR_OR_NULL(mas->rx)) {
   572			dev_err(mas->dev, "Failed to get rx DMA ch %ld", PTR_ERR(mas->rx));
   573			ret = PTR_ERR(mas->rx);
   574			goto err_rx;
   575		}
   576	
   577		gsi_sz = sizeof(struct spi_geni_gsi) * NUM_SPI_XFER;
   578		mas->gsi = devm_kzalloc(mas->dev, gsi_sz, GFP_KERNEL);
 > 579		if (IS_ERR_OR_NULL(mas->gsi))
   580			goto err_mem;
   581		return 0;
   582	
   583	err_mem:
   584		dma_release_channel(mas->rx);
   585	err_rx:
   586		dma_release_channel(mas->tx);
   587	err_tx:
   588		mas->tx = NULL;
   589		mas->rx = NULL;
   590		return ret;
   591	}
   592	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 46664 bytes --]

  reply	other threads:[~2021-06-25 12:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-25  5:22 [PATCH v3 0/5] Add and enable GPI DMA users Vinod Koul
2021-06-25  5:22 ` [PATCH v3 1/5] soc: qcom: geni: move GENI_IF_DISABLE_RO to common header Vinod Koul
2021-06-28 23:37   ` Doug Anderson
2021-06-25  5:22 ` [PATCH v3 2/5] soc: qcom: geni: Add support for gpi dma Vinod Koul
2021-06-28 23:38   ` Doug Anderson
2021-06-29  3:37     ` Vinod Koul
2021-06-25  5:22 ` [PATCH v3 3/5] spi: core: add dma_map_dev for dma device Vinod Koul
2021-06-25  5:22 ` [PATCH v3 4/5] spi: spi-geni-qcom: Add support for GPI dma Vinod Koul
2021-06-25 12:10   ` kernel test robot [this message]
2021-06-25 12:10     ` kernel test robot
2021-06-28 23:37   ` Doug Anderson
2021-10-14 16:04     ` Vinod Koul
2021-10-14 16:55       ` Doug Anderson
2021-10-18 16:53         ` Vinod Koul
2021-06-25  5:22 ` [PATCH v3 5/5] i2c: qcom-geni: Add support for GPI DMA Vinod Koul
2021-06-25 13:24 ` (subset) [PATCH v3 0/5] Add and enable GPI DMA users Mark Brown

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=202106252043.yop2gBOp-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=broonie@kernel.org \
    --cc=clang-built-linux@googlegroups.com \
    --cc=dianders@chromium.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=mka@chromium.org \
    --cc=sumit.semwal@linaro.org \
    --cc=vkoul@kernel.org \
    --cc=wsa-dev@sang-engineering.com \
    /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.