https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=295788
--- Comment #61 from Roger Olofsson <[email protected]> ---
Put it a memstick to it and brought it up to 15.1 with drm, xorg, dbus, sddm,
kde, plasma.
New versions:
- drm version is 66.
- mesa-dri is 26.0.6
- mesa-libs is 26.0.6
- xorg is 7.7_3
I've rebuilt mesa-dri, mesa-libs and xorg WITH_DEBUG=yes and added
compat.linuxkpi.drm_debug=15 in /boot/loader.conf.
On boot I can see the i915kms kick in and change the resolution for the boot
console.
Xorg breaks.
/var/log/Xorg.0.log
[ 37.360] (II) LoadModule: "glamoregl"
[ 37.360] (II) Loading /usr/local/lib/xorg/modules/libglamoregl.so
[ 37.386] (II) Module glamoregl: vendor="X.Org Foundation"
[ 37.386] compiled for 1.21.1.23, module version = 1.0.1
[ 37.386] ABI class: X.Org ANSI C Emulation, version 0.4
[ 37.903] (EE)
Fatal server error:
[ 37.903] (EE) Caught signal 6 (Abort trap). Server aborting
(lldb) bt
#0: 0x000000082dac4cca libsys.so.7`__sys_thr_kill + 10
#1: 0x000000082a9e5954 libc.so.7`__raise + 52
#2: 0x000000082aa97919 libc.so.7`abort + 73
#3: 0x000000082a9c83f1 libc.so.7`__assert + 81
#4: 0x000000083e2519db libgallium-26.0.6.so`crocus_init_batch at
crocus_batch.c:210:4
#5: 0x000000083e2c28e9 libgallium-26.0.6.so`crocus_create_context at
crocus_context.c:325:7
#6: 0x000000083b59b79d libgallium-26.0.6.so`st_api_create_context at
st_manager.c:974:11
#7: 0x000000083b13cd22 libgallium-26.0.6.so`dri_create_context at
dri_context.c:180:14
#8: 0x000000083b142931 libgallium-26.0.6.so`driCreateContextAttribs at
dri_util.c:596:31
#9: 0x000000084f23a61a libEGL_mesa.so.0`dri2_create_context at
egl_dri2.c:1276:28
#10: 0x000000084f226c03 libEGL_mesa.so.0`eglCreateContext at eglapi.c:903:14
#11: 0x00000008382e5b46 libglamoregl.so`glamor_egl_init + 502
#12: 0x000000083584c14a modesetting_drv.so`___lldb_unnamed_symbol570 + 2010
#13: 0x00000000003ce484 Xorg`InitOutput + 2612
#14: 0x00000000002cdc1b Xorg`___lldb_unnamed_symbol3123 + 491
#15: 0x000000082a9ba23f libc.so.7`__libc_start1 + 303
#16: 0x000000000028f664 Xorg`_start + 36
A closer look with the breakpoint just after the intel_ioctl call.
* thread #1, name = 'Xorg', stop reason = breakpoint 1.4
frame #0: 0x000000083c7d34b3
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:39:7
36 {
37 struct drm_i915_gem_context_create create = {};
38 if (intel_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create))
-> 39 return false;
40 *context_id = create.ctx_id;
41 return true;
42 }
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d34b7
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:39:7
36 {
37 struct drm_i915_gem_context_create create = {};
38 if (intel_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create))
-> 39 return false;
40 *context_id = create.ctx_id;
41 return true;
42 }
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d34c6
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:42:1
39 return false;
40 *context_id = create.ctx_id;
41 return true;
-> 42 }
43
44 bool
45 i915_gem_destroy_context(int fd, uint32_t context_id)
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d34c9
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:42:1
39 return false;
40 *context_id = create.ctx_id;
41 return true;
-> 42 }
43
44 bool
45 i915_gem_destroy_context(int fd, uint32_t context_id)
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d34df
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:0:1
32 #include <fcntl.h>
33
34 bool
-> 35 i915_gem_create_context(int fd, uint32_t *context_id)
36 {
37 struct drm_i915_gem_context_create create = {};
38 if (intel_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create))
Note: this address is compiler-generated code in function
i915_gem_create_context that has no source code associated with it.
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d34e2
libgallium-26.0.6.so`i915_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:42:1
39 return false;
40 *context_id = create.ctx_id;
41 return true;
-> 42 }
43
44 bool
45 i915_gem_destroy_context(int fd, uint32_t context_id)
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083c7d309b
libgallium-26.0.6.so`intel_gem_create_context(fd=17,
context_id=0x000000082058c5d4) at intel_gem.c:67:4
64 bool
65 intel_gem_create_context(int fd, uint32_t *context_id)
66 {
-> 67 return i915_gem_create_context(fd, context_id);
68 }
69
70 bool
(lldb) frame variable
(int) fd = 17
(uint32_t *) context_id = 0x000000082058c5d4
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de4ce9a
libgallium-26.0.6.so`crocus_create_hw_context(bufmgr=0x00001d2f19df6000) at
crocus_bufmgr.c:1537:8
1534 crocus_create_hw_context(struct crocus_bufmgr *bufmgr)
1535 {
1536 uint32_t ctx_id;
-> 1537 if (!intel_gem_create_context(bufmgr->fd, &ctx_id)) {
1538 DBG("intel_gem_create_context failed: %s\n", strerror(errno));
1539 return 0;
1540 }
(lldb) frame variable
(crocus_bufmgr *) bufmgr = 0x00001d2f19df6000
(uint32_t) ctx_id = 7471
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de4ce9c
libgallium-26.0.6.so`crocus_create_hw_context(bufmgr=0x00001d2f19df6000) at
crocus_bufmgr.c:1537:8
1534 crocus_create_hw_context(struct crocus_bufmgr *bufmgr)
1535 {
1536 uint32_t ctx_id;
-> 1537 if (!intel_gem_create_context(bufmgr->fd, &ctx_id)) {
1538 DBG("intel_gem_create_context failed: %s\n", strerror(errno));
1539 return 0;
1540 }
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de4ce9e
libgallium-26.0.6.so`crocus_create_hw_context(bufmgr=0x00001d2f19df6000) at
crocus_bufmgr.c:1538:7
1535 {
1536 uint32_t ctx_id;
1537 if (!intel_gem_create_context(bufmgr->fd, &ctx_id)) {
-> 1538 DBG("intel_gem_create_context failed: %s\n", strerror(errno));
1539 return 0;
1540 }
1541
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de4cef4
libgallium-26.0.6.so`crocus_create_hw_context(bufmgr=0x00001d2f19df6000) at
crocus_bufmgr.c:1539:7
1536 uint32_t ctx_id;
1537 if (!intel_gem_create_context(bufmgr->fd, &ctx_id)) {
1538 DBG("intel_gem_create_context failed: %s\n", strerror(errno));
-> 1539 return 0;
1540 }
1541
1542 /* Upon declaring a GPU hang, the kernel will zap the guilty context
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de4cf1b
libgallium-26.0.6.so`crocus_create_hw_context(bufmgr=0x00001d2f19df6000) at
crocus_bufmgr.c:1561:1
1558 I915_CONTEXT_PARAM_RECOVERABLE, false);
1559
1560 return ctx_id;
-> 1561 }
1562
1563 static int
1564 crocus_hw_context_get_priority(struct crocus_bufmgr *bufmgr, uint32_t
ctx_id)
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de519a1
libgallium-26.0.6.so`crocus_init_batch(ice=0x00001d2f1a4221f0,
name=CROCUS_BATCH_RENDER, priority=0) at crocus_batch.c:209:23
206 }
207 crocus_fine_fence_init(batch);
208
-> 209 batch->hw_ctx_id = crocus_create_hw_context(screen->bufmgr);
210 assert(batch->hw_ctx_id);
211
212 crocus_hw_context_set_priority(screen->bufmgr, batch->hw_ctx_id,
priority);
....
....
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de519a3
libgallium-26.0.6.so`crocus_init_batch(ice=0x00001d2f1a4221f0,
name=CROCUS_BATCH_RENDER, priority=0) at crocus_batch.c:209:4
206 }
207 crocus_fine_fence_init(batch);
208
-> 209 batch->hw_ctx_id = crocus_create_hw_context(screen->bufmgr);
210 assert(batch->hw_ctx_id);
211
212 crocus_hw_context_set_priority(screen->bufmgr, batch->hw_ctx_id,
priority);
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de519a7
libgallium-26.0.6.so`crocus_init_batch(ice=0x00001d2f1a4221f0,
name=CROCUS_BATCH_RENDER, priority=0) at crocus_batch.c:209:21
206 }
207 crocus_fine_fence_init(batch);
208
-> 209 batch->hw_ctx_id = crocus_create_hw_context(screen->bufmgr);
210 assert(batch->hw_ctx_id);
211
212 crocus_hw_context_set_priority(screen->bufmgr, batch->hw_ctx_id,
priority);
(lldb) si
Process 3430 stopped
* thread #1, name = 'Xorg', stop reason = instruction step into
frame #0: 0x000000083de519ad
libgallium-26.0.6.so`crocus_init_batch(ice=0x00001d2f1a4221f0,
name=CROCUS_BATCH_RENDER, priority=0) at crocus_batch.c:210:4
207 crocus_fine_fence_init(batch);
208
209 batch->hw_ctx_id = crocus_create_hw_context(screen->bufmgr);
-> 210 assert(batch->hw_ctx_id);
211
212 crocus_hw_context_set_priority(screen->bufmgr, batch->hw_ctx_id,
priority);
213
(lldb) frame variable
(crocus_context *) ice = 0x00001d2f1a4221f0
(crocus_batch_name) name = CROCUS_BATCH_RENDER
(int) priority = 0
(crocus_batch *) batch = 0x00001d2f1a4227b8
(crocus_screen *) screen = 0x00001d2f19ce7030
(intel_device_info *) devinfo = 0x00001d2f19ce7a48
It looks different. It looks like it's traversing the ioctl call but the
context is still not created so the assertion breaks.
Roger
--
You are receiving this mail because:
You are the assignee for the bug.
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.