[radeon-alex:amd-19.50 2027/2687] include/kcl/kcl_fence.h:129:20: error: redefinition of 'dma_fence_set_error'

kbuild test robot lkp at intel.com
Sat Jan 11 04:20:11 UTC 2020


Hi Flora,

FYI, the error/warning still remains.

tree:   git://people.freedesktop.org/~agd5f/linux.git amd-19.50
head:   02692309efa6ad48d47894e40fcb3832ace49c4c
commit: c53ae0e01db63d1b142681add947781668e3319c [2027/2687] drm/amdkcl: drop kcl_dma_fence_set_error
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-3) 7.5.0
reproduce:
        git checkout c53ae0e01db63d1b142681add947781668e3319c
        # save the attached .config to linux build tree
        make ARCH=i386 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/gpu/drm/scheduler/backport/backport.h:5:0,
                    from <command-line>:0:
   include/kcl/kcl_fence.h: In function 'kcl_fence_get_rcu_safe':
   include/kcl/kcl_fence.h:124:32: error: passing argument 1 of 'dma_fence_get_rcu_safe' from incompatible pointer type [-Werror=incompatible-pointer-types]
     return dma_fence_get_rcu_safe(fencep);
                                   ^~~~~~
   In file included from include/kcl/kcl_fence.h:9:0,
                    from drivers/gpu/drm/scheduler/backport/backport.h:5,
                    from <command-line>:0:
   include/linux/dma-fence.h:315:1: note: expected 'struct dma_fence **' but argument is of type 'struct fence **'
    dma_fence_get_rcu_safe(struct dma_fence __rcu **fencep)
    ^~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/scheduler/backport/backport.h:5:0,
                    from <command-line>:0:
   include/kcl/kcl_fence.h:124:9: error: return from incompatible pointer type [-Werror=incompatible-pointer-types]
     return dma_fence_get_rcu_safe(fencep);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/kcl/kcl_fence.h: At top level:
>> include/kcl/kcl_fence.h:129:20: error: redefinition of 'dma_fence_set_error'
    static inline void dma_fence_set_error(struct dma_fence *fence,
                       ^~~~~~~~~~~~~~~~~~~
   In file included from include/kcl/kcl_fence.h:9:0,
                    from drivers/gpu/drm/scheduler/backport/backport.h:5,
                    from <command-line>:0:
   include/linux/dma-fence.h:517:20: note: previous definition of 'dma_fence_set_error' was here
    static inline void dma_fence_set_error(struct dma_fence *fence,
                       ^~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/scheduler/backport/backport.h:5:0,
                    from <command-line>:0:
   include/kcl/kcl_fence.h: In function 'dma_fence_set_error':
>> include/kcl/kcl_fence.h:135:7: error: 'struct dma_fence' has no member named 'status'
     fence->status = error;
          ^~
   cc1: some warnings being treated as errors

vim +/dma_fence_set_error +129 include/kcl/kcl_fence.h

     3	
     4	#include <linux/version.h>
     5	#if !defined(HAVE_DMA_FENCE_DEFINED)
     6	#include <linux/fence.h>
     7	#include <kcl/kcl_fence_array.h>
     8	#else
   > 9	#include <linux/dma-fence.h>
    10	#include <linux/dma-fence-array.h>
    11	#endif
    12	
    13	#if !defined(HAVE_DMA_FENCE_DEFINED)
    14	#define dma_fence_cb fence_cb
    15	#define dma_fence_ops fence_ops
    16	#define dma_fence_array fence_array
    17	#define dma_fence fence
    18	#define DMA_FENCE_TRACE FENCE_TRACE
    19	#define DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT FENCE_FLAG_ENABLE_SIGNAL_BIT
    20	#define DMA_FENCE_FLAG_SIGNALED_BIT FENCE_FLAG_SIGNALED_BIT
    21	#define dma_fence_wait fence_wait
    22	#define dma_fence_get fence_get
    23	#define dma_fence_put fence_put
    24	#define dma_fence_is_signaled fence_is_signaled
    25	#define dma_fence_signal fence_signal
    26	#define dma_fence_signal_locked fence_signal_locked
    27	#define dma_fence_get_rcu fence_get_rcu
    28	#define dma_fence_array_create fence_array_create
    29	#define dma_fence_add_callback fence_add_callback
    30	#define dma_fence_remove_callback fence_remove_callback
    31	#define dma_fence_default_wait fence_default_wait
    32	#define dma_fence_enable_sw_signaling fence_enable_sw_signaling
    33	typedef struct fence kcl_fence_t;
    34	typedef struct fence_ops kcl_fence_ops_t;
    35	#endif
    36	
    37	#if !defined(HAVE_DMA_FENCE_DEFINED)
    38	extern struct fence * _kcl_fence_get_rcu_safe(struct fence * __rcu *fencep);
    39	extern u64 _kcl_fence_context_alloc(unsigned num);
    40	extern void _kcl_fence_init(struct fence *fence, const struct fence_ops *ops,
    41		     spinlock_t *lock, u64 context, unsigned seqno);
    42	extern signed long _kcl_fence_wait_timeout(struct fence *fence, bool intr,
    43					signed long timeout);
    44	#endif
    45	
    46	/* commit v4.5-rc3-715-gb47bcb93bbf2
    47	 * fall back to HAVE_DMA_FENCE_DEFINED check directly
    48	 * as it's hard to detect the implementation in kernel
    49	 */
    50	#if !defined(HAVE_DMA_FENCE_DEFINED)
    51	static inline bool dma_fence_is_later(struct dma_fence *f1, struct dma_fence *f2)
    52	{
    53		if (WARN_ON(f1->context != f2->context))
    54			return false;
    55	
    56		return (int)(f1->seqno - f2->seqno) > 0;
    57	}
    58	#endif
    59	
    60	#if !defined(HAVE_DMA_FENCE_DEFINED)
    61	static inline u64 dma_fence_context_alloc(unsigned num)
    62	{
    63		return _kcl_fence_context_alloc(num);
    64	}
    65	
    66	static inline void
    67	dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
    68		       spinlock_t *lock, u64 context, unsigned seqno)
    69	{
    70		return _kcl_fence_init(fence, ops, lock, context, seqno);
    71	}
    72	#endif
    73	
    74	/* commit 796422f227ee(dma-fence: Allow wait_any_timeout for all fences) */
    75	#if DRM_VERSION_CODE < DRM_VERSION(4, 19, 0)
    76	signed long
    77	_kcl_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
    78				   bool intr, signed long timeout, uint32_t *idx);
    79	#endif
    80	
    81	static inline signed long
    82	kcl_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
    83				   bool intr, signed long timeout, uint32_t *idx)
    84	{
    85	#if DRM_VERSION_CODE < DRM_VERSION(4, 19, 0)
    86		return _kcl_fence_wait_any_timeout(fences, count, intr, timeout, idx);
    87	#else
    88		return dma_fence_wait_any_timeout(fences, count, intr, timeout, idx);
    89	#endif
    90	}
    91	
    92	#if DRM_VERSION_CODE < DRM_VERSION(4, 19, 0)
    93	signed long
    94	_kcl_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout);
    95	#endif
    96	static inline signed long
    97	kcl_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout)
    98	{
    99	#if DRM_VERSION_CODE < DRM_VERSION(4, 19, 0)
   100		return _kcl_fence_default_wait(fence, intr, timeout);
   101	#else
   102		return dma_fence_default_wait(fence, intr, timeout);
   103	#endif
   104	}
   105	
   106	#if !defined(HAVE_DMA_FENCE_DEFINED)
   107	static inline signed long
   108	dma_fence_wait_timeout(struct dma_fence *fence, bool intr, signed long timeout)
   109	{
   110		return _kcl_fence_wait_timeout(fence, intr, timeout);
   111	}
   112	#endif
   113	
   114	#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
   115	extern struct fence * _kcl_fence_get_rcu_safe(struct fence * __rcu *fencep);
   116	#endif
   117	
   118	static inline struct fence *
   119	kcl_fence_get_rcu_safe(struct fence * __rcu *fencep)
   120	{
   121	#if !defined(HAVE_DMA_FENCE_DEFINED)
   122		return _kcl_fence_get_rcu_safe(fencep);
   123	#else
 > 124		return dma_fence_get_rcu_safe(fencep);
   125	#endif
   126	}
   127	
   128	#if !defined(HAVE_DMA_FENCE_SET_ERROR)
 > 129	static inline void dma_fence_set_error(struct dma_fence *fence,
   130					       int error)
   131	{
   132		BUG_ON(test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags));
   133		BUG_ON(error >= 0 || error < -MAX_ERRNO);
   134	
 > 135		fence->status = error;
   136	}
   137	#endif
   138	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 68191 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20200111/dd00e196/attachment-0001.gz>


More information about the dri-devel mailing list