Find the answer to your Linux question:
Results 1 to 1 of 1
I have a linux driver which is called with an application. The app runs ok at the first time, but at the 2nd time, it will crash with this error ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    lfu
    lfu is offline
    Just Joined!
    Join Date
    Apr 2010
    Posts
    4

    BUG: unable to handle kernel paging request at address


    I have a linux driver which is called with an application. The app runs ok at the first time, but at the 2nd time, it will crash with this error message:

    -------------------------------------------------------------------------------------
    Code:
    BUG: unable to handle kernel paging request at ee67f800                         
    IP: [<ed09c5e7>] SomeFunc+0x2e7/0x640 [driver_name]           
    *pdpt = 00000000005a5001 *pde = 00000000157fb067 *pte = 0000000000000000        
    Oops: 0000 [#1] PREEMPT                                                         
    last sysfs file: /sys/class/sound/controlC0/dev                                 
    Modules linked in: ... driver_name ...                                                          
                                                                                    
    Pid: 1744, comm: driver_thread Tainted: P           (2.6.28 #1)                
    EIP: 0060:[<ed09c5e7>] EFLAGS: 00010202 CPU: 0                                  
    EIP is at SomeFunc+0x2e7/0x640 [driver_name]                  
    EAX: 00000800 EBX: ee67f800 ECX: ee680000 EDX: f1f80000                         
    ESI: 00000010 EDI: d2c8e21c EBP: d3ea9af4 ESP: d3ea9a70                         
     DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068                                   
    Process driver_thread (pid: 1744, ti=d3ea8000 task=d5516b10 task.ti=d3ea8000)  
    Stack:                                                                          
     ee67f800 f1f80000 ee680000 ee67f800 00000000 2eea8000 00008000 00000000        
     00000800 00000000 d2c00d1c f1f80000 00000004 00000000 00000000 00000000        
     00000000 ee680000 00000780 0000021c 0000021c d3ea9ae8 00000006 d3ea9b7c        
    Call Trace:                                                                     
     [<ed08da9f>] SomeTopFunc+0x1f/0x30 [driver_name]                  
     [<ed08b8c4>] SomeTopFunc1+0x4c4/0x610 [driver_name]                   
     [<ed08da80>] SomeTopFunc2+0x0/0x30 [driver_name]                   
     [<ed0a44b0>] SomeTopFunc3+0x1e0/0x200 [driver_name]                       
     [<c01179b8>] enqueue_task_rt+0x23/0x43                                         
     [<c0115d48>] enqueue_task+0xa/0x14                                             
     [<c0115dda>] activate_task+0x17/0x1f                                           
     [<c0117843>] try_to_wake_up+0xa7/0xa9                                          
     [<d89c3224>] SGX_ISRHandler+0x28/0x57 [pvrsrvkm]                               
     [<d89b9deb>] PVRSRVSystemLISR_ForEachVaCb+0x24/0x3a [pvrsrvkm]                 
     [<d89b9dc7>] PVRSRVSystemLISR_ForEachVaCb+0x0/0x3a [pvrsrvkm]                  
     [<d89c0e01>] List_PVRSRV_DEVICE_NODE_ForEach_va+0x1f/0x30 [pvrsrvkm]           
     [<c01179b8>] enqueue_task_rt+0x23/0x43                                         
     [<c0115d48>] enqueue_task+0xa/0x14                                             
     [<c0115dda>] activate_task+0x17/0x1f                                           
     [<c0117843>] try_to_wake_up+0xa7/0xa9                                          
     [<c01179b8>] enqueue_task_rt+0x23/0x43                                         
     [<c0115d48>] enqueue_task+0xa/0x14                                             
     [<c0115dda>] activate_task+0x17/0x1f                                           
     [<c0117843>] try_to_wake_up+0xa7/0xa9                                          
     [<d6682374>] SomeTopFunc4+0x9c/0x258 [core_driver]                       
     [<d63bb6fb>] SomeTopFunc5+0x3b/0x70 [core_driver1]                    
    [<ed09eb22>]SomeTopFunc6+0x12/0x40[driver_name]                                          
     [<d667f60a>] someTopFunc7+0x0/0x73f [core_driver]                          
     [<ed0a48a0>] driver_thread_func+0x2c0/0x360 [driver_name]                 
     [<c0117398>] __sched_setscheduler+0x1ac/0x356                                  
     [<d636b643>] thread_wrapper+0x0/0x55 [osal_linux]                              
     [<d636b656>] thread_wrapper+0x13/0x55 [osal_linux]                             
     [<c012b23d>] kthread+0x0/0x56                                                  
     [<c012b272>] kthread+0x35/0x56                                                 
     [<c012b23d>] kthread+0x0/0x56                                                  
     [<c0103b07>] kernel_thread_helper+0x7/0x10                                     
    Code: 7c 24 40 66 0f 7f 44 24 30 66 0f 7f 4c 24 60 8b 54 24 04 8b 4c 24 08 8b 5c
     24 0c 8b 74 24 10 8b 7d 08 66 0f 6f 74 24 60 83 c6 10 <66> 0f 6f 2b 66 0f 6f fe
     66 0f 6f 24 41 66 0f 6f c5 66 0f 61 fe                                         
    EIP: [<ed09c5e7>] SomeFunc+0x2e7/0x640 [driver_name] SS:ESP 00
    68:d3ea9a70                                                                     
    ---[ end trace f110f80bc609a61e ]---
    ---------------------------------------------------------------------------

    I've identified that SomeFunc+0x2e7 has this instruction:

    Code:
     2e7:   66 0f 6f 2b             movdqa (%ebx),%xmm5
    This is part of the Code in the Oops message above:

    Code:
    2bb:   89 7c 24 40             mov    %edi,0x40(%esp)
     2bf:   66 0f 7f 44 24 30       movdqa %xmm0,0x30(%esp)
     2c5:   66 0f 7f 4c 24 60       movdqa %xmm1,0x60(%esp)
     2cb:   8b 54 24 04             mov    0x4(%esp),%edx
     2cf:   8b 4c 24 08             mov    0x8(%esp),%ecx
     2d3:   8b 5c 24 0c             mov    0xc(%esp),%ebx
     2d7:   8b 74 24 10             mov    0x10(%esp),%esi
     2db:   8b 7d 08                mov    0x8(%ebp),%edi
     2de:   66 0f 6f 74 24 60       movdqa 0x60(%esp),%xmm6
     2e4:   83 c6 10                add    $0x10,%esi
     2e7:   66 0f 6f 2b             movdqa (%ebx),%xmm5
     2eb:   66 0f 6f fe             movdqa %xmm6,%xmm7
     2ef:   66 0f 6f 24 41          movdqa (%ecx,%eax,2),%xmm4
     2f4:   66 0f 6f c5             movdqa %xmm5,%xmm0
     2f8:   66 0f 61 fe             punpcklwd %xmm6,%xmm7
    When I remove the one line code corresponding to 2e7 instruction, it no longer crashes. But I am puzzled why there is a problem with this instruction. The source line that I removed is like this (with SIMD intrinsics):

    Code:
    _m128i mmreg = _mm_load_si128( (const __m128i*) (mem_address));
    What could be a problem?
    Last edited by MikeTbob; 11-20-2010 at 02:50 AM. Reason: Added code tags

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •