This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

omapdrm: kernel panic with Xorg while using mouse



Hi All,

I am getting kernel panic when I move the mouse or click continuously. Crash seems to be related to OMAPDRM driver. Has anyone encountered the same issue? Any pointers to debug this would be helpful?

I am using
Platform: custom board based on OMAP5
Kernel: custom kernel 3.8  based on omap5-uevm_6_04_00_02 GLSDK
Xorg: 1.12.3
SGX 544 rev 116 driver: From omap5-uevm_6_04_00_02 GLSDK  

Kernel Panic log:

[   10.395416] Unable to handle kernel paging request at virtual address 0010010
4
[   10.403167] pgd = ee148000
[   10.406005] [00100104] *pgd=ee124831, *pte=fe09e59f, *ppte=fe09ee7e
[   10.412658] Internal error: Oops: 81f [#1] PREEMPT SMP ARM
[   10.418457] Modules linked in: sd8xxx(O) mlan(PO) omapdrm_pvr(O)
[   10.424804] CPU: 1    Tainted: P           O  (3.8.13 #9)
[   10.430511] PC is at omap_gem_op_sync+0x1b4/0x250
[   10.435485] LR is at omap_gem_op_sync+0x1a4/0x250
[   10.440460] pc : [<803246dc>]    lr : [<803246cc>]    psr: a0000113
[   10.440460] sp : eebabdb8  ip : eebabdb8  fp : eebabdec
[   10.452575] r10: 806fb2f0  r9 : 8031f738  r8 : ee12c780
[   10.458099] r7 : 00000003  r6 : eebaa000  r5 : fffffe00  r4 : eddc0480
[   10.464996] r3 : 00200200  r2 : 00100100  r1 : 00000000  r0 : 807bbaa4
[   10.471893] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   10.479431] Control: 10c5387d  Table: ee14806a  DAC: 00000015
[   10.485504] Process Xorg (pid: 965, stack limit = 0xeebaa240)
[   10.491577] Stack: (0xeebabdb8 to 0xeebac000)
[   10.496185] bda0:                                                       00000000 00000000
[   10.504821] bdc0: ef249200 80060d34 eebabdc8 eebabdc8 eeb2f180 eebabe38 eebabe38 00000008
[   10.513458] bde0: eebabe0c eebabdf0 8031f76c 80324534 00000000 ef234800 eebabe38 40086444
[   10.522094] be00: eebabee4 eebabe10 8030a834 8031f744 000003c5 40086444 00000044 0000e200
[   10.530731] be20: 00000001 ee14c540 eebabe6c 8025e7ec 7eeb8a48 ef23482c 00000008 00000003
[   10.539367] be40: 7eeb7670 00000058 7eeb7668 00000008 00000001 eebabe60 80065680 8025e744
[   10.548004] be60: eebabf04 eebabe70 8001bea0 80065674 8004fc90 8004fb58 eebabeac eebabe88
[   10.556640] be80: 8004fd28 00000000 00000800 ee14c57c 7eeb8700 eebabfb0 00000000 7eeb8700
[   10.565277] bea0: eebabf8c eebabeb0 80012b88 00000030 00002000 ee99bc00 eeade240 7eeb8a48
[   10.573913] bec0: ee12c6c0 00000000 40086444 ee884ed8 eebaa000 7eeb8a48 eebabef4 eebabee8
[   10.582550] bee0: 8012a00c 8030a580 eebabf74 eebabef8 8012aba0 80129fe0 eebabf1c eebabf08
[   10.591186] bf00: 8004c9dc 8004c7a0 00000000 eebabf68 eebabf3c eebabf20 8004d8b4 8000945c
[   10.599822] bf20: eebabf44 7eeb88f8 7eeb88f0 00000077 00000000 eebaa0f8 00000100 00000000
[   10.608459] bf40: eebaa000 8000955c 56465001 7eeb8a48 ee12c6c0 00000000 40086444 00000007
[   10.617095] bf60: eebaa000 00000000 eebabfa4 eebabf78 8012ac3c 8012a668 eebabfb0 00000000
[   10.625732] bf80: eebabfa4 00000008 7eeb8a48 40086444 00000036 8000efc8 00000000 eebabfa8
[   10.634368] bfa0: 8000ed80 8012ac00 00000008 7eeb8a48 00000007 40086444 7eeb8a48 00000008
[   10.643005] bfc0: 00000008 7eeb8a48 40086444 00000036 0016684c 00143858 00000000 00166e18
[   10.651641] bfe0: 76c446f0 7eeb8a24 76c38d93 476e21bc 00070010 00000007 ef7fe821 ef7fec21
[   10.660278] Backtrace:
[   10.662872] [<80324528>] (omap_gem_op_sync+0x0/0x250) from [<8031f76c>] (ioctl_gem_cpu_prep+0x34/0xa0)
[   10.672698]  r7:00000008 r6:eebabe38 r5:eebabe38 r4:eeb2f180
[   10.678680] [<8031f738>] (ioctl_gem_cpu_prep+0x0/0xa0) from [<8030a834>] (drm_ioctl+0x2c0/0x3d4)
[   10.687957]  r6:40086444 r5:eebabe38 r4:ef234800 r3:00000000
[   10.693939] [<8030a574>] (drm_ioctl+0x0/0x3d4) from [<8012a00c>] (vfs_ioctl+0x38/0x4c)
[   10.702301] [<80129fd4>] (vfs_ioctl+0x0/0x4c) from [<8012aba0>] (do_vfs_ioctl+0x544/0x598)
[   10.711029] [<8012a65c>] (do_vfs_ioctl+0x0/0x598) from [<8012ac3c>] (sys_ioctl+0x48/0x70)
[   10.719665] [<8012abf4>] (sys_ioctl+0x0/0x70) from [<8000ed80>] (ret_fast_syscall+0x0/0x30)
[   10.728485]  r8:8000efc8 r7:00000036 r6:40086444 r5:7eeb8a48 r4:00000008
[   10.735565] Code: e51b3034 e3530000 1894000c 01a04003 (15823004)
[   10.742065] ---[ end trace 8984407fdb114d46 ]---
[   10.746948] note: Xorg[965] exited with preempt_count 1

Regards,

vikas

  • Also found similar issue @ http://e2e.ti.com/support/omap/f/885/p/354169/1287513.aspx#1287513

    Could anyone please give some idead/suggestion to fix this?

    Regards,

    Vikash

  • Hi All,

    Reverting the following change fixes this kernel panic. Additionally to get Layermanager working I need to modify the following function too (see spin lock and unlock).

    http://git.omapzoom.org/?p=kernel/omap.git;a=commit;h=f968e920452aa3061fb1dfff1a55a55f8af60dde


    static void sync_op_update(void)
    {
                    struct omap_gem_sync_waiter *waiter, *n;
                    spin_unlock(&sync_lock);
                    list_for_each_entry_safe(waiter, n, &waiters, list) {
                                    if (!is_waiting(waiter)) {
                                                    list_del(&waiter->list);
                                                    SYNC("notify: %p", waiter);
                                                    waiter->notify(waiter->arg);
                                                    kfree(waiter);
                                    }
                    }
                    spin_lock(&sync_lock);
    }

    Does this revert and above change looks correct? Is there any plan to fix this kernel panic in exixting omapdrm code?

    Regards,
    Vikash

  • Hi Vikash,

    Thank you for sharing this  solution with us, it will sure come in handy for the next release.

    Regards,

    BOyko