Generate error map as part of dump types

An error type is a specific type of BMC dump that is generated
when a particular error is logged in the BMC. Previously,
dump types and error types were managed independently, with
error types being defined in separate files, namely 'error_map.hpp'
and its associated mako template 'error_map.mako.cpp'. However, this
practice led to inconsistencies, as the dreport script, which is used
for handling dump collection and packaging, was interpreting error
type as another dump type rather than as additional parameters.

The separate error_map.hpp file and its associated mako template
(error_map.mako.cpp) have been removed. Instead, error types are now
incorporated directly into the dump types along with an error type map
for validating the error names. This integration aligns the code with
the existing behaviour of the dreport script, allowing for more
consistent processing of dump types

As a result of this integration, the error map generation is now part
of the  dump_types_mako.cpp file. To support these changes, a second
input YAML file has been added to the map_gen.py script to generate
the dump types and error types together.

Tests:
Create InternalFailure
> busctl call xyz.openbmc_project.Logging  /xyz/openbmc_project/logging \
  xyz.openbmc_project.Logging.Create Create ssa{ss}  \
  xyz.openbmc_project.Common.Error.InternalFailure \
  xyz.openbmc_project.Logging.Entry.Level.Error 0
> dump created
  /var/lib/phosphor-debug-collector/dumps/1/\
  BMCDUMP.XXXXXXXX.0000001.20230723084043

Create Checkstop
> busctl call xyz.openbmc_project.Logging  /xyz/openbmc_project/logging \
  xyz.openbmc_project.Logging.Create Create ssa{ss}  \
  org.open_power.Host.Boot.Error.Checkstop \
  xyz.openbmc_project.Logging.Entry.Level.Error 0
> /var/lib/phosphor-debug-collector/dumps/4/\
  BMCDUMP.XXXXXXXX.0000004.20230723094150

Change-Id: Iac483f4993b59cf0fc063ed9584785f1a1fa04a8
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
8 files changed
tree: 1b1ac980c76fc90ce8be1c01918686faa55a4745
  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.cpp
  11. bmc_dump_entry.hpp
  12. core_manager.cpp
  13. core_manager.hpp
  14. core_manager_main.cpp
  15. dump-extensions.hpp
  16. dump_entry.cpp
  17. dump_entry.hpp
  18. dump_internal.hpp
  19. dump_manager.cpp
  20. dump_manager.hpp
  21. dump_manager_bmc.cpp
  22. dump_manager_bmc.hpp
  23. dump_manager_faultlog.cpp
  24. dump_manager_faultlog.hpp
  25. dump_manager_main.cpp
  26. dump_offload.cpp
  27. dump_offload.hpp
  28. dump_serialize.cpp
  29. dump_serialize.hpp
  30. dump_types.mako.cpp
  31. dump_types.mako.hpp
  32. dump_utils.cpp
  33. dump_utils.hpp
  34. elog_watch.cpp
  35. elog_watch.hpp
  36. example_dump_types.yaml
  37. example_errors_watch.yaml
  38. faultlog_dump_entry.cpp
  39. faultlog_dump_entry.hpp
  40. ffdc
  41. host_transport_exts.hpp
  42. LICENSE
  43. map_gen.py
  44. meson.build
  45. meson.options
  46. OWNERS
  47. ramoops_manager.cpp
  48. ramoops_manager.hpp
  49. ramoops_manager_main.cpp
  50. README.md
  51. watch.cpp
  52. 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