Project

General

Profile

Bug #8963

default chunk size used by ipmi_fru_read() is too large for some SP's

Added by Rob Johnston almost 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Start date:
2018-01-12
Due date:
% Done:

100%

Estimated time:
Difficulty:
Bite-size
Tags:
\
Gerrit CR:

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.

#1

Updated by Rob Johnston almost 3 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

#2

Updated by Rob Johnston almost 3 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.

#3

Updated by Electric Monk almost 3 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>

Also available in: Atom PDF