/guard

Primary LanguageC++Apache License 2.0Apache-2.0

GUARD

Guarding the system against failures by permanently isolating faulty units. guard records contains the permanently isolated components details. GUARD repository provides the libraries and tools to create/list/delete guard records

Building

Need meson and ninja. Alternatively, source an OpenBMC ARM/x86 SDK.

meson build && ninja -C build

To use power system device for guard FRU's.

meson build -Ddevtree=enabled && ninja -C build

To build libguard with verbose level to get required trace.
Supported verbose level:
0 - Emergency, 1 - Alert, 2 - Critical, 3 - Error, 4 - Warning, 5 - Notice, 6 - Info, 7 - Debug
By default verbose level is Error.

meson build -Dverbose=7 && ninja -C build

To run unit tests

Tests can be run in the CI docker container, or with an OpenBMC x86 sdk(see below for x86 steps).

meson -Doe-sdk=enabled -Dtests=enabled build
ninja -C build test

Usage of GUARD tool


guard --help
GUARD Tool
Usage: guard [OPTIONS]

Options:
  -h,--help                Guard CLI tool options
  -c,--create TEXT         Create Guard record, expects physical path as input
  -i,--invalidate FLOAT    Invalidate a single Guard record, expects record id
                           as input
  -I,--invalidate-all      Invalidates all the Guard records
  -l,--list                List all the GUARD'ed resources
  -r,--reset               Erase all the Guard records
  -v,--version             Version of GUARD tool

Note: Physical path can be fetched from device tree, using ATTR_PHYS_DEV_PATH attribute of the corresponding target. Physical path formats supported by guard tool:-

  • physical:sys-0/node-0/proc-0/mc-0/mi-0/mcc-0
  • /sys-0/node-0/proc-0/mc-0/mi-0/mcc-0
  • sys-0/node-0/proc-0/mc-0/mi-0/mcc-0

Examples

  • To create a guard record.
guard -c sys-0/node-0/proc-0/mc-0/mi-0/mcc-0
Success
  • To list the guard records present in a system.
guard -l
ID       | ERROR    |  Type  | Path 
00000001 | 00000000 | manual | physical:sys-0/node-0/proc-0/mc-0/mi-0/mcc-0
  • To erase all the guard records
guard -r
  • To invalidate a single guard record
guard -i 1
  • To invalidate all the guard records
guard -I