Platform Inventory for redfish

Neeraj Ladkani neladk at microsoft.com
Sat Jun 15 04:59:39 AEST 2019


Thanks Ed,

1. How does BMC reads SMBIOS tables as they are managed by HOST? 
2. PCIe devices are usually not powered on stand by rails so if BMC need to enable/disable sensors based on certain PCIe card, it would need to wait till the platform is powered. This creates a lot of problems specially if we are building platform SKUs using a common building block.
3. I think we need of a feature where we can specify platform inventory in JSON file that get picked up by "probe" .. for example to detect a M.2 .. we could use something like this...

{
            "BehindSwitch": false,
            "DeviceClass": "MassStorageController",
            "DeviceName": "PM983",
            "Id": 6,
            "PhysicalLocation": {
                "LocationOrdinalValue": 5,
                "LocationType": "Slot"
            },
            "SMBusCount": 1,
            "SMBusInfo": [
                {
                    "BusNumber": 6,
                    "DeviceType": "NVME",
                    "Id": 1,
                    "MultiMaster": false,
                    "MuxCount": 2,
                    "MuxInfo": [
                        {
                            "Channel": 1,
                            "Id": 1,
                            "SlaveAddr": "0xE2"
                        },
                        {
                            "Channel": 0,
                            "Id": 2,
                            "SlaveAddr": "0xE6"
                        }
                    ],
                    "Protocol": "CSI",
                    "SlaveAddr": "0xD4"
                }
            ],
            "SlotType": "FullLength"
        },

Thanks
Neeraj

-----Original Message-----
From: Ed Tanous <ed.tanous at intel.com> 
Sent: Friday, June 14, 2019 11:17 AM
To: Neeraj Ladkani <neladk at microsoft.com>; OpenBMC Maillist <openbmc at lists.ozlabs.org>
Subject: Re: Platform Inventory for redfish

On 6/13/19 8:48 PM, Neeraj Ladkani wrote:
> HI All,
> 
> How does we manage platform inventory like CPU, memory and PCIe devices since BMC may not always have presence pins for all components.  For IPMI , we have SDRs that can be programmed with correct SKU configurations. I am wondering what is solution for redfish (except BIOS sending inventory on USB ethernet using redfish).
This varies widely dependent on the architecture.  I can answer the specifics for x86 servers and systems using entity-manager, but in short, whatever exists in Dbus with the correct interfaces is populated in Redfish.

> 
> Platform inventory includes
> 
> 1. Number of host CPUs and type of CPUs

This is managed over a combination of PECI and SMBIOS/MDR tables.  PECI can interrogate the CPU directly.  SMBIOS has more detailed information.

> 2. Number of memory and types of memory
Same answer as CPU.  PECI allows us to get inventory counts, presence, and temperatures.  SMBIOS allows us to get more detailed information on types, timings, and inventory information.

> 3. IO expander cards
This is done over Smbus.  On Wolf Pass, we use the FruDevice application here, which scans all busses for valid FRUs.
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenbmc%2Fentity-manager%2Fblob%2Fmaster%2Fsrc%2FFruDevice.cpp&data=02%7C01%7Cneladk%40microsoft.com%7Cf9437cecf81c49d4735c08d6f0f47818%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636961330112803303&sdata=hogp4v%2F3e52cl4L9oEf%2Fdi9CtwajPD8tWWSngjEcQ08%3D&reserved=0

> 4. SMBUS devices on PCI cards

Same answer as IO expanders.  We check for a valid FRU, once we find it, we check to see if it's a card we understand the topology of, by instantiating an instance of a config file like this:
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenbmc%2Fentity-manager%2Fblob%2Fmaster%2Fconfigurations%2FAXX1P100HSSI_AIC.json&data=02%7C01%7Cneladk%40microsoft.com%7Cf9437cecf81c49d4735c08d6f0f47818%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636961330112803303&sdata=qmThWWJ7P1E4JkiJPmLEKjZsmaNjP%2FzKomGEvut3h90%3D&reserved=0

Most cards key off the product name field in the board section, but there are ways to key off of other fields as well.

At the end of the day the "probe" statement in entity manager is just a dbus match, so if your platform has a different way to identifying a "card is present" just make that data available on dbus, and add an appropriate match to entity manager.

> 
> Thanks
> Neeraj
> 


More information about the openbmc mailing list