Hi,

I am playing with some PCI Express card and my driver crashes on
setting interrupt
handler. I am trying to use MSIX interrupt there.
The stack trace included below. It looks like when in pci_msi_configure
http://cvs.opensolaris.org/source/xref/on/usr/src/uts/common/io/pci_intr_lib.c#237
call to i_ddi_get_msix() returns NULL (it can according to
http://cvs.opensolaris.org/source/xref/on/usr/src/uts/common/os/ddi_intr_impl.c#i_ddi_get_msix)
there is no check for it and NULL pointer is dereferenced right away.

Is my analysis correct ? Any restrictions on using MSIX interrupt or any special
handling beyond those described in WDD ?

Regards,
        Cyril

panic[cpu0]/thread=ffffffff80ee9be0:
BAD TRAP: type=e (#pf Page fault) rp=fffffe8000622f80 addr=10 occurred
in module "genunix" due to a NULL pointer dereference

fffffe8000622e70 unix:die+eb ()
fffffe8000622f70 unix:trap+14f9 ()
fffffe8000622f80 unix:cmntrap+140 ()
fffffe80006230f0 genunix:pci_msi_configure+7f ()
fffffe8000623130 pcplusmp:apic_pci_msi_enable_vector+3f ()
fffffe80006231b0 pcplusmp:apic_rebind+2d9 ()
fffffe80006231e0 pcplusmp:apic_setup_io_intr+36 ()
fffffe8000623250 pcplusmp:apic_addspl+14e ()
fffffe80006232d0 unix:add_avintr+115 ()
fffffe8000623350 npe:pci_enable_intr+9d ()
fffffe8000623430 npe:pci_common_intr_ops+4e8 ()
fffffe8000623470 npe:npe_intr_ops+23 ()
fffffe80006234d0 unix:i_ddi_intr_ops+54 ()
fffffe8000623530 unix:i_ddi_intr_ops+54 ()
fffffe8000623570 genunix:ddi_intr_enable+64 ()
fffffe80006235b0 xx:xx_intr_init+211 ()
fffffe80006235f0 xx:xx_attach+a6 ()
fffffe8000623650 genunix:devi_attach+8c ()
fffffe8000623690 genunix:attach_node+a6 ()
fffffe80006236e0 genunix:i_ndi_config_node+a9 ()
fffffe8000623720 genunix:i_ddi_attachchild+58 ()
fffffe8000623760 genunix:devi_attach_node+7f ()
fffffe8000623810 genunix:devi_config_one+626 ()
fffffe8000623880 genunix:ndi_devi_config_one+b4 ()
fffffe8000623940 devfs:dv_find+1f8 ()
fffffe8000623990 devfs:devfs_lookup+38 ()
fffffe8000623a00 genunix:fop_lookup+50 ()
fffffe8000623c00 genunix:lookuppnvp+31d ()
fffffe8000623ca0 genunix:lookuppnat+13e ()
fffffe8000623d80 genunix:lookupnameat+c6 ()
fffffe8000623e10 genunix:cstatat_getvp+17d ()
fffffe8000623ea0 genunix:cstatat64_32+68 ()
fffffe8000623ec0 genunix:stat64_32+33 ()
fffffe8000623f10 unix:sys_sysenter+14e ()
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to