OpenPOWER: Add support for hardware dump

Hardware dump is a collection hardware state information,
including various registers, and it is used for debugging
system checkstop. checkstop is the descriptive term for
entire system termination by the hardware due to a detected error.

This commits adds
 - Hardware dump entry implementation
 - Hardware dump manager implementation

Tested:
  - Create a hardware dump
busctl --verbose call org.open_power.Dump.Manager /org/openpower/dump xyz.openbmc_project.Dump.Create CreateDump a{sv} 3  "com.ibm.Dump.Create.CreateParameters.DumpType" s "com.ibm.Dump.Create.DumpType.Hardware" "com.ibm.Dump.Create.CreateParameters.ErrorLogId" t 0xDEADBEEF "com.ibm.Dump.Create.CreateParameters.FailingUnitId" t 1
MESSAGE "o" {
        OBJECT_PATH "/xyz/openbmc_project/dump/hardware/entry/1";
};
/var/lib/phosphor-debug-collector/hardwaredump/1/hwdump_1_1627559369.tar.gz

  - Delete a hardware dump
busctl call xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/hardware/entry/1 xyz.openbmc_project.Object.Delete Delete

  - Offload hardware dump
  - Restore hardware dumps after restart

Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
Change-Id: I7f6b83896b2c78d9eb4295212a62476b1fe1d6c0
3 files changed
tree: 371508eb3fa7af0237c436c998371fa38e721410
  1. dump-extensions/
  2. host-transport-extensions/
  3. subprojects/
  4. test/
  5. tools/
  6. xyz/
  7. .clang-format
  8. .gitignore
  9. .shellcheck-ignore
  10. bmc_dump_entry.hpp
  11. bmcstored_dump_entry.cpp
  12. bmcstored_dump_entry.hpp
  13. core_manager.cpp
  14. core_manager.hpp
  15. core_manager_main.cpp
  16. dump-extensions.hpp
  17. dump_entry.cpp
  18. dump_entry.hpp
  19. dump_internal.hpp
  20. dump_manager.cpp
  21. dump_manager.hpp
  22. dump_manager_bmc.cpp
  23. dump_manager_bmc.hpp
  24. dump_manager_bmcstored.cpp
  25. dump_manager_bmcstored.hpp
  26. dump_manager_faultlog.cpp
  27. dump_manager_faultlog.hpp
  28. dump_manager_main.cpp
  29. dump_offload.cpp
  30. dump_offload.hpp
  31. dump_serialize.cpp
  32. dump_serialize.hpp
  33. dump_utils.cpp
  34. dump_utils.hpp
  35. elog_watch.cpp
  36. elog_watch.hpp
  37. errors_map.mako.hpp
  38. errors_map_gen.py
  39. example_errors_watch.yaml
  40. faultlog_dump_entry.cpp
  41. faultlog_dump_entry.hpp
  42. ffdc
  43. host_transport_exts.hpp
  44. LICENSE
  45. meson.build
  46. meson_options.txt
  47. OWNERS
  48. ramoops_manager.cpp
  49. ramoops_manager.hpp
  50. ramoops_manager_main.cpp
  51. README.md
  52. watch.cpp
  53. watch.hpp
README.md

phosphor-debug-collector

Phosphor Debug Collector provides mechanisms to collect various log files and system parameters. Used to troubleshoot problems in OpenBMC based systems.

One such mechanism is dreport, a script that collects debug data and packages it into an archive file.

To Build

To build this package with meson, do the following steps:

    1. meson builddir
    2. ninja -C builddir

To clean the built files run ninja -C builddir clean.

To run unit tests

Tests can be run in the CI docker container, refer local-ci-build

or with an OpenBMC x86 sdk(see below for x86 steps).

meson -Dtests=enabled build
ninja -C build test