<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">Yes i2c-protocol was required if your ipmb device doesn’t support smbus command rather it supports raw i2c transaction. This patch was added in kernel to support.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Good that it is working for you.<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">Konstantin Klubnichkin <kitsok@yandex-team.ru><br>
<b>Date: </b>Thursday, April 30, 2020 at 1:47 AM<br>
<b>To: </b>Vijay Khemka <vijaykhemka@fb.com>, "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, Vijay!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">It works! It was "i2c-protocol" in DTS.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">So step by step for further users:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">1. Enable CONFIG_IPMB_DEVICE_INTERFACE=y in kernel config file;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2. Add device to DTS:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">&i2c6 {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   bus-frequency = <100000>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   aspeed,dma-buf-size = <4095>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   aspeed,hw-timeout-ms = <300>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   status = "okay";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">   ina219@45 {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       compatible = "ti,ina219";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       reg = <0x45>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       shunt-resistor = <250><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">   ipmb@11 {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       compatible = "ipmb-dev";<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       reg = <0x11>;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">       i2c-protocol;<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"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Side note: in my case "i2c-protocol" was the root cause of incompatibility with controller<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">3. Change channel name in channel_config.json (part of phosphor-ipmi-config) to "Ipmb" from "IPMB".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Question: Should the number of channel in channel_config.json be the same as I2C bus number?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">4. Change I2C bus number and addresses of BMC (OpenBMC, as in DTS but shifted left by one bit) and controller (again, shifted left by 1 bit) in ipmb-channels.json (part of phosphor-ipmi-ipmb) like this:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">{<o:p></o:p></p>
</div>
<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">Looks like that's all<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>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal">30.04.2020, 00:30, "Vijay Khemka" <vijaykhemka@fb.com>:<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">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 style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt">Regards<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt">-Vijay<o:p></o:p></p>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p style="margin:0in;margin-bottom:.0001pt"><strong><span style="font-size:12.0pt;font-family:"Calibri",sans-serif;color:black">From:
</span></strong><span style="font-size:12.0pt;color:black">openbmc <<a href="mailto:openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org">openbmc-bounces+vijaykhemka=fb.com@lists.ozlabs.org</a>> on behalf of Konstantin Klubnichkin <<a href="mailto:kitsok@yandex-team.ru">kitsok@yandex-team.ru</a>><br>
<strong><span style="font-family:"Calibri",sans-serif">Date: </span></strong>Wednesday, April 29, 2020 at 8:09 AM<br>
<strong><span style="font-family:"Calibri",sans-serif">To: </span></strong>"Bhat, Sumanth" <<a href="mailto:sumanth.bhat@intel.com">sumanth.bhat@intel.com</a>>, "<a href="mailto:openbmc@lists.ozlabs.org">openbmc@lists.ozlabs.org</a>" <<a href="mailto:openbmc@lists.ozlabs.org">openbmc@lists.ozlabs.org</a>><br>
<strong><span style="font-family:"Calibri",sans-serif">Subject: </span></strong>Re: Polling OpenBMC using IPMB</span><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">Hello, Sumanth!<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 for the reply, I've found that also it's necessary to  <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">1. Compile ipmi_dev driver into kernel;<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">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 style="margin:0in;margin-bottom:.0001pt">I'm confused with the addresses.<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">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 style="margin:0in;margin-bottom:.0001pt">So I assume that in ipmb-channels.json must be the following:<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
<div>
<p style="margin:0in;margin-bottom:.0001pt">"type": "ipmb",<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">"slave-path": "/dev/ipmb-6",<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">"bmc-addr": 34,<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">"remote-addr": 108<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">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 style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">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 style="margin:0in;margin-bottom:.0001pt"> <o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">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 style="margin:0in;margin-bottom:.0001pt">=================================================================<o:p></o:p></p>
</div>
<div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">bmcSlaveAddress=0x36 netfn=0x07 lun=0x00 cmd=0x01 cc=0x00<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">>>>> 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 style="margin:0in;margin-bottom:.0001pt">=================================================================<o:p></o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt">But the controller can't interpret it right:<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">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 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>
<p style="margin:0in;margin-bottom:.0001pt">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 style="margin:0in;margin-bottom:.0001pt">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 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">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 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>
<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>