Hi, # echo 1 > /sys/module/drm/parameters/debug
gives us more insight of what is happening inside the kernel... [drm:drm_stub_open] [drm:drm_open_helper] pid = 4753, minor = 0 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_addmap_core] 8192 13 f8a37000 [drm:drm_setup] [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release] open_count = 1 [drm:drm_release] pid = 4753, device = 0xe200, open_count = 1 [drm:drm_fasync] fd = -1, device = 0xe200 [drm:drm_lastclose] [drm:drm_lastclose] driver lastclose completed [drm:drm_lastclose] lastclose completed [drm:drm_stub_open] [drm:drm_open_helper] pid = 4753, minor = 0 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_addmap_core] 8192 13 f8a37000 [drm:drm_setup] [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_release] open_count = 1 [drm:drm_release] pid = 4753, device = 0xe200, open_count = 1 [drm:drm_fasync] fd = -1, device = 0xe200 [drm:drm_lastclose] [drm:drm_lastclose] driver lastclose completed [drm:drm_lastclose] lastclose completed [drm:drm_stub_open] [drm:drm_open_helper] pid = 4753, minor = 0 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_addmap_core] 8192 13 f8a37000 [drm:drm_setup] [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086401, nr=0x01, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086401, nr=0x01, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0106407, nr=0x07, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0186415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core] offset = 0x00000000, size = 0x00002000, type = 2 [drm:drm_mmap_locked] start = 0xb7b39000, end = 0xb7b3b000, page offset = 0xf8a37 [drm:drm_vm_open_locked] 0xb7b39000,0x00002000 [drm:drm_do_vm_shm_nopage] shm_nopage 0xb7b39000 [drm:drm_do_vm_shm_nopage] shm_nopage 0xb7b3a000 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0186415, nr=0x15, dev 0xe200, auth=1 [drm:drm_addmap_core] offset = 0x3fc00000, size = 0x00001000, type = 0 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086426, nr=0x26, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086426, nr=0x26, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086420, nr=0x20, dev 0xe200, auth=1 [drm:drm_addctx] 1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0x40086422, nr=0x22, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock] 1 (pid 4753) requests lock (0x00000000), flags = 0x00000000 [drm:drm_lock] 1 has lock This first context (whatever it is) has a successful lock here. [drm:drm_fasync] fd = 10, device = 0xe200 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0246400, nr=0x00, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0x800c64d6, nr=0xd6, dev 0xe200, auth=1 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0086420, nr=0x20, dev 0xe200, auth=1 [drm:drm_addctx] 2 [drm:drm_unlocked_ioctl] pid=4753, cmd=0xc0106403, nr=0x03, dev 0xe200, auth=1 [drm:drm_irq_by_busid] 0:2:0 => IRQ 17 [drm:drm_unlocked_ioctl] pid=4753, cmd=0x40086414, nr=0x14, dev 0xe200, auth=1 [drm:drm_irq_install] drm_irq_install: irq=17 [psb:0x01:psb_irq_postinstall] Setting up MSVDX IRQs..... [drm:drm_unlocked_ioctl] pid=4753, cmd=0x4008642a, nr=0x2a, dev 0xe200, auth=1 [drm:drm_lock] 2 (pid 4753) requests lock (0x80000001), flags = 0x00000000 [drm:drm_lock] 2 interrupted This second lock failed here. This is where we Ctrl-C'ed the X server running under gdb. Now to figure out what this second lock is.... [drm:drm_unlocked_ioctl] ret = -512 [drm:drm_vm_shm_close] 0xb7b39000,0x00002000 [drm:drm_release] open_count = 1 [drm:drm_release] pid = 4753, device = 0xe200, open_count = 1 [drm:drm_release] File f7762a80 released, freeing lock for context 1 [drm:drm_fasync] fd = -1, device = 0xe200 [drm:drm_lastclose] [drm:drm_lastclose] driver lastclose completed [drm:drm_irq_uninstall] drm_irq_uninstall: irq=17 [drm:drm_lastclose] lastclose completed Regards, Amit On Jan 17, 2008 1:21 AM, Amit Kucheria <[EMAIL PROTECTED]> wrote: > I am currently reading through that part of the code to make sure that > some Kconfig options are not responsible for this behaviour. If you > can think of any, it would be a help. > > Regards, > Amit > > > On Jan 17, 2008 1:17 AM, Bastian, Waldo <[EMAIL PROTECTED]> wrote: > > DRM_IOCTL_LOCK ends up with drm_lock() in drm_lock.c part of drm.ko > > > > Cheers, > > Waldo > > > > Intel Corporation - Platform Software Engineering, UMG - Hillsboro, > > Oregon > > > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of Bryce > > Harrington > > Sent: Wednesday, January 16, 2008 2:55 PM > > To: Gunawardana, Inuka > > Cc: [email protected] > > Subject: Backtrace > > > > Finally got a readable backtrace: > > > > #0 0xb7fd440e in __kernel_vsyscall () > > #1 0xb7e25bc9 in ioctl () from /lib/libc.so.6 > > #2 0xb7bc4a1d in drmGetLock (fd=10, context=2, flags=3213662516) at > > xf86drm.c:1259 > > #3 0xb7bb951b in psbDRILock (pScrn=0x820bcd0, flags=0) at psb_dri.c:724 > > #4 0xb7baf983 in psbScreenInit (scrnIndex=0, pScreen=0x821b2d8, argc=6, > > argv=0xbf8c9b74) at psb_driver.c:1342 > > #5 0x08073ddb in AddScreen (pfnInit=0xb7baf7f0 <psbScreenInit>, argc=6, > > argv=0xbf8c9b74) at ../../dix/main.c:769 > > #6 0x080a6e39 in InitOutput (pScreenInfo=0x81fa640, argc=6, > > argv=0xbf8c9b74) at ../../../../hw/xfree86/common/xf86Init.c:850 > > #7 0x08074590 in main (argc=6, argv=0xbf8c9b74, envp=Cannot access > > memory at address 0x40086432 > > ) at ../../dix/main.c:369 > > > > This also confirms my explorations from the other side, that the issue > > is within psbDRILock. > > > > drmGetLock is defined in libdrm, as this: > > > > int drmGetLock(int fd, drm_context_t context, drmLockFlags flags) > > { > > drm_lock_t lock; > > > > lock.context = context; > > lock.flags = 0; > > if (flags & DRM_LOCK_READY) lock.flags |= _DRM_LOCK_READY; > > if (flags & DRM_LOCK_QUIESCENT) lock.flags |= _DRM_LOCK_QUIESCENT; > > if (flags & DRM_LOCK_FLUSH) lock.flags |= _DRM_LOCK_FLUSH; > > if (flags & DRM_LOCK_FLUSH_ALL) lock.flags |= _DRM_LOCK_FLUSH_ALL; > > if (flags & DRM_HALT_ALL_QUEUES) lock.flags |= _DRM_HALT_ALL_QUEUES; > > if (flags & DRM_HALT_CUR_QUEUES) lock.flags |= _DRM_HALT_CUR_QUEUES; > > > > while (ioctl(fd, DRM_IOCTL_LOCK, &lock)) > > ; > > return 0; > > } > > > > Bryce > > > > > > -- > > Ubuntu-mobile mailing list > > [email protected] > > Modify settings or unsubscribe at: > > https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile > > > > -- > > Ubuntu-mobile mailing list > > [email protected] > > Modify settings or unsubscribe at: > > https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile > > > -- Ubuntu-mobile mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-mobile
