Re: [PATCH v8 1/1] Add support for IPMB driver
From: Randy Dunlap
Date: Tue May 07 2019 - 18:10:23 EST
Hi,
Just a few doc comments below...
On 5/7/19 2:30 PM, Asmaa Mnebhi wrote:
> Support receiving IPMB requests on a Satellite MC from the BMC.
> Once a response is ready, this driver will send back a response
> to the BMC via the IPMB channel.
>
> Signed-off-by: Asmaa Mnebhi <Asmaa@xxxxxxxxxxxx>
> Acked-by: vadimp@xxxxxxxxxxxx
> ---
> Documentation/IPMB.txt | 103 +++++++++++
> drivers/char/ipmi/Kconfig | 8 +
> drivers/char/ipmi/Makefile | 1 +
> drivers/char/ipmi/ipmb_dev_int.c | 382 +++++++++++++++++++++++++++++++++++++++
> 4 files changed, 494 insertions(+)
> create mode 100644 Documentation/IPMB.txt
> create mode 100644 drivers/char/ipmi/ipmb_dev_int.c
>
> diff --git a/Documentation/IPMB.txt b/Documentation/IPMB.txt
> new file mode 100644
> index 0000000..fd9d168
> --- /dev/null
> +++ b/Documentation/IPMB.txt
> @@ -0,0 +1,103 @@
> +============================
> +IPMB Driver fro Satellite MC
for
> +============================
> +
> +The Intelligent Platform Management Bus, or IPMB is an
or IPMB,
> +I2C bus that provides a standardized interconnection between
> +different boards within a chassis. This interconnection is
> +between the baseboard management (BMC) and chassis electronics.
> +IPMB is also associated with the messaging protocol through the
> +IPMB bus.
> +
> +The devices using the IPMB are usually management
> +controllers that perform management functions such as servicing
> +the front panel interface, monitoring the baseboard,
> +hot-swapping disk drivers in the system chassis, etc...
> +
> +When an IPMB is implemented in the system, the BMC serves as
> +a controller to give system software access to the IPMB. The BMC
> +sends IPMI requests to a device (usually a Satellite Management
> +Controller or Satellite MC) via IPMB and the device
> +sends a response back to the BMC.
> +
> +For more information on IPMB and the format of an IPMB message,
> +refer to the IPMB and IPMI specifications.
> +
> +IPMB driver for Satellite MC
> +----------------------------
> +
> +ipmb-dev-int - This is the driver needed on a Satellite MC to
> +receive IPMB messages from a BMC and send a response back.
> +This driver works hand with the i2c driver and a userspace
drop "hand"
s/i2c/I2C/
> +program such as OpenIPMI:
> +
> +1) It is an I2C slave backend driver. So, it defines a callback
> +function to set the Satellite MC as an I2C slave.
> +This callback function handles the received IPMI requests.
> +
> +2) It defines the read and write functions to enable a user
> +space program (such as OpenIPMI) to communicate with the kernel.
> +
> +
> +Load the IPMB driver
> +--------------------
> +
> +The driver needs to be loaded at boot time or manually first.
> +First, make sure you have the following in your config file:
> +CONFIG_IPMB_DEVICE_INTERFACE=y
> +
> +1) If you want the driver to be loaded at boot time:
> +
Are these instructions for a hardware/firmware developer?
> +a) Add this entry to your ACPI table, under the appropriate SMBus:
> +
> +Device (SMB0) // Example SMBus host controller
> +{
> + Name (_HID, "<Vendor-Specific HID>") // Vendor-Specific HID
> + Name (_UID, 0) // Unique ID of particular host controller
> + :
> + :
> + Device (IPMB)
> + {
> + Name (_HID, "IPMB0001") // IPMB device interface
> + Name (_UID, 0) // Unique device identifier
> + }
> +}
> +
> +b) Example for device tree:
> +
> +&i2c2 {
> + status = "okay";
> +
> + ipmb@10 {
> + compatible = "ipmb-dev";
> + reg = <0x10>;
> + };
> +};
> +
> +2) Manually from linux:
s/linux/Linux/
> +modprobe ipmb-dev-int
> +
> +
> +Instantiate the device
> +----------------------
> +
> +After loading the driver, you can instantiate the device as
> +described in the document 'instantiating-devices'.
what document is that? where?
> +If you have multiple BMCs, each connected to your Satellite MC via
> +a different I2C bus, you can instantiate a device for each of
> +those BMCs.
> +The name of the instantiated device contains the I2C bus number
> +associated with it as follows:
> +
> +BMC1 ------ IPMB/I2C bus 1 ---------| /dev/ipmb-1
> + Satellite MC
> +BMC1 ------ IPMB/I2C bus 2 ---------| /dev/ipmb-2
> +
> +For instance, you can instantiate the ipmb-dev-int device from
> +user space at the 7 bit address 0x10 on bus 2:
> +
> + # echo ipmb-dev 0x1010 > /sys/bus/i2c/devices/i2c-2/new_device
> +
> +This will create device file /dev/ipmb-2, which can be accessed
This will create the device file
> +by the user space program. The device needs to be instantiated
> +before running the user space program.
thanks.
--
~Randy