Access Intel ME IPMB from BMC

Oskar Senft osk at google.com
Fri Apr 24 06:50:02 AEST 2020


Thanks for the explanation. I could test what I needed to test on an Intel
C620 based platform.

Specifically I'm trying to run a board in eSPI + SAFS mode. SAFS is "Slave
Attached Flash Sharing" where the PCH loads all of its firmware (ME, GbE,
BIOS etc) via eSPI, e.g. from a BMC. See Intel document 329957 ("Enhanced
Serial Peripheral Interface (eSPI) - Addendum for Server Platforms") from
https://downloadcenter.intel.com/download/27055/eSPI for reference.
However, even though the PCH (C620 series) reads quite a lot of data via
SAFS, the ME doesn't release the CPU and the host wouldn't turn on. I had
hoped that this is just the result of not having FDRV (aka. FD0V) enabled
in the PCH. In that case the ME should have responded to IPMB and reported
such. But the ME doesn't respond at all on i2c in SAFS mode (checked via
logic analyzer), so I'm at a loss of what's wrong with it. In MAFS mode
(i.e. when using SPI flash for  the PCH), the IPMB works as expected, so I
know my setup is correct and it's actually the ME being unhappy in SAFS
mode. I tried with ME in both "operational" and "recovery" mode. I do see
different behavior in that the ME in "recovery" mode completely rewrites
the MFS section, so "something" must actually be running in the ME. I guess
the only other thing I haven't tried is to compare SAFS operations with SPI
operations (MAFS) to see what else it would be doing on SPI.

Oskar.

On Thu, Apr 23, 2020 at 2:59 PM Vijay Khemka <vijaykhemka at fb.com> wrote:

> As i2c slave mqueue driver is not upstreamed and with already having same
> functionality in ipmb-dev driver which is already in uostream kernel, I
> don’t see any reason to use i2c slave mqueue driver. I highly incourage
> people to use ipmb-dev driver with latest ipmbbridge. If there are any
> issues, please let us know.
>
>
>
> Regards
>
> -Vijay
>
>
>
> *From: *Oskar Senft <osk at google.com>
> *Date: *Thursday, April 23, 2020 at 8:34 AM
> *To: *Vijay Khemka <vijaykhemka at fb.com>
> *Cc: *OpenBMC Maillist <openbmc at lists.ozlabs.org>
> *Subject: *Re: Access Intel ME IPMB from BMC
>
>
>
> On a side note regarding the ipmb-dev driver: It seems that the
> Documentation/IPMB.txt has gotten "lost". The only version I could find is
> this:
> https://github.com/openbmc/linux/blob/51bd6f291583684f495ea498984dfc22049d7fd2/Documentation/IPMB.txt.
> But it's not in any of the recent branches (dev-5.3 or dev-5.4).
>
>
>
> Should this file be resurrected?
>
>
>
> Oskar.
>
>
>
> On Thu, Apr 23, 2020 at 11:31 AM Oskar Senft <osk at google.com> wrote:
>
> Thanks again!
>
>
>
> ipmbbridge solved my problem. I found that my version of OpenBMC (incl.
> kernel) used a slightly older version of ipmbbridge which still used the
> i2c slave mqueue, which worked fine. Reading a bit of source code made it
> clear how it worked. The key is to configure ipbm-channels.json with the
> correct i2c device and the rest "just works".
>
>
>
> For the benefit of others: My understanding is that the current version of
> ipmbbridge no longer uses the i2c slave mqueue but requires the ipmb-dev
> driver in the kernel. It's not necessary to actually attach the driver to
> an i2c device as that can happen at runtime.
>
>
>
> Oskar.
>
>
>
>
>
> On Mon, Apr 20, 2020 at 4:34 PM Vijay Khemka <vijaykhemka at fb.com> wrote:
>
> Hi Oskar,
>
> You need to use ipmb-dev driver which is is being used by ipmbbridge. You
> don’t need ipmb-host as we are having ipmbbridge to replace that.
>
>
>
> Regards
>
> -Vijay
>
>
>
> *From: *Oskar Senft <osk at google.com>
> *Date: *Monday, April 20, 2020 at 11:35 AM
> *To: *Vijay Khemka <vijaykhemka at fb.com>
> *Cc: *OpenBMC Maillist <openbmc at lists.ozlabs.org>
> *Subject: *Re: Access Intel ME IPMB from BMC
>
>
>
> Hi Vijay
>
>
>
> Thanks for the pointer!
>
>
>
> I also found both https://github.com/Mellanox/ipmb-host and
> https://github.com/openbmc/linux/blob/dev-5.4/drivers/char/ipmi/ipmb_dev_int.c
> .
>
>
>
> Is it right that with ipmbbridge I don't need either of them since
> ipmbbridge uses the raw i2c dev?
>
>
>
> Thanks
>
> Oskar.
>
>
>
> On Mon, Apr 20, 2020 at 2:12 PM Vijay Khemka <vijaykhemka at fb.com> wrote:
>
> Hi Oskar,
>
> You need to configure your ME channel in ipmb channel config file
> https://github.com/openbmc/ipmbbridge/blob/master/ipmb-channels.json
>
> And make sure ipmbbridge is running. Then you can send get device id
> command to ME from command line itself to test if everything is working.
>
>
>
> busctl call xyz.openbmc_project.Ipmi.Channel.Ipmb
> /xyz/openbmc_project/Ipmi/Channel/Ipmb org.openbmc.Ipmb sendRequest yyyyay
> 1 6 0 0x1 0
>
>
>
> Regards
>
> -Vijay
>
>
>
> *From: *openbmc <openbmc-bounces+vijaykhemka=fb.com at lists.ozlabs.org> on
> behalf of Oskar Senft <osk at google.com>
> *Date: *Saturday, April 18, 2020 at 6:47 PM
> *To: *OpenBMC Maillist <openbmc at lists.ozlabs.org>
> *Subject: *Access Intel ME IPMB from BMC
>
>
>
> Hi everyone
>
>
>
> I'm trying to find out how I can access the Intel ME via IPMB from the BMC
> (OpenBMC).
>
>
>
> From what I gathered, Intel ME's IPMB is on the PCH's SMLink0. I know this
> is connected to one of the SMBus modules on my AST2500. But what I can't
> find out is how I actually send commands there? I'm sure I'm missing a
> document that makes this obvious.
>
>
>
> Or is it as simple as dropping IPMI packets onto the bus?
>
>
>
> Is this by any chance already implemented in OpenBMC?
>
>
>
> Thanks for any hints!
>
>
>
> Oskar
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20200423/b389cdf8/attachment.htm>


More information about the openbmc mailing list