[Intel-gfx] [PATCH 3/4] drm/i915: peel dma-fence-chains wait fences
kbuild test robot
lkp at intel.com
Sat Apr 11 05:09:54 UTC 2020
Hi Venkata,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next linus/master v5.6 next-20200410]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Venkata-Sandeep-Dhanalakota/drm-i915-introduce-a-mechanism-to-extend-execbuf2/20200411-031057
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp at intel.com>
cppcheck warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2550:12: warning: Either the condition '!iter_chain' is redundant or there is possible null pointer dereference: iter_chain. [nullPointerRedundantCheck]
iter_chain->fence);
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2547:16: note: Assuming that condition '!iter_chain' is not redundant
GEM_BUG_ON(!iter_chain);
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2545:24: note: Assignment 'iter_chain=to_dma_fence_chain(iter)', assigned value is 0
to_dma_fence_chain(iter);
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:2550:12: note: Null pointer dereference
iter_chain->fence);
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1423:6: warning: The scope of the variable 'err' can be reduced. [variableScope]
int err;
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:3158:1: warning: Label 'end_user' is not used. [unusedLabel]
end_user:
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1346:21: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation]
len = offset & 7 ? 8 : 5;
^
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:1401:24: warning: 'vaddr' is of type 'void *'. When using void pointers in calculations, the behaviour is undefined. [arithOperationsOnVoidPointer]
clflush_write32(vaddr + offset_in_page(offset),
^
vim +2550 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
2510
2511 static int
2512 await_fence_array(struct i915_execbuffer *eb,
2513 struct i915_eb_fences *fences,
2514 int nfences)
2515 {
2516 unsigned int n;
2517 int err;
2518
2519 for (n = 0; n < nfences; n++) {
2520 struct drm_syncobj *syncobj;
2521 struct dma_fence_chain *chain;
2522 unsigned int flags;
2523
2524 syncobj = ptr_unpack_bits(fences[n].syncobj, &flags, 2);
2525
2526 if (!fences[n].dma_fence)
2527 continue;
2528
2529 /*
2530 * If we're dealing with a dma-fence-chain, peel the chain by
2531 * adding all of the unsignaled fences
2532 * (dma_fence_chain_for_each does that for us) the chain
2533 * points to.
2534 *
2535 * This enables us to identify waits on i915 fences and allows
2536 * for faster engine-to-engine synchronization using HW
2537 * semaphores.
2538 */
2539 chain = to_dma_fence_chain(fences[n].dma_fence);
2540 if (chain) {
2541 struct dma_fence *iter;
2542
2543 dma_fence_chain_for_each(iter, fences[n].dma_fence) {
2544 struct dma_fence_chain *iter_chain =
2545 to_dma_fence_chain(iter);
2546
2547 GEM_BUG_ON(!iter_chain);
2548
2549 err = i915_request_await_dma_fence(eb->request,
> 2550 iter_chain->fence);
2551 if (err < 0) {
2552 dma_fence_put(iter);
2553 return err;
2554 }
2555 }
2556
2557 } else {
2558 err = i915_request_await_dma_fence(eb->request,
2559 fences[n].dma_fence);
2560 if (err < 0)
2561 return err;
2562 }
2563 }
2564
2565 return 0;
2566 }
2567
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Intel-gfx
mailing list