Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc4 next-20191021]
[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/Daniel-Vetter/dma_resv-lockdep-annotations-priming/20191022-015539
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
7d194c2100ad2a6dded545887d02754948ca5241
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.4.0
reproduce:
        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
        GCC_VERSION=7.4.0 make.cross ARCH=sparc64 

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

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

   In file included from include/linux/printk.h:6:0,
                    from include/linux/kernel.h:15,
                    from include/asm-generic/bug.h:19,
                    from arch/sparc/include/asm/bug.h:25,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from arch/sparc/include/asm/current.h:15,
                    from include/linux/mutex.h:14,
                    from include/linux/ww_mutex.h:20,
                    from include/linux/dma-resv.h:42,
                    from drivers/dma-buf/dma-resv.c:35:
>> drivers/dma-buf/dma-resv.c:119:17: error: initialization from incompatible 
>> pointer type [-Werror=incompatible-pointer-types]
    subsys_initcall(dma_resv_lockdep);
                    ^
   include/linux/init.h:197:50: note: in definition of macro 
'___define_initcall'
      __attribute__((__section__(#__sec ".init"))) = fn;
                                                     ^~
>> include/linux/init.h:224:30: note: in expansion of macro '__define_initcall'
    #define subsys_initcall(fn)  __define_initcall(fn, 4)
                                 ^~~~~~~~~~~~~~~~~
>> drivers/dma-buf/dma-resv.c:119:1: note: in expansion of macro 
>> 'subsys_initcall'
    subsys_initcall(dma_resv_lockdep);
    ^~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from include/linux/printk.h:6:0,
                    from include/linux/kernel.h:15,
                    from include/asm-generic/bug.h:19,
                    from arch/sparc/include/asm/bug.h:25,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from arch/sparc/include/asm/current.h:15,
                    from include/linux/mutex.h:14,
                    from include/linux/ww_mutex.h:20,
                    from include/linux/dma-resv.h:42,
                    from drivers//dma-buf/dma-resv.c:35:
   drivers//dma-buf/dma-resv.c:119:17: error: initialization from incompatible 
pointer type [-Werror=incompatible-pointer-types]
    subsys_initcall(dma_resv_lockdep);
                    ^
   include/linux/init.h:197:50: note: in definition of macro 
'___define_initcall'
      __attribute__((__section__(#__sec ".init"))) = fn;
                                                     ^~
>> include/linux/init.h:224:30: note: in expansion of macro '__define_initcall'
    #define subsys_initcall(fn)  __define_initcall(fn, 4)
                                 ^~~~~~~~~~~~~~~~~
   drivers//dma-buf/dma-resv.c:119:1: note: in expansion of macro 
'subsys_initcall'
    subsys_initcall(dma_resv_lockdep);
    ^~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +119 drivers/dma-buf/dma-resv.c

  > 35  #include <linux/dma-resv.h>
    36  #include <linux/export.h>
    37  #include <linux/sched/mm.h>
    38  
    39  /**
    40   * DOC: Reservation Object Overview
    41   *
    42   * The reservation object provides a mechanism to manage shared and
    43   * exclusive fences associated with a buffer.  A reservation object
    44   * can have attached one exclusive fence (normally associated with
    45   * write operations) or N shared fences (read operations).  The RCU
    46   * mechanism is used to protect read access to fences from locked
    47   * write-side updates.
    48   */
    49  
    50  DEFINE_WD_CLASS(reservation_ww_class);
    51  EXPORT_SYMBOL(reservation_ww_class);
    52  
    53  struct lock_class_key reservation_seqcount_class;
    54  EXPORT_SYMBOL(reservation_seqcount_class);
    55  
    56  const char reservation_seqcount_string[] = "reservation_seqcount";
    57  EXPORT_SYMBOL(reservation_seqcount_string);
    58  
    59  /**
    60   * dma_resv_list_alloc - allocate fence list
    61   * @shared_max: number of fences we need space for
    62   *
    63   * Allocate a new dma_resv_list and make sure to correctly initialize
    64   * shared_max.
    65   */
    66  static struct dma_resv_list *dma_resv_list_alloc(unsigned int 
shared_max)
    67  {
    68          struct dma_resv_list *list;
    69  
    70          list = kmalloc(offsetof(typeof(*list), shared[shared_max]), 
GFP_KERNEL);
    71          if (!list)
    72                  return NULL;
    73  
    74          list->shared_max = (ksize(list) - offsetof(typeof(*list), 
shared)) /
    75                  sizeof(*list->shared);
    76  
    77          return list;
    78  }
    79  
    80  /**
    81   * dma_resv_list_free - free fence list
    82   * @list: list to free
    83   *
    84   * Free a dma_resv_list and make sure to drop all references.
    85   */
    86  static void dma_resv_list_free(struct dma_resv_list *list)
    87  {
    88          unsigned int i;
    89  
    90          if (!list)
    91                  return;
    92  
    93          for (i = 0; i < list->shared_count; ++i)
    94                  
dma_fence_put(rcu_dereference_protected(list->shared[i], true));
    95  
    96          kfree_rcu(list, rcu);
    97  }
    98  
    99  #if IS_ENABLED(CONFIG_LOCKDEP)
   100  static void __init dma_resv_lockdep(void)
   101  {
   102          struct mm_struct *mm = mm_alloc();
   103          struct dma_resv obj;
   104  
   105          if (!mm)
   106                  return;
   107  
   108          dma_resv_init(&obj);
   109  
   110          down_read(&mm->mmap_sem);
   111          ww_mutex_lock(&obj.lock, NULL);
   112          fs_reclaim_acquire(GFP_KERNEL);
   113          fs_reclaim_release(GFP_KERNEL);
   114          ww_mutex_unlock(&obj.lock);
   115          up_read(&mm->mmap_sem);
   116          
   117          mmput(mm);
   118  }
 > 119  subsys_initcall(dma_resv_lockdep);
   120  #endif
   121  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to