<div dir="ltr"><div>Hi All,</div><div>  <br></div><div>        We are handing the ipmi commands (Bridge IC request) in the ipmi module. <br></div><div><br></div><div>        Please find below the gerrit links for the Design and Sample code implementation of BIC request handling in the ipmi. <br><br>        Design : <a href="https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-host-ipmid/+/32213">https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-host-ipmid/+/32213</a><br>        Sample code implementation : <a href="https://gerrit.openbmc-project.xyz/c/openbmc/fb-ipmi-oem/+/32215">https://gerrit.openbmc-project.xyz/c/openbmc/fb-ipmi-oem/+/32215</a> <br><br>        So, This is regarding the ipmi implementation issue as per the new design of handling BIC request. <br></div><div><br></div><div>      1. We are handling the command "0x38 0 1 6 0x15 0xa0 0 0 6 1 0"  Netfn = 0x38, cmd =1 is from Bridge IC in the ipmi module.  In the ipmid, we are making new callback(ipmiOemBicHandler) to handle this BIC request.</div><div><br></div><div>       2.        The Netfn= 0x38 and cmd=1 is verified, we are getting the commands from the BIC, the same is received at ipmb and ipmid also. The register call back is also  called. When we fill up the response from the ipmiOemBicHandler works fine. The response is received at the BIC as well.</div><div><br></div><div>       3.  But as per the new design, we need to call ipmid command handler recursively. When we get the Netfn= 0x38 and cmd=1 command in ipmiOemBicHandler, the handler needs to open the packet and there will be an another command (for ex Netfn=6 and cmd=1 get_dev_id). ipmiOemBicHandler needs to send this command <br></div><div><br></div><div>       4. In  ipmiOemBicHandler callback function we are using synchronous method to create connection, using this connection we are calling "execute" ipmid dbus method from the ipmid deamon. <br></div><div><br></div><div>       5.  While calling "execute" method, internally it calls sd_bus_call function. Sd_bus_call returns ELOOP exception due to sender and receiver <br></div><div>         process are same.  <br></div><div><br></div><div>       6. As per our understanding, current  sd_bus_call not supported for connection with the same bus/clients. (sender  and receiver are same <br></div><div>           application name ). Please confirm.<br></div><div><br></div><div>            Log : <br></div><div>            yosemitev2 ipmid[370]: sd_bus_call function called..<br>            yosemitev2 ipmid[370]: sd_bus_call function ELOOP .</div><div>            yosemitev2 ipmid[370]: <span style="background-color:rgb(255,255,0)"> unique name = :1.71</span></div><div>            yosemitev2 ipmid[370]:  <span style="background-color:rgb(255,255,0)">incoming sender = :1.71</span><br>            yosemitev2 ipmid[370]: executeCallback called. catch block<br>            yosemitev2 ipmid[370]: <span style="background-color:rgb(255,255,0)">EXCEPTION=sd_bus_call: System.Error.ELOOP: Too many levels of symbolic links  <br></span></div><div><span style="background-color:rgb(255,255,0)"><span style="background-color:rgb(0,0,0)"><span style=""></span></span><br></span></div><div>       So,  Could you please confirm sd_bus_call does not support the same bus/clients with in the same process.</div><div><br></div><div>       Also, Please let us know if any alternate method to  call the execute dbus method with the same bus/connection.</div><div><br></div><div>Thanks,</div><div>Kumar.<br></div><div><br></div><div><br></div><div>      <br></div><div>  <br></div><div><br></div><div><br></div><div><div>      <br></div><div><br></div><div>       <br></div><div> <br></div></div></div>