Hi all,
I have written a PCI-device driver according to the informations from
SUN's "Device Driver Tutorial" and "Writing Device Drivers". Everything
seems fine so far, except that I see calls to the function I specified
as "attach" entry point for instances that are not in the machine.
In my case I have one single PCIe adapter in the system:
# prtconf | grep 9902,101
pci9902,101, instance #1 (driver not attached)
# add_drv -v -m '* 0666 root sys' -i \"pci9902,101\" dis_dx
exit status = 0
Driver (dis_dx) installed.
# prtconf -D | grep 9902,101
pci9902,101, instance #1 (driver name: dis_dx)
Everything looks good, except that I see another (failing) call to
attach for instance #0 in the log files.
Oct 14 17:51:08 linden-5 dis_dx: [ID 950500 kern.notice] attaching
instance 1
[...]
Oct 14 17:51:08 linden-5 dis_dx: [ID 365881 kern.info] dx_attach
successful (driver instance 1 attached)
[...]
Oct 14 17:51:08 linden-5 dis_dx: [ID 950500 kern.notice] attaching
instance 0
[...]
Oct 14 17:51:08 linden-5 dis_dx: [ID 314806 kern.warning] WARNING:
_dx_interrupt_setup failed (ddi_intr_get_supported_types failed, rc = 1)
Oct 14 17:51:08 linden-5 dis_dx: [ID 128744 kern.warning] WARNING:
dx_attach failed (failed to setup interrupt, rc = 1)
As you can see there is a attach for instance #0 although there shows no
instance #0 up in prtconf.
I also played with dtrace but it only tells me that the successful
attach for instance #1 returns successful (return 0) before the attach
for instance #0 is executed (timestamp 1784202... < 1784207...).
-bash-3.2# ./tmp/add_drv_dx.d
dtrace: script './tmp/add_drv_dx.d' matched 2 probes
CPU ID FUNCTION:NAME
0 51191 dx_attach:entry 17841985697735
genunix`devi_attach+0x87
genunix`attach_node+0x123
genunix`i_ndi_config_node+0xe1
genunix`i_ddi_attachchild+0x67
genunix`devi_attach_node+0xfd
genunix`config_immediate_children+0xf2
genunix`devi_config_common+0x9f
genunix`mt_config_thread+0x5c
unix`thread_start+0x8
0 51192 dx_attach:return 0
17842023752250
2 51191 dx_attach:entry 17842076118796
genunix`devi_attach+0x87
genunix`attach_node+0x123
genunix`i_ndi_config_node+0xe1
genunix`i_ddi_attachchild+0x67
genunix`devi_attach_node+0xfd
genunix`config_immediate_children+0xf2
genunix`devi_config_common+0x9f
genunix`mt_config_thread+0x5c
unix`thread_start+0x8
2 51192 dx_attach:return 1
17842076381481
And last but not least, in an other system with two instances (#0 and
#1) I have seen three calls to attach: one for #0, one for #1 and one
for the non-existent #3.
Can someone explain this behavior?
Regards,
Christian
--
Christian Kaiser, Software Engineer, Dolphin Interconnect Solutions
http//www.dolphinics.com
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code