Bug #8963
closeddefault chunk size used by ipmi_fru_read() is too large for some SP's
100%
Description
ipmi_fru_read() is failing when used to read the IPMI FRU records on Dell R730 platforms. Looking more closely, we see that the IPMI_CMD_READ_FRU_DATA command is failing with completion code 0xca, which is a generic completion code indicating that the size of data requested is too large (see table 5-2 in the IPMI specification).
The implementation of ipmi_fru_read() uses a 128-byte chunk size and this has always worked in the past, but admittedly, I wrote this code years ago to work on Sun/Oracle ILOM and it's likely never been tested on non-Sun gear.
In contrast, ipmitool uses logic that retries the IPMI_CMD_READ_FRU_DATA command with increasingly smaller chunk sizes and we probably need to implement a similar approach in libipmi.
Updated by Rob Johnston over 4 years ago
I've already integrated a fix for this issue in illumos-joyent via the changeset below:
https://github.com/joyent/illumos-joyent/commit/9a212cf317ce1d7fed4fcc798229efeda6ad43f2
Updated by Rob Johnston over 4 years ago
Manual Testing
To test this change, I wrote a utility that can dump the FRU locator records on a system. The utility leverages libipmi and hence exercises the changes in this CR. The utility is available here:
https://github.com/rejohnst/illumos-toolbox/tree/master/ipmi/dump-sdr
Here is the output of the tool from running it on a pair of Supermicro systems and a Dell R730., all of which were hitting this bug:
[root@lava /var/tmp]# ./dump-sdr -T 0x11 0xda0 FRU Locator Entity Name BMC FRU Entity ID 0 (UNSPECIFIED) Entity Instance 0 Product Manufacturer Supermicro Product Name Product P/N SSG-2028R-ACR24L Product Version Product S/N S194308X7333203 Product Asset Tag Board Manufacturer Supermicro Board Name Board P/N X10DRH-iT Board S/N NM173S004421
[root@magma /var/tmp]# ./dump-sdr -T 0x11 0xda0 FRU Locator Entity Name BMC FRU Entity ID 0 (UNSPECIFIED) Entity Instance 0 Product Manufacturer Supermicro Product Name NONE Product P/N SSG-6048R-E1CR36L-RS09B Product Version NONE Product S/N S247158X6A07720 Product Asset Tag NONE Board Manufacturer Supermicro Board Name NONE Board P/N X10DRH-iT Board S/N NM165S004683
[root@volcano /var/tmp]# ./dump-sdr -T 0x11 0x4 FRU Locator Entity Name System Board Entity ID 7 (MOTHERBOARD) Entity Instance 1 Product Manufacturer DELL Product Name Joyent-Compute-Platform-3302 Product P/N Product Version 01 Product S/N FHL5TD2 Product Asset Tag Board Manufacturer DELL Board Name Joyent-Compute-Platform-3302 Board P/N 072T6DA01 Board S/N CN7792169700F5 0x5 FRU Locator Entity Name CPU1 Entity ID 3 (PROCESSOR) Entity Instance 1 failed to read FRU inventory area 0x6 FRU Locator Entity Name CPU2 Entity ID 3 (PROCESSOR) Entity Instance 2 failed to read FRU inventory area 0x7 FRU Locator Entity Name PS1 Entity ID 10 (PSU) Entity Instance 1 Board Manufacturer DELL Board Name PWR SPLY,750W,RDNT,DELTA Board P/N 05RHVVA00 Board S/N CN1797268M9VDG 0x8 FRU Locator Entity Name PS2 Entity ID 10 (PSU) Entity Instance 2 Board Manufacturer DELL Board Name PWR SPLY,750W,RDNT,DELTA Board P/N 05RHVVA00 Board S/N CN1797268M9VCL 0x9 FRU Locator Entity Name BP0 Entity ID 26 (DISK_BAY) Entity Instance 1 failed to read FRU inventory area 0xa FRU Locator Entity Name BP1 Entity ID 26 (DISK_BAY) Entity Instance 2 Board Manufacturer DELL Board Name DRIVE BACKPLANE Board P/N 07K5HKA01 Board S/N CN7792169C00R5 0xb FRU Locator Entity Name BP2 Entity ID 26 (DISK_BAY) Entity Instance 3 failed to read FRU inventory area 0xc FRU Locator Entity Name BP3 Entity ID 26 (DISK_BAY) Entity Instance 4 failed to read FRU inventory area 0x3f FRU Locator Entity Name NDC Entity ID 11 (CARD) Entity Instance 1 Board Manufacturer DELL Board Name Intel(R) 2P X520/2P I350 rNDC Board P/N 0C63DVA01 Board S/N MY1240269M015V 0x40 FRU Locator Entity Name PERC1 Entity ID 11 (CARD) Entity Instance 2 Board Manufacturer DELL Board Name Dell Storage Cntlr.12GB-SASHBA Board P/N 0P2R3RA01 Board S/N CN7792169601B2 0x41 FRU Locator Entity Name PERC2 Entity ID 11 (CARD) Entity Instance 4 failed to read FRU inventory area 0x54 FRU Locator Entity Name IDSDM Entity ID 11 (CARD) Entity Instance 3 failed to read FRU inventory area 0x55 FRU Locator Entity Name Front Panel Entity ID 12 (FRONT_PANEL) Entity Instance 1 Product Manufacturer DELL Product Name Joyent-Compute-Platform-3302 Product P/N Product Version 01 Product S/N FHL5TD2 Product Asset Tag Board Manufacturer DELL Board Name Joyent-Compute-Platform-3302 Board P/N 072T6DA01 Board S/N CN7792169700F5 0xb4 FRU Locator Entity Name DIMM SLOT Entity ID 32 (MEMORY_DEVICE) Entity Instance 1 failed to read FRU inventory area 0xb6 FRU Locator Entity Name NTB Entity ID 11 (CARD) Entity Instance 3 failed to read FRU inventory area 0xb7 FRU Locator Entity Name OEM fru Entity ID 7 (MOTHERBOARD) Entity Instance 1
Note that the cases on volcano, where the utility reported "failed to read FRU inventory area" are expected and ipmitool reports the same for those specific entities.
Updated by Electric Monk over 4 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
git commit b10f758d69dd151326d3859af7e1d857ec9a6355
commit b10f758d69dd151326d3859af7e1d857ec9a6355 Author: Rob Johnston <rob.johnston@joyent.com> Date: 2018-01-16T20:15:37.000Z 8963 default chunk size used by ipmi_fru_read() is too large for some SP's Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com> Approved by: Richard Lowe <richlowe@richlowe.net>