[Intel-gfx] [PATCH v3] drm/i915: Track all held rpm wakerefs
kbuild test robot
lkp at intel.com
Tue Jan 8 20:05:51 UTC 2019
Hi Chris,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on v5.0-rc1 next-20190108]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-Track-all-held-rpm-wakerefs/20190108-233439
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-s5-01090236 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/intel_runtime_pm.o: In function `__print_intel_runtime_pm_wakeref':
>> drivers/gpu/drm/i915/intel_runtime_pm.c:154: undefined reference to `depot_fetch_stack'
>> drivers/gpu/drm/i915/intel_runtime_pm.c:154: undefined reference to `depot_fetch_stack'
>> drivers/gpu/drm/i915/intel_runtime_pm.c:154: undefined reference to `depot_fetch_stack'
>> drivers/gpu/drm/i915/intel_runtime_pm.c:154: undefined reference to `depot_fetch_stack'
drivers/gpu/drm/i915/intel_runtime_pm.o: In function `track_intel_runtime_pm_wakeref':
>> drivers/gpu/drm/i915/intel_runtime_pm.c:86: undefined reference to `depot_save_stack'
vim +154 drivers/gpu/drm/i915/intel_runtime_pm.c
64
65 static noinline void
66 track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
67 {
68 struct i915_runtime_pm *rpm = &i915->runtime_pm;
69 unsigned long entries[STACKDEPTH];
70 struct stack_trace trace = {
71 .entries = entries,
72 .max_entries = ARRAY_SIZE(entries),
73 .skip = 0 /* gcc is ignoring noinline for tail calls? */
74 };
75 unsigned long flags;
76 depot_stack_handle_t stack, *stacks;
77
78 if (!HAS_RUNTIME_PM(i915))
79 return;
80
81 save_stack_trace(&trace);
82 if (trace.nr_entries &&
83 trace.entries[trace.nr_entries - 1] == ULONG_MAX)
84 trace.nr_entries--;
85
> 86 stack = depot_save_stack(&trace, GFP_NOWAIT | __GFP_NOWARN);
87 if (!stack)
88 return;
89
90 spin_lock_irqsave(&rpm->debug_lock, flags);
91 stacks = krealloc(rpm->debug_owners,
92 (rpm->debug_count + 1) * sizeof(*stacks),
93 GFP_NOWAIT | __GFP_NOWARN);
94 if (stacks) {
95 stacks[rpm->debug_count++] = stack;
96 rpm->debug_owners = stacks;
97 }
98 spin_unlock_irqrestore(&rpm->debug_lock, flags);
99 }
100
101 static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
102 {
103 struct i915_runtime_pm *rpm = &i915->runtime_pm;
104 depot_stack_handle_t *stacks;
105 unsigned long flags;
106
107 spin_lock_irqsave(&rpm->debug_lock, flags);
108 stacks = fetch_and_zero(&rpm->debug_owners);
109 rpm->debug_count = 0;
110 spin_unlock_irqrestore(&rpm->debug_lock, flags);
111
112 kfree(stacks);
113 }
114
115 static int cmphandle(const void *_a, const void *_b)
116 {
117 const depot_stack_handle_t * const a = _a, * const b = _b;
118
119 if (*a < *b)
120 return -1;
121 else if (*a > *b)
122 return 1;
123 else
124 return 0;
125 }
126
127 static void __print_intel_runtime_pm_wakeref(struct drm_printer *p,
128 depot_stack_handle_t *stacks,
129 unsigned long count)
130 {
131 unsigned long entries[STACKDEPTH];
132 unsigned long i;
133 char *buf;
134
135 drm_printf(p, "Wakeref count: %lu\n", count);
136
137 buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
138 if (!buf)
139 return;
140
141 sort(stacks, count, sizeof(*stacks), cmphandle, NULL);
142
143 for (i = 0; i < count; i++) {
144 struct stack_trace trace = {
145 .entries = entries,
146 .max_entries = ARRAY_SIZE(entries),
147 };
148 depot_stack_handle_t stack = stacks[i];
149 unsigned long rep;
150
151 rep = 1;
152 while (i + 1 < count && stacks[i + 1] == stack)
153 rep++, i++;
> 154 depot_fetch_stack(stack, &trace);
155 snprint_stack_trace(buf, PAGE_SIZE, &trace, 2);
156 drm_printf(p, "Wakeref x%lu taken at:\n%s", rep, buf);
157 }
158
159 kfree(buf);
160 }
161
---
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: 35206 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20190109/e266201d/attachment-0001.gz>
More information about the Intel-gfx
mailing list