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 <lkp@xxxxxxxxx> 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
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx