| 1 | Kernel driver `bmcsensors.o' |
|---|
| 2 | ========================== |
|---|
| 3 | |
|---|
| 4 | Status: Alpha |
|---|
| 5 | |
|---|
| 6 | Supported chips: |
|---|
| 7 | * IPMI BMC |
|---|
| 8 | Prefix: 'bmc' |
|---|
| 9 | Requires dummy adapter i2c-ipmi; |
|---|
| 10 | Driver will be registered as bmc-ipmi-0000. |
|---|
| 11 | |
|---|
| 12 | Author: M. Studebaker <mdsxyz123@yahoo.com> |
|---|
| 13 | |
|---|
| 14 | License: GPL |
|---|
| 15 | |
|---|
| 16 | |
|---|
| 17 | Module Parameters |
|---|
| 18 | ----------------- |
|---|
| 19 | |
|---|
| 20 | None. |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | Detection |
|---|
| 24 | --------- |
|---|
| 25 | |
|---|
| 26 | Registers only with i2c-ipmi. |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | Description |
|---|
| 30 | ----------- |
|---|
| 31 | |
|---|
| 32 | Together with the i2c-ipmi module, this provides high-level |
|---|
| 33 | access to sensors known by the BMC. For low-level access to |
|---|
| 34 | IPMB (I2C/SMBus) busses behind the BMC, use the i2c-ipmb module |
|---|
| 35 | and individual chip drivers. |
|---|
| 36 | |
|---|
| 37 | This module REQUIRES the IPMI kernel patch by Corey Minyard, |
|---|
| 38 | v13 or higher, available at http://openipmi.sourceforge.net . |
|---|
| 39 | Other IPMI drivers are not supported. |
|---|
| 40 | |
|---|
| 41 | See http://www.intel.com/design/servers/ipmi/ for |
|---|
| 42 | IPMI standards information. |
|---|
| 43 | |
|---|
| 44 | You must configure the following features in your kernel |
|---|
| 45 | (under Character Devices): |
|---|
| 46 | IPMI top-level message handler |
|---|
| 47 | IPMI KCS handler |
|---|
| 48 | The IPMI device interface and IPMI watchdog handler are not required. |
|---|
| 49 | |
|---|
| 50 | You must modprobe i2c-ipmi separately, it will not |
|---|
| 51 | load automatically when you modprobe bmcsensors. |
|---|
| 52 | |
|---|
| 53 | If the KCS handler (ipmi_kcs_drv) is configured as a module, |
|---|
| 54 | you must also modprobe it separately, it will not load automatically |
|---|
| 55 | when you modprobe i2c-ipmi or ipmi_msghandler (unless you set up |
|---|
| 56 | /etc/modules.conf to load ipmi_kcs_drv when ipmi_msghandler is loaded). |
|---|
| 57 | |
|---|
| 58 | |
|---|
| 59 | /proc entries |
|---|
| 60 | ------------- |
|---|
| 61 | |
|---|
| 62 | The BMC SDR's (Sensor Data Records) are scanned and |
|---|
| 63 | the /proc table is built dynamically. Sensor types and quantities |
|---|
| 64 | depend on what the BMC supports. |
|---|
| 65 | |
|---|
| 66 | curr1-n Currents. Max, min, and reading in amps. |
|---|
| 67 | fan1-n Fan speeds. Min and reading in RPM. |
|---|
| 68 | in1-n Voltages. Max, min, and reading in volts. |
|---|
| 69 | temp1-n Temps. Max, hysteresis or min, and reading in degrees C. |
|---|
| 70 | |
|---|
| 71 | Thresholds will appear as 0 if unsupported or unreadable, as indicated |
|---|
| 72 | in the SDR. |
|---|
| 73 | |
|---|
| 74 | If the thresholds are not settable (as indicated in the SDR), the |
|---|
| 75 | /proc permissions for that sensor will be 444. |
|---|
| 76 | |
|---|
| 77 | After the SDR's are scanned, the module will print |
|---|
| 78 | the sensor names and bindings to syslog/dmesg. |
|---|
| 79 | Cut these messages out and paste them to /etc/sensors.conf |
|---|
| 80 | so that 'sensors' has correct labeling. |
|---|
| 81 | |
|---|
| 82 | |
|---|
| 83 | Issues |
|---|
| 84 | ------ |
|---|
| 85 | The module will not register in /proc/sys/dev/sensors until |
|---|
| 86 | the SDR's are scanned. This may take several seconds. |
|---|
| 87 | |
|---|
| 88 | The driver uses a very simple state machine. It only sends |
|---|
| 89 | one message at a time and then waits for a response. |
|---|
| 90 | This makes the driver relatively slow. |
|---|
| 91 | If a response is an error or does not arrive, the driver |
|---|
| 92 | will probably be stuck. |
|---|
| 93 | |
|---|
| 94 | /proc access kicks off an update but returns the old data, |
|---|
| 95 | not the new; need to wait for update to finish and then return. |
|---|
| 96 | |
|---|
| 97 | Probably there are some locking issues. |
|---|
| 98 | |
|---|
| 99 | Every attempt is made to present the sensor data in /proc in a |
|---|
| 100 | manner consistent with lm_sensors /proc standards, as defined |
|---|
| 101 | in doc/developers/proc. Given the wide variation in possible SDR definitions, |
|---|
| 102 | this may not generate expected or useful data. |
|---|
| 103 | |
|---|
| 104 | IPMI supports up to 4 max and 4 min thresholds (non-recoverable, critical, |
|---|
| 105 | non-critical, and hysteresis) for each sensor. This driver |
|---|
| 106 | tries to pick out the best one and exports it as the max and min |
|---|
| 107 | to /proc. |
|---|
| 108 | |
|---|
| 109 | ins start at 1, other modules start at in0. |
|---|
| 110 | |
|---|
| 111 | Alarms and thresholds are not yet supported. |
|---|
| 112 | |
|---|
| 113 | Threshold-only sensors are not supported. |
|---|
| 114 | |
|---|
| 115 | Threshold setting is not yet supported. |
|---|
| 116 | |
|---|
| 117 | 1's and 2's complement formats not yet supported. |
|---|
| 118 | |
|---|
| 119 | Non-linear conversions not supported, except for 1/x. |
|---|
| 120 | |
|---|
| 121 | Fan divs are not supported (or required) - should the driver |
|---|
| 122 | export a fan_div entry (1 1 1 ...) for compatibility? |
|---|
| 123 | |
|---|
| 124 | Supports only sensor types 1-4 (temp, voltage, current, and fan). |
|---|
| 125 | |
|---|
| 126 | Libsensors can't handle dynamic /proc entries so the table |
|---|
| 127 | in lib/chips.c must be static and contain the max number of |
|---|
| 128 | each sensor. Bmcsensors can register more of a sensor type |
|---|
| 129 | than libsensors supports in its static table. |
|---|
| 130 | |
|---|
| 131 | Only one BMC is supported - shouldn't be a problem. |
|---|
| 132 | |
|---|
| 133 | Alpha! |
|---|
| 134 | |
|---|
| 135 | |
|---|
| 136 | |
|---|
| 137 | |
|---|
| 138 | ********************** |
|---|
| 139 | The lm_sensors project gratefully acknowledges the support of |
|---|
| 140 | Hewlett Packard (Ft. Collins) in the development of this driver. |
|---|