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

From: kernel test robot
Date: Mon Aug 24 2020 - 10:05:56 EST


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