entity-manager experiments

Ed Tanous ed.tanous at intel.com
Tue Jul 30 05:57:34 AEST 2019


On 7/26/19 4:45 PM, Patrick Venture wrote:
> On Fri, Jul 26, 2019 at 4:40 PM Patrick Venture <venture at google.com> wrote:
>>
>> Hi,
>>
>> I was curious if you had any thoughts on what is missing here -- I
>> wrote a basic json file:
>>
>> razorback.json:
>> {
>>     "Exposes": [
>>         {
>>             "Address": "$address",
>>             "Bus": "$bus",
>>             "Name": "Razorback",
>>             "Type": "EEPROM"
>>         },
>>         {
>>             "Address": "0x4c",
>>             "Bus": "$bus",
>>             "Name": "Razorback Temp Sensor",
>>             "Type": "TMP421"
>>         }
>>     ],
>>     "Name": "Razorback Board",
>>     "Probe" : "xyz.openbmc_project.FruDevice({'PRODUCT_PRODUCT_NAME':
>> '.*Razorback'})",

I'd recommend taking out the wildcard if you can if you don't expect
there to be multiple models of this board.  We've gotten trapped a
little in the past with next-gen boards sporting a similar product name
(think 2019_Razorback vs 2020_Razorback) and configs getting applied
that shouldn't have.

>>     "Type": "Board",
>>     "xyz.openbmc_project.Inventory.Decorator.Asset": {
>>         "Manufacturer": "$PRODUCT_MANUFACTURER",
>>         "Model": "$PRODUCT_PRODUCT_NAME",
>>         "PartNumber": "$PRODUCT_PART_NUMBER",
>>         "SerialNumber": "$PRODUCT_SERIAL_NUMBER"
>>     }
>> }
>>
>> And it finds it:
>> Service xyz.openbmc_project.EntityManager:
>> `-/xyz
>>   `-/xyz/openbmc_project
>>     |-/xyz/openbmc_project/EntityManager
>>     `-/xyz/openbmc_project/inventory
>>       `-/xyz/openbmc_project/inventory/system
>>         `-/xyz/openbmc_project/inventory/system/board
>>           `-/xyz/openbmc_project/inventory/system/board/Razorback_Board
>>             |-/xyz/openbmc_project/inventory/system/board/Razorback_Board/Razorback
>>             `-/xyz/openbmc_project/inventory/system/board/Razorback_Board/Razorback_Temp_Sensor
>>
>> Service xyz.openbmc_project.FruDevice:
>> `-/xyz
>>   `-/xyz/openbmc_project
>>     `-/xyz/openbmc_project/FruDevice
>>       `-/xyz/openbmc_project/FruDevice/_0
>>
>> I don't know why it's named _0, but I can debug that late
The logic for that name is right here:
https://github.com/openbmc/entity-manager/blob/441c7a86749b2331863b115e141033e735bd6ffc/src/FruDevice.cpp#L549

I'm guessing either the board section product name field or the product
section product name field is blank.  In that, we should probably check
for empty string and move on to the next one.

>>
>> So I introspect on it:
>> busctl introspect --no-pager xyz.openbmc_project.EntityManager
>> /xyz/openbmc_project/inventory/system/board/Razorback_Board/Razorback_Temp_Sensor
>> NAME                                     TYPE      SIGNATURE
>> RESULT/VALUE            FLAGS
>> org.freedesktop.DBus.Introspectable      interface -         -
>>               -
>> .Introspect                              method    -         s
>>               -
>> org.freedesktop.DBus.Peer                interface -         -
>>               -
>> .GetMachineId                            method    -         s
>>               -
>> .Ping                                    method    -         -
>>               -
>> org.freedesktop.DBus.Properties          interface -         -
>>               -
>> .Get                                     method    ss        v
>>               -
>> .GetAll                                  method    s         a{sv}
>>               -
>> .Set                                     method    ssv       -
>>               -
>> .PropertiesChanged                       signal    sa{sv}as  -
>>               -
>> xyz.openbmc_project.Configuration.TMP421 interface -         -
>>               -
>> .Address                                 property  t         76
>>               emits-change
>> .Bus                                     property  t         17
>>               emits-change
>> .Name                                    property  s
>> "Razorback Temp Sensor" emits-change
>> .Type                                    property  s         "TMP421"
>>               emits-change
>>
>> and all that looks correct, and now there's an i2c device at 17-004c,
>> but no hwmon path, and:
>>
>> Jul 25 00:27:24 machine intrusion-sensor[2654]: Error communicating to
>> entity manager
>> Jul 25 00:27:24 machine intrusion-sensor[2654]: error communicating to
>> entity manager
>> Jul 25 00:27:24 machine fansensor[2671]: Error communicating to entity manager
>> Jul 25 00:27:24 machine fansensor[2671]: error communicating to entity manager
>> Jul 25 00:27:24 machine fansensor[2671]: Error calling entity manager
>> Jul 25 00:27:24 machine adcsensor[2658]: Error communicating to entity manager
>> Jul 25 00:27:24 machine adcsensor[2658]: error communicating to entity manager
>> Jul 25 00:27:25 machine mcutempsensor[2689]: Error contacting entity manager
>> Jul 25 00:27:25 machine hwmontempsensor[2675]: Error communicating to
>> entity manager
>> Jul 25 00:27:25 machine hwmontempsensor[2675]: error communicating to
>> entity manager
>> Jul 25 00:27:26 machine psusensor[2677]: Error communicating to entity manager
>> Jul 25 00:27:26 machine psusensor[2677]: error get sensor config from
>> entity manager
>> Jul 25 00:27:27 machine ipmbsensor[2674]: Error contacting entity manager
>> Jul 25 00:27:27 machine cpusensor
> [2666]: Error communicating to entity manager
>> Jul 25 00:27:27 machine entity-manager[2694]: Clearing previous configuration
>>
>> Service xyz.openbmc_project.HwmonTempSensor:
>> Only root object discovered.
>>
>> Any thoughts on the disconnect?  Have you seen anything like this?
> 
> I had a hunch the driver was missing:
> 
> tmp/work-shared/machine/kernel-build-artifacts/.config:1827:#
> CONFIG_SENSORS_TMP421 is not set
> 
> ... ok, so that makes sense then! :D  Will try fixing that first!
> 

That would do it.

>>
>> Patrick


More information about the openbmc mailing list