none
BSOD on storport!RaidpAdapterInterruptRoutine RRS feed

  • Question

  • I uninstall a Storport miniport driver in Device Manager, and select "Delete the driver software for this device".

    The uninstall complete successful. (If I rescan device in Device Manage after uninstall, following BSOD will not occur.) Then I restart the OS. 

    When the restarting almost done, a BSOD occurred.

    Following is the dump information:

    kd> !analyze -v
    *******************************************************************************
    *                                                                             *
    *                        Bugcheck Analysis                                    *
    *                                                                             *
    *******************************************************************************
    DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
    An attempt was made to access a pageable (or completely invalid) address at an
    interrupt request level (IRQL) that is too high.  This is usually
    caused by drivers using improper addresses.
    If kernel debugger is available get stack backtrace.
    Arguments:
    Arg1: 0000000000000000, memory referenced
    Arg2: 0000000000000008, IRQL
    Arg3: 0000000000000008, value 0 = read operation, 1 = write operation
    Arg4: 0000000000000000, address which referenced memory
    Debugging Details:
    ------------------
    READ_ADDRESS:  0000000000000000 
    CURRENT_IRQL:  8
    FAULTING_IP: 
    +6662393132306537
    00000000`00000000 ??              ???
    PROCESS_NAME:  System
    DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT
    BUGCHECK_STR:  0xD1
    TRAP_FRAME:  fffff80002838930 -- (.trap 0xfffff80002838930)
    NOTE: The trap frame does not contain all registers.
    Some register values may be zeroed or incorrect.
    rax=fffffa80027665e0 rbx=0000000000000000 rcx=fffffa8002970008
    rdx=fffffa8002748600 rsi=0000000000000000 rdi=0000000000000000
    rip=0000000000000000 rsp=fffff80002838ac8 rbp=fffff80002838b80
     r8=fffff80001601cc0  r9=0000000000000000 r10=000000000000c619
    r11=00000000000f0000 r12=0000000000000000 r13=0000000000000000
    r14=0000000000000000 r15=0000000000000000
    iopl=0         nv up ei ng nz na pe nc
    00000000`00000000 ??              ???
    Resetting default scope
    LAST_CONTROL_TRANSFER:  from fffff80001480be9 to fffff80001481640
    FAILED_INSTRUCTION_ADDRESS: 
    +6662393132306537
    00000000`00000000 ??              ???
    STACK_TEXT:  
    fffff800`02838ac8 fffff880`013080d3 : 00000000`00000000 fffffa80`02939340 fffffa80`02939340 00000000`00000001 : 0x0
    fffff800`02838ad0 fffff800`0147d47c : 00000000`00000000 00000000`00000001 fffffa80`027123c0 00000000`10fcf3d4 : storport!RaidpAdapterInterruptRoutine+0x23
    fffff800`02838b00 fffff880`0262c9c2 : fffff800`0148af09 00000000`ffffffed fffffa80`03325598 00000000`00000000 : nt!KiInterruptDispatch+0x16c
    fffff800`02838c98 fffff800`0148af09 : 00000000`ffffffed fffffa80`03325598 00000000`00000000 00000000`00000518 : intelppm+0x39c2
    fffff800`02838ca0 fffff800`0147933c : fffff800`015f3e80 fffff800`00000000 00000000`00000000 fffff880`012fc500 : nt!PoIdle+0x52a
    fffff800`02838d80 00000000`00000000 : fffff800`02839000 fffff800`02833000 fffff800`02838d40 00000000`00000000 : nt!KiIdleLoop+0x2c
    STACK_COMMAND:  .trap 0xfffff80002838930 ; kb
    FOLLOWUP_IP: 
    storport!RaidpAdapterInterruptRoutine+23
    fffff880`013080d3 4883c428        add     rsp,28h
    SYMBOL_STACK_INDEX:  1
    SYMBOL_NAME:  storport!RaidpAdapterInterruptRoutine+23
    FOLLOWUP_NAME:  MachineOwner
    MODULE_NAME: storport
    IMAGE_NAME:  storport.sys
    DEBUG_FLR_IMAGE_TIMESTAMP:  4ce7a456
    FAILURE_BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_storport!RaidpAdapterInterruptRoutine+23
    BUCKET_ID:  X64_0xD1_CODE_AV_NULL_IP_storport!RaidpAdapterInterruptRoutine+23
    Followup: MachineOwner

    Friday, February 22, 2013 2:43 AM

Answers

  • your miniport is doing something incorrect. it looks like it is registering as physical miniport (vs virtual) without providing an ISR and storport is calling into our NULL ISR

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, February 22, 2013 3:09 AM

All replies

  • your miniport is doing something incorrect. it looks like it is registering as physical miniport (vs virtual) without providing an ISR and storport is calling into our NULL ISR

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, February 22, 2013 3:09 AM
  • Thanks, Holan!

    Yes, you are right. The HwInterrupt routine is NULL but my driver use HwMSInterruptRoutine for MSI.

    Do I need to set HwInterrupt even using MSI?

    Another thing confused me is that I have uninstall the device driver, why Storport still calling into the ISR?
    Friday, February 22, 2013 4:08 AM
  • Yes, even if you register an msi isr you still need a normal one in case you can't get an msi interrupt allocated or configured. Are you disabling interrupts properly in your driver when being removed?

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Friday, February 22, 2013 4:47 AM
  • Yes, I masked all the interrupts in HwAdapterControl(ScsiStopAdapter). 

    I think I should register a dummy ISR for HwInterrupt.

    Friday, February 22, 2013 5:50 AM