Re: [PATCH 3/3] dmaengine: qcom: Add GPI dma driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vinod,

I love your patch! Yet something to improve:

[auto build test ERROR on vkoul-dmaengine/next]
[also build test ERROR on v5.9-rc2 next-20200824]
[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/dmaengine-Add-support-for-Qcom-GSI-dma-controller/20200824-174027
base:   https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
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
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64 

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

All error/warnings (new ones prefixed by >>):

>> drivers/dma/qcom/gpi.c:7: warning: "DEBUG" redefined
       7 | #define DEBUG
         | 
   <command-line>: note: this is the location of the previous definition
   drivers/dma/qcom/gpi.c: In function 'gpi_process_imed_data_event':
>> drivers/dma/qcom/gpi.c:1048:2: error: implicit declaration of function 'kfree'; did you mean 'vfree'? [-Werror=implicit-function-declaration]
    1048 |  kfree(gpi_desc);
         |  ^~~~~
         |  vfree
   drivers/dma/qcom/gpi.c: In function 'gpi_prep_slave_sg':
>> drivers/dma/qcom/gpi.c:1772:13: error: implicit declaration of function 'kzalloc'; did you mean 'vzalloc'? [-Werror=implicit-function-declaration]
    1772 |  gpi_desc = kzalloc(sizeof(*gpi_desc), GFP_NOWAIT);
         |             ^~~~~~~
         |             vzalloc
>> drivers/dma/qcom/gpi.c:1772:11: warning: assignment to 'struct gpi_desc *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
    1772 |  gpi_desc = kzalloc(sizeof(*gpi_desc), GFP_NOWAIT);
         |           ^
   cc1: some warnings being treated as errors

# https://github.com/0day-ci/linux/commit/25062cc46a95e9de91752963ea85b934fe7acfa1
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Vinod-Koul/dmaengine-Add-support-for-Qcom-GSI-dma-controller/20200824-174027
git checkout 25062cc46a95e9de91752963ea85b934fe7acfa1
vim +1048 drivers/dma/qcom/gpi.c

   969	
   970	/* process DMA Immediate completion data events */
   971	static void gpi_process_imed_data_event(struct gpii_chan *gpii_chan,
   972						struct immediate_data_event *imed_event)
   973	{
   974		struct gpii *gpii = gpii_chan->gpii;
   975		struct gpi_ring *ch_ring = &gpii_chan->ch_ring;
   976		void *tre = ch_ring->base + (ch_ring->el_size * imed_event->tre_index);
   977		struct dmaengine_result result;
   978		struct gpi_desc *gpi_desc;
   979		struct virt_dma_desc *vd;
   980		unsigned long flags;
   981		u32 chid;
   982	
   983		/*
   984		 * If channel not active don't process event
   985		 */
   986		if (gpii_chan->pm_state != ACTIVE_STATE) {
   987			dev_err(gpii->gpi_dev->dev, "skipping processing event because ch @ %s state\n",
   988				TO_GPI_PM_STR(gpii_chan->pm_state));
   989			return;
   990		}
   991	
   992		spin_lock_irqsave(&gpii_chan->vc.lock, flags);
   993		vd = vchan_next_desc(&gpii_chan->vc);
   994		if (!vd) {
   995			struct gpi_ere *gpi_ere;
   996			struct gpi_tre *gpi_tre;
   997	
   998			spin_unlock_irqrestore(&gpii_chan->vc.lock, flags);
   999			dev_dbg(gpii->gpi_dev->dev, "event without a pending descriptor!\n");
  1000			gpi_ere = (struct gpi_ere *)imed_event;
  1001			dev_dbg(gpii->gpi_dev->dev,
  1002				"Event: %08x %08x %08x %08x\n",
  1003				gpi_ere->dword[0], gpi_ere->dword[1],
  1004				gpi_ere->dword[2], gpi_ere->dword[3]);
  1005			gpi_tre = tre;
  1006			dev_dbg(gpii->gpi_dev->dev,
  1007				"Pending TRE: %08x %08x %08x %08x\n",
  1008				gpi_tre->dword[0], gpi_tre->dword[1],
  1009				gpi_tre->dword[2], gpi_tre->dword[3]);
  1010			return;
  1011		}
  1012		gpi_desc = to_gpi_desc(vd);
  1013		spin_unlock_irqrestore(&gpii_chan->vc.lock, flags);
  1014	
  1015		/*
  1016		 * RP pointed by Event is to last TRE processed,
  1017		 * we need to update ring rp to tre + 1
  1018		 */
  1019		tre += ch_ring->el_size;
  1020		if (tre >= (ch_ring->base + ch_ring->len))
  1021			tre = ch_ring->base;
  1022		ch_ring->rp = tre;
  1023	
  1024		/* make sure rp updates are immediately visible to all cores */
  1025		smp_wmb();
  1026	
  1027		chid = imed_event->chid;
  1028		if (imed_event->code == MSM_GPI_TCE_EOT && gpii->ieob_set) {
  1029			if (chid == GPI_RX_CHAN)
  1030				goto gpi_free_desc;
  1031			else
  1032				return;
  1033		}
  1034	
  1035		if (imed_event->code == MSM_GPI_TCE_UNEXP_ERR)
  1036			result.result = DMA_TRANS_ABORTED;
  1037		else
  1038			result.result = DMA_TRANS_NOERROR;
  1039		result.residue = gpi_desc->len - imed_event->length;
  1040	
  1041		dma_cookie_complete(&vd->tx);
  1042		dmaengine_desc_get_callback_invoke(&vd->tx, &result);
  1043	
  1044	gpi_free_desc:
  1045		spin_lock_irqsave(&gpii_chan->vc.lock, flags);
  1046		list_del(&vd->node);
  1047		spin_unlock_irqrestore(&gpii_chan->vc.lock, flags);
> 1048		kfree(gpi_desc);
  1049		gpi_desc = NULL;
  1050	}
  1051	

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux