From: kbuild test robot <lkp@intel.com>
To: Matthew Auld <matthew.auld@intel.com>
Cc: intel-gfx@lists.freedesktop.org, kbuild-all@lists.01.org,
dri-devel@lists.freedesktop.org
Subject: [drm-intel:drm-intel-next-queued 7/9] drivers/gpu/drm/i915/selftests/intel_memory_region.c:166: undefined reference to `__umoddi3'
Date: Sun, 13 Oct 2019 03:20:09 +0800 [thread overview]
Message-ID: <201910130308.oDc4p2Fp%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 4887 bytes --]
tree: git://anongit.freedesktop.org/drm-intel drm-intel-next-queued
head: 6ad145fe0246abe31a312ce19321bb5b11635802
commit: 2f0b97ca02118630132dddf258fbdb5d5f5ec32a [7/9] drm/i915/region: support contiguous allocations
config: i386-randconfig-a004-201941 (attached as .config)
compiler: gcc-6 (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
reproduce:
git checkout 2f0b97ca02118630132dddf258fbdb5d5f5ec32a
# 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@intel.com>
All errors (new ones prefixed by >>):
ld: drivers/gpu/drm/i915/intel_memory_region.o: in function `igt_mock_contiguous':
>> drivers/gpu/drm/i915/selftests/intel_memory_region.c:166: undefined reference to `__umoddi3'
vim +166 drivers/gpu/drm/i915/selftests/intel_memory_region.c
122
123 static int igt_mock_contiguous(void *arg)
124 {
125 struct intel_memory_region *mem = arg;
126 struct drm_i915_gem_object *obj;
127 unsigned long n_objects;
128 LIST_HEAD(objects);
129 LIST_HEAD(holes);
130 I915_RND_STATE(prng);
131 resource_size_t target;
132 resource_size_t total;
133 resource_size_t min;
134 int err = 0;
135
136 total = resource_size(&mem->region);
137
138 /* Min size */
139 obj = igt_object_create(mem, &objects, mem->mm.chunk_size,
140 I915_BO_ALLOC_CONTIGUOUS);
141 if (IS_ERR(obj))
142 return PTR_ERR(obj);
143
144 if (obj->mm.pages->nents != 1) {
145 pr_err("%s min object spans multiple sg entries\n", __func__);
146 err = -EINVAL;
147 goto err_close_objects;
148 }
149
150 igt_object_release(obj);
151
152 /* Max size */
153 obj = igt_object_create(mem, &objects, total, I915_BO_ALLOC_CONTIGUOUS);
154 if (IS_ERR(obj))
155 return PTR_ERR(obj);
156
157 if (obj->mm.pages->nents != 1) {
158 pr_err("%s max object spans multiple sg entries\n", __func__);
159 err = -EINVAL;
160 goto err_close_objects;
161 }
162
163 igt_object_release(obj);
164
165 /* Internal fragmentation should not bleed into the object size */
> 166 target = round_up(prandom_u32_state(&prng) % total, PAGE_SIZE);
167 target = max_t(u64, PAGE_SIZE, target);
168
169 obj = igt_object_create(mem, &objects, target,
170 I915_BO_ALLOC_CONTIGUOUS);
171 if (IS_ERR(obj))
172 return PTR_ERR(obj);
173
174 if (obj->base.size != target) {
175 pr_err("%s obj->base.size(%llx) != target(%llx)\n", __func__,
176 (u64)obj->base.size, (u64)target);
177 err = -EINVAL;
178 goto err_close_objects;
179 }
180
181 if (obj->mm.pages->nents != 1) {
182 pr_err("%s object spans multiple sg entries\n", __func__);
183 err = -EINVAL;
184 goto err_close_objects;
185 }
186
187 igt_object_release(obj);
188
189 /*
190 * Try to fragment the address space, such that half of it is free, but
191 * the max contiguous block size is SZ_64K.
192 */
193
194 target = SZ_64K;
195 n_objects = div64_u64(total, target);
196
197 while (n_objects--) {
198 struct list_head *list;
199
200 if (n_objects % 2)
201 list = &holes;
202 else
203 list = &objects;
204
205 obj = igt_object_create(mem, list, target,
206 I915_BO_ALLOC_CONTIGUOUS);
207 if (IS_ERR(obj)) {
208 err = PTR_ERR(obj);
209 goto err_close_objects;
210 }
211 }
212
213 close_objects(mem, &holes);
214
215 min = target;
216 target = total >> 1;
217
218 /* Make sure we can still allocate all the fragmented space */
219 obj = igt_object_create(mem, &objects, target, 0);
220 if (IS_ERR(obj)) {
221 err = PTR_ERR(obj);
222 goto err_close_objects;
223 }
224
225 igt_object_release(obj);
226
227 /*
228 * Even though we have enough free space, we don't have a big enough
229 * contiguous block. Make sure that holds true.
230 */
231
232 do {
233 bool should_fail = target > min;
234
235 obj = igt_object_create(mem, &objects, target,
236 I915_BO_ALLOC_CONTIGUOUS);
237 if (should_fail != IS_ERR(obj)) {
238 pr_err("%s target allocation(%llx) mismatch\n",
239 __func__, (u64)target);
240 err = -EINVAL;
241 goto err_close_objects;
242 }
243
244 target >>= 1;
245 } while (target >= mem->mm.chunk_size);
246
247 err_close_objects:
248 list_splice_tail(&holes, &objects);
249 close_objects(mem, &objects);
250 return err;
251 }
252
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29992 bytes --]
[-- Attachment #3: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
reply other threads:[~2019-10-12 19:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201910130308.oDc4p2Fp%lkp@intel.com \
--to=lkp@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kbuild-all@lists.01.org \
--cc=matthew.auld@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox