[PATCH 1/3] dma_resv: prime lockdep annotations
kbuild test robot
lkp at intel.com
Tue Oct 22 07:55:54 UTC 2019
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 at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 59103 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20191022/b6f80925/attachment-0001.gz>
More information about the dri-devel
mailing list