~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/driver-api/ipmb.rst

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 ==============================
  2 IPMB Driver for a Satellite MC
  3 ==============================
  4 
  5 The Intelligent Platform Management Bus or IPMB, is an
  6 I2C bus that provides a standardized interconnection between
  7 different boards within a chassis. This interconnection is
  8 between the baseboard management (BMC) and chassis electronics.
  9 IPMB is also associated with the messaging protocol through the
 10 IPMB bus.
 11 
 12 The devices using the IPMB are usually management
 13 controllers that perform management functions such as servicing
 14 the front panel interface, monitoring the baseboard,
 15 hot-swapping disk drivers in the system chassis, etc...
 16 
 17 When an IPMB is implemented in the system, the BMC serves as
 18 a controller to give system software access to the IPMB. The BMC
 19 sends IPMI requests to a device (usually a Satellite Management
 20 Controller or Satellite MC) via IPMB and the device
 21 sends a response back to the BMC.
 22 
 23 For more information on IPMB and the format of an IPMB message,
 24 refer to the IPMB and IPMI specifications.
 25 
 26 IPMB driver for Satellite MC
 27 ----------------------------
 28 
 29 ipmb-dev-int - This is the driver needed on a Satellite MC to
 30 receive IPMB messages from a BMC and send a response back.
 31 This driver works with the I2C driver and a userspace
 32 program such as OpenIPMI:
 33 
 34 1) It is an I2C slave backend driver. So, it defines a callback
 35    function to set the Satellite MC as an I2C slave.
 36    This callback function handles the received IPMI requests.
 37 
 38 2) It defines the read and write functions to enable a user
 39    space program (such as OpenIPMI) to communicate with the kernel.
 40 
 41 
 42 Load the IPMB driver
 43 --------------------
 44 
 45 The driver needs to be loaded at boot time or manually first.
 46 First, make sure you have the following in your config file:
 47 CONFIG_IPMB_DEVICE_INTERFACE=y
 48 
 49 1) If you want the driver to be loaded at boot time:
 50 
 51 a) Add this entry to your ACPI table, under the appropriate SMBus::
 52 
 53      Device (SMB0) // Example SMBus host controller
 54      {
 55      Name (_HID, "<Vendor-Specific HID>") // Vendor-Specific HID
 56      Name (_UID, 0) // Unique ID of particular host controller
 57      :
 58      :
 59        Device (IPMB)
 60        {
 61          Name (_HID, "IPMB0001") // IPMB device interface
 62          Name (_UID, 0) // Unique device identifier
 63        }
 64      }
 65 
 66 b) Example for device tree::
 67 
 68      &i2c2 {
 69             status = "okay";
 70 
 71             ipmb@10 {
 72                     compatible = "ipmb-dev";
 73                     reg = <0x10>;
 74                     i2c-protocol;
 75             };
 76      };
 77 
 78 If xmit of data to be done using raw i2c block vs smbus
 79 then "i2c-protocol" needs to be defined as above.
 80 
 81 2) Manually from Linux::
 82 
 83      modprobe ipmb-dev-int
 84 
 85 
 86 Instantiate the device
 87 ----------------------
 88 
 89 After loading the driver, you can instantiate the device as
 90 described in 'Documentation/i2c/instantiating-devices.rst'.
 91 If you have multiple BMCs, each connected to your Satellite MC via
 92 a different I2C bus, you can instantiate a device for each of
 93 those BMCs.
 94 
 95 The name of the instantiated device contains the I2C bus number
 96 associated with it as follows::
 97 
 98   BMC1 ------ IPMB/I2C bus 1 ---------|   /dev/ipmb-1
 99                                 Satellite MC
100   BMC1 ------ IPMB/I2C bus 2 ---------|   /dev/ipmb-2
101 
102 For instance, you can instantiate the ipmb-dev-int device from
103 user space at the 7 bit address 0x10 on bus 2::
104 
105   # echo ipmb-dev 0x1010 > /sys/bus/i2c/devices/i2c-2/new_device
106 
107 This will create the device file /dev/ipmb-2, which can be accessed
108 by the user space program. The device needs to be instantiated
109 before running the user space program.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php