For the last several days, I've been battling with the IPMI driver for FreeBSD 11. My purpose is to use IPMI for hardware monitoring (temperatures, fan speed, voltages, etc.)
I read a lot of forum posts (including these), mailing lists, user experiences' blogs, etc.
I've tried adding device hints:
but to no avail.
The kernel output, after loading the IPMI driver is:
I've even tried to hardcode those values into the /usr/src/sys/dev/ipmi/ipmi_isa.c:
Strangely, the kernel output is always the same. It looks like it is ignoring my hard-coded values.
I do not mind having those values hardcoded in the kernel (it just add little work after an upgrade). I just want the driver to work.
I read a lot of forum posts (including these), mailing lists, user experiences' blogs, etc.
I've tried adding device hints:
Code:
hint.ipmi.0.at="isa"
hint.ipmi.0.port="0xCA2"
hint.ipmi.0.spacing="8"
hint.ipmi.0.mode="KCS"
The kernel output, after loading the IPMI driver is:
Code:
ipmi0: <IPMI System Interface> on isa0
ipmi0: KCS mode found at mem 0x0 alignment 0x1 on isa
ipmi0: couldn't configure I/O resource
device_attach: ipmi0 attach returned 6
I've even tried to hardcode those values into the /usr/src/sys/dev/ipmi/ipmi_isa.c:
Code:
--- ipmi_isa.c.orig 2017-01-10 15:14:38.710653000 +0000
+++ ipmi_isa.c 2017-01-10 15:42:47.893812000 +0000
@@ -179,9 +179,21 @@
* Pull info out of the SMBIOS table. If that doesn't work, use
* hints to enumerate a device.
*/
- if (!ipmi_smbios_identify(&info) &&
+ /*if (!ipmi_smbios_identify(&info) &&
!ipmi_hint_identify(dev, &info))
- return (ENXIO);
+ return (ENXIO);*/
+
+ /*
+ * Ignore SMBIOS table and use hints exclusively - António Trindade <xxx@xxx.xxx>
+ * 2017-1-10
+ */
+ if (!ipmi_hint_identify(dev, &info))
+ return (ENXIO);
+ /* Hardcode device hints */
+ info.io_mode=1;
+ info.address=0xca2;
+ info.iface_type=KCS_MODE;
+ info.offset=1;
switch (info.iface_type) {
case KCS_MODE:
Strangely, the kernel output is always the same. It looks like it is ignoring my hard-coded values.
I do not mind having those values hardcoded in the kernel (it just add little work after an upgrade). I just want the driver to work.