Hi Allen, Thank you for the patch! Yet something to improve: [auto build test ERROR on vkoul-dmaengine/next] [also build test ERROR on shawnguo/for-next v5.9-rc3 next-20200828] [cannot apply to xlnx/master] [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/Allen-Pais/dmaengine-convert-tasklets-to-use-new/20200831-184106 base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git next config: powerpc64-randconfig-r011-20200831 (attached as .config) compiler: powerpc-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=powerpc64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from include/linux/interrupt.h:6, from drivers/dma/fsl_raid.c:61: drivers/dma/fsl_raid.c: In function 'fsl_re_dequeue': >> include/linux/kernel.h:1000:42: error: expected declaration specifiers or '...' before '{' token 1000 | #define container_of(ptr, type, member) ({ \ | ^ include/linux/interrupt.h:637:2: note: in expansion of macro 'container_of' 637 | container_of(callback_tasklet, typeof(*var), tasklet_fieldname) | ^~~~~~~~~~~~ drivers/dma/fsl_raid.c:159:30: note: in expansion of macro 'from_tasklet' 159 | struct fsl_re_chan *re_chan from_tasklet(re_chan, t, irqtask); | ^~~~~~~~~~~~ >> drivers/dma/fsl_raid.c:166:2: error: 're_chan' undeclared (first use in this function) 166 | re_chan = dev_get_drvdata((struct device *)data); | ^~~~~~~ drivers/dma/fsl_raid.c:166:2: note: each undeclared identifier is reported only once for each function it appears in >> drivers/dma/fsl_raid.c:166:45: error: 'data' undeclared (first use in this function); did you mean '_data'? 166 | re_chan = dev_get_drvdata((struct device *)data); | ^~~~ | _data drivers/dma/fsl_raid.c: In function 'fsl_re_prep_dma_genq': drivers/dma/fsl_raid.c:338:11: warning: ordered comparison of pointer with integer zero [-Wextra] 338 | if (desc <= 0) | ^~ drivers/dma/fsl_raid.c: In function 'fsl_re_prep_dma_pq': drivers/dma/fsl_raid.c:462:11: warning: ordered comparison of pointer with integer zero [-Wextra] 462 | if (desc <= 0) | ^~ drivers/dma/fsl_raid.c: In function 'fsl_re_prep_dma_memcpy': drivers/dma/fsl_raid.c:546:11: warning: ordered comparison of pointer with integer zero [-Wextra] 546 | if (desc <= 0) | ^~ # https://github.com/0day-ci/linux/commit/13c515065b42a79ecf10062d29f4d00d93ee0de4 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Allen-Pais/dmaengine-convert-tasklets-to-use-new/20200831-184106 git checkout 13c515065b42a79ecf10062d29f4d00d93ee0de4 vim +/re_chan +166 drivers/dma/fsl_raid.c ad80da658bbcaa Xuelin Shi 2015-03-03 156 13c515065b42a7 Allen Pais 2020-08-31 157 static void fsl_re_dequeue(struct tasklet_struct *t) ad80da658bbcaa Xuelin Shi 2015-03-03 158 { 13c515065b42a7 Allen Pais 2020-08-31 @159 struct fsl_re_chan *re_chan from_tasklet(re_chan, t, irqtask); ad80da658bbcaa Xuelin Shi 2015-03-03 160 struct fsl_re_desc *desc, *_desc; ad80da658bbcaa Xuelin Shi 2015-03-03 161 struct fsl_re_hw_desc *hwdesc; ad80da658bbcaa Xuelin Shi 2015-03-03 162 unsigned long flags; ad80da658bbcaa Xuelin Shi 2015-03-03 163 unsigned int count, oub_count; ad80da658bbcaa Xuelin Shi 2015-03-03 164 int found; ad80da658bbcaa Xuelin Shi 2015-03-03 165 ad80da658bbcaa Xuelin Shi 2015-03-03 @166 re_chan = dev_get_drvdata((struct device *)data); ad80da658bbcaa Xuelin Shi 2015-03-03 167 ad80da658bbcaa Xuelin Shi 2015-03-03 168 fsl_re_cleanup_descs(re_chan); ad80da658bbcaa Xuelin Shi 2015-03-03 169 ad80da658bbcaa Xuelin Shi 2015-03-03 170 spin_lock_irqsave(&re_chan->desc_lock, flags); ad80da658bbcaa Xuelin Shi 2015-03-03 171 count = FSL_RE_SLOT_FULL(in_be32(&re_chan->jrregs->oubring_slot_full)); ad80da658bbcaa Xuelin Shi 2015-03-03 172 while (count--) { ad80da658bbcaa Xuelin Shi 2015-03-03 173 found = 0; ad80da658bbcaa Xuelin Shi 2015-03-03 174 hwdesc = &re_chan->oub_ring_virt_addr[re_chan->oub_count]; ad80da658bbcaa Xuelin Shi 2015-03-03 175 list_for_each_entry_safe(desc, _desc, &re_chan->active_q, ad80da658bbcaa Xuelin Shi 2015-03-03 176 node) { ad80da658bbcaa Xuelin Shi 2015-03-03 177 /* compare the hw dma addr to find the completed */ ad80da658bbcaa Xuelin Shi 2015-03-03 178 if (desc->hwdesc.lbea32 == hwdesc->lbea32 && ad80da658bbcaa Xuelin Shi 2015-03-03 179 desc->hwdesc.addr_low == hwdesc->addr_low) { ad80da658bbcaa Xuelin Shi 2015-03-03 180 found = 1; ad80da658bbcaa Xuelin Shi 2015-03-03 181 break; ad80da658bbcaa Xuelin Shi 2015-03-03 182 } ad80da658bbcaa Xuelin Shi 2015-03-03 183 } ad80da658bbcaa Xuelin Shi 2015-03-03 184 ad80da658bbcaa Xuelin Shi 2015-03-03 185 if (found) { ad80da658bbcaa Xuelin Shi 2015-03-03 186 fsl_re_desc_done(desc); ad80da658bbcaa Xuelin Shi 2015-03-03 187 list_move_tail(&desc->node, &re_chan->ack_q); ad80da658bbcaa Xuelin Shi 2015-03-03 188 } else { ad80da658bbcaa Xuelin Shi 2015-03-03 189 dev_err(re_chan->dev, ad80da658bbcaa Xuelin Shi 2015-03-03 190 "found hwdesc not in sw queue, discard it\n"); ad80da658bbcaa Xuelin Shi 2015-03-03 191 } ad80da658bbcaa Xuelin Shi 2015-03-03 192 ad80da658bbcaa Xuelin Shi 2015-03-03 193 oub_count = (re_chan->oub_count + 1) & FSL_RE_RING_SIZE_MASK; ad80da658bbcaa Xuelin Shi 2015-03-03 194 re_chan->oub_count = oub_count; ad80da658bbcaa Xuelin Shi 2015-03-03 195 ad80da658bbcaa Xuelin Shi 2015-03-03 196 out_be32(&re_chan->jrregs->oubring_job_rmvd, ad80da658bbcaa Xuelin Shi 2015-03-03 197 FSL_RE_RMVD_JOB(1)); ad80da658bbcaa Xuelin Shi 2015-03-03 198 } ad80da658bbcaa Xuelin Shi 2015-03-03 199 spin_unlock_irqrestore(&re_chan->desc_lock, flags); ad80da658bbcaa Xuelin Shi 2015-03-03 200 } ad80da658bbcaa Xuelin Shi 2015-03-03 201 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org