<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Konstantin,<o:p></o:p></p>
<p class="MsoNormal">If you define device through dts with register 0x11 then device should already be there and you don’t need to define this manually. Please check remote address  entry in case you see issues. I don’t think any controller issues at this time.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards<o:p></o:p></p>
<p class="MsoNormal">-Vijay<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">openbmc <openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org> on behalf of Konstantin Klubnichkin <kitsok@yandex-team.ru><br>
<b>Date: </b>Wednesday, April 29, 2020 at 8:09 AM<br>
<b>To: </b>"Bhat, Sumanth" <sumanth.bhat@intel.com>, "openbmc@lists.ozlabs.org" <openbmc@lists.ozlabs.org><br>
<b>Subject: </b>Re: Polling OpenBMC using IPMB<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hello, Sumanth!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you for the reply, I've found that also it's necessary to  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">1. Compile ipmi_dev driver into kernel;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2. Rename channel in /usr/share/ipmi-providers/channel_config.json - it must be named "Ipmb", not "IPMB"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I'm confused with the addresses.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">On the controller side I open slave device at 0x36 and expect BMC to appear at 0x10 (all in i2cdetect notation).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">So I assume that in ipmb-channels.json must be the following:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  <o:p></o:p></p>
<div>
<p class="MsoNormal">"type": "ipmb",<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">"slave-path": "/dev/ipmb-6",<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">"bmc-addr": 34,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">"remote-addr": 108<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">But ipmbbridged ignores this 34 (0x11 shifted left by 1 bit), instead it instantiates device at 0x10 and the re-instantiate it at what is commanded by some service. What service should it be?  updateSlaveAddrHandler is never called.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">To override this I've manually changed 0x1010 to 0x1011 in sources and voila - I can now receive the requests from the controller, but it interprets ipmbbridged responses in a wrong manner.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I've added some debug (actually a lot of :)) to ipmbbridged, so it dumps what is sent via I2C. Here is the response:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=================================================================<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">bmcSlaveAddress=0x36 netfn=0x07 lun=0x00 cmd=0x01 cc=0x00<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">>>>> 17 6c 1e 76 36 0c 01 00 23 00 02 08 02 bf 3d 2b 00 00 00 ab 00 00 0d af<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">But the controller can't interpret it right:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">ipmi-i2c 2-0011: IPMI message handler: BMC returned incorrect response, expected netfn 7 cmd 1, got netfn 7 cmd c<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">=================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I'm not sure if it's a problem in controller's IPMB implementation, or it's the wrong addresses, but this controller works fine with other BMC over IPMB.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal">Could you please clarify what should be in bmc-addr and remote-addr in ipmb-channels.json?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you!<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">29.04.2020, 13:05, "Bhat, Sumanth" <<a href="mailto:sumanth.bhat@intel.com">sumanth.bhat@intel.com</a>>:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Hi Konstantin,<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt">   Ipmbbridge is the right service. Please override the
<a href="https://github.com/openbmc/ipmbbridge/blob/master/ipmb-channels.json">https://github.com/openbmc/ipmbbridge/blob/master/ipmb-channels.json</a> with the IPMB channel relevant on your board.<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt">Thanks,<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt">Sumanth<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"><strong><span style="font-family:"Calibri",sans-serif">From:</span></strong> openbmc <<a href="mailto:openbmc-bounces+sumanth.bhat=intel.com@lists.ozlabs.org">openbmc-bounces+sumanth.bhat=intel.com@lists.ozlabs.org</a>>
<strong><span style="font-family:"Calibri",sans-serif">On Behalf Of </span></strong>Konstantin Klubnichkin<br>
<strong><span style="font-family:"Calibri",sans-serif">Sent:</span></strong> Wednesday, April 29, 2020 3:29 PM<br>
<strong><span style="font-family:"Calibri",sans-serif">To:</span></strong> <a href="mailto:openbmc@lists.ozlabs.org">
openbmc@lists.ozlabs.org</a><br>
<strong><span style="font-family:"Calibri",sans-serif">Subject:</span></strong> Polling OpenBMC using IPMB<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Hello all!<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">I've got a Purley motherboard with one of the I2C buses going out from AST2500 to external controller.<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">It gets BMC data (sensors, MAC address, etc) by polling it with IPMB.<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">I'm trying to find out how to implement it in OpenBMC.<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Is it ipmbbridge service used for this?<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Thank you!<o:p></o:p></p>
</div>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">-- <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Best regards,<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Konstantin Klubnichkin,<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">lead firmware engineer,<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">server hardware R&D group,<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">Yandex Moscow office.<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">tel: +7-903-510-33-33<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">-- <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Best regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Konstantin Klubnichkin,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">lead firmware engineer,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">server hardware R&D group,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Yandex Moscow office.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">tel: +7-903-510-33-33<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</body>
</html>