<HTML dir=ltr><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.6000.16587" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV id=idOWAReplyText22204 dir=ltr>
<DIV id=idOWAReplyText54400 dir=ltr>
<DIV dir=ltr><FONT face=Arial size=2>>When are <STRONG>ibbus.sys</STRONG> and <STRONG>ibiou.sys</STRONG> comes into the picture.</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
<DIV dir=ltr><FONT face=Arial size=2>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The driver iibus.sys is a root enumerated driver. This means the OS just creates a device pdo on the root bus at system boot time. The driver then is called at DriverEntry based on the "start" entry in the service registry key. It's currently set to be loaded as needed by the PnP manager, although to boot over the fabric it needs to become a boot start driver. The AddDevice routine is called by the PnP managed when it matches up the instance id reported by the root bus enumerated pdo with the installed driver instance. This happens early.</SPAN><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face="Times New Roman"> <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">There isn't a PnP parent child relationship between the ibbus and mthca drivers. It's actually a very strange relationship, which there has been some discussion of changing. The mthca and ibbus find out about each other via the PnP interface notifications, and then the mthca driver uses the ibbus driver to implement some of the common functionality (via a function call interface). The OS thinks (as displayed by devicetree) the mthca driver is a bus driver, because it responds to query relationship PnP irps, although the actual work is done by ibbus.</SPAN><o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face="Times New Roman"> <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The registry entry that causes the root bus enumerator to create the pdo for ibbus is created by the mthca device coinstaller using driver setup apis. The mthca driver is found on the PCI bus by the PCI bus enumerator.</SPAN><o:p></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face="Times New Roman"> <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Jan</SPAN><o:p></o:p></P></FONT><FONT face=Arial size=2></FONT></DIV></DIV></DIV></BODY></HTML>