phosphor-dump-manager: filter duplicate fault logs

- Filter incoming fault logs based on log ID and timestamp.
- Skip creating dump entries if a duplicate log is detected.
- Replace existing dump entry if the incoming log has higher priority.
- Fault log entry indexes start from 0.
- Refresh 0004 patch

Tested:
```
EINJ triggers a fatal error after 10 DRAM CECC injections.
localhost:/opt/AMD/amdraserrorinjectiontest# ./cmdline_amdraserrorinjectiontest --dramecc --address 0x0010000b --enablemcapolling 0 --errortype 0
...
localhost:/opt/AMD/amdraserrorinjectiontest# ./cmdline_amdraserrorinjectiontest --dferror --errortype 1 --die 0

root@zoro:~# journalctl -b -u com.amd.RAS@1.service
...
Jul 01 22:35:33 zoro amd-ras-manager[1837]: The alert signaled is due to a RAS fatal error
...
Jul 01 22:35:33 zoro amd-ras-manager[1837]: Saving CPER file to /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error0.cper
Jul 01 22:35:33 zoro amd-ras-manager[1837]: Generated runtime CPER file : /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error0.cper
Jul 01 22:35:33 zoro amd-ras-manager[1837]: [HPM0,CPU,ERROR,ASSERT] DRAM CECC runtime error counter overflow occurred
Jul 01 22:35:33 zoro amd-ras-manager[1837]: DRAM CECC runtime error counter overflow occurred
...
Jul 01 22:35:50 zoro amd-ras-manager[1837]: Saving CPER file to /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error1.cper
Jul 01 22:35:50 zoro amd-ras-manager[1837]: Generated runtime CPER file : /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error1.cper
Jul 01 22:35:50 zoro amd-ras-manager[1837]: [HPM0,CPU,ERROR,ASSERT] DRAM CECC runtime error counter overflow occurred
Jul 01 22:35:50 zoro amd-ras-manager[1837]: DRAM CECC runtime error counter overflow occurred
...
Jul 01 22:37:14 zoro amd-ras-manager[1837]: Saving CPER file to /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error8.cper
Jul 01 22:37:14 zoro amd-ras-manager[1837]: Generated runtime CPER file : /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error8.cper
Jul 01 22:37:14 zoro amd-ras-manager[1837]: [HPM0,CPU,ERROR,ASSERT] DRAM CECC runtime error counter overflow occurred
Jul 01 22:37:14 zoro amd-ras-manager[1837]: DRAM CECC runtime error counter overflow occurred
...
Jul 01 22:37:24 zoro amd-ras-manager[1837]: Saving CPER file to /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error9.cper
Jul 01 22:37:24 zoro amd-ras-manager[1837]: Generated runtime CPER file : /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error9.cper
Jul 01 22:37:24 zoro amd-ras-manager[1837]: [HPM0,CPU,ERROR,ASSERT] DRAM CECC runtime error counter overflow occurred
Jul 01 22:37:24 zoro amd-ras-manager[1837]: DRAM CECC runtime error counter overflow occurred
...
Jul 01 22:38:19 zoro amd-ras-manager[1837]: The alert signaled is due to a RAS fatal error
Jul 01 22:38:19 zoro amd-ras-manager[1837]: RAS FATAL Error detected. System may reset after harvesting MCA data based on policy set.
...
Jul 01 22:38:20 zoro amd-ras-manager[1837]: Removing CPER: /var/lib/amd-bmc-ras/node1-dram-runtime-ras-error9.cper
Jul 01 22:38:20 zoro amd-ras-manager[1837]: Saving CPER file to /var/lib/amd-bmc-ras/node1-ras-error9.cper
Jul 01 22:38:20 zoro amd-ras-manager[1837]: Generated Fatal CPER file : /var/lib/amd-bmc-ras/node1-ras-error9.cper
...

root@zoro:~# busctl tree xyz.openbmc_project.Dump.Manager
`- /xyz
  `- /xyz/openbmc_project
    `- /xyz/openbmc_project/dump
      |- /xyz/openbmc_project/dump/bmc
      `- /xyz/openbmc_project/dump/faultlog
        |- /xyz/openbmc_project/dump/faultlog/0
        | `- /xyz/openbmc_project/dump/faultlog/0/entry
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/0
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/1
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/2
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/3
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/4
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/5
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/6
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/7
        |   |- /xyz/openbmc_project/dump/faultlog/0/entry/8
        |   `- /xyz/openbmc_project/dump/faultlog/0/entry/9
        `- /xyz/openbmc_project/dump/faultlog/1

root@zoro:~# journalctl -b -u xyz.openbmc_project.Dump.Manager.service
Jul 01 22:13:44 zoro systemd[1]: Starting Phosphor Dump Manager...
...
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: 5:185m5:185m[createDumpFromCrashdumpSignal]: hostId mismatch, dbus signal: 0, hostId: 1
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: In dump_manager_faultlog.cpp createDump
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: OriginatorId is not provided
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: OriginatorType is not provided. Replacing the string with the default value
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: next entry id: 0, entries.size(): 0
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: dump_manager_faultlog.cpp: add faultlog entry
Jul 01 22:35:33 zoro phosphor-dump-manager[1163]: End of dump_manager_faultlog.cpp createDump
...
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: 5:185m5:185m[createDumpFromCrashdumpSignal]: hostId mismatch, dbus signal: 0, hostId: 1
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: In dump_manager_faultlog.cpp createDump
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: OriginatorId is not provided
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: OriginatorType is not provided. Replacing the string with the default value
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: next entry id: 8, entries.size(): 8
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: dump_manager_faultlog.cpp: add faultlog entry
Jul 01 22:37:14 zoro phosphor-dump-manager[1163]: End of dump_manager_faultlog.cpp createDump
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: 5:185m5:185m[createDumpFromCrashdumpSignal]: hostId mismatch, dbus signal: 0, hostId: 1
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: In dump_manager_faultlog.cpp createDump
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: OriginatorId is not provided
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: OriginatorType is not provided. Replacing the string with the default value
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: next entry id: 9, entries.size(): 9
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: dump_manager_faultlog.cpp: add faultlog entry
Jul 01 22:37:24 zoro phosphor-dump-manager[1163]: End of dump_manager_faultlog.cpp createDump
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: 5:185m5:185m[createDumpFromCrashdumpSignal]: hostId mismatch, dbus signal: 0, hostId: 1
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: Got new crashdump notification!
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: In dump_manager_faultlog.cpp createDump
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: OriginatorId is not provided
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: OriginatorType is not provided. Replacing the string with the default value
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: next entry id: 9, entries.size(): 9
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: dump_manager_faultlog.cpp: add faultlog entry
Jul 01 22:38:20 zoro phosphor-dump-manager[1163]: End of dump_manager_faultlog.cpp createDump

root@zoro:~# busctl introspect xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/faultlog/0/entry/9
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.Common.OriginatedBy interface -         -                                        -
.OriginatorId                           property  s         ""                                       emits-change writable
.OriginatorType                         property  s         "xyz.openbmc_project.Common.Originate... emits-change writable
xyz.openbmc_project.Common.Progress     interface -         -                                        -
.CompletedTime                          property  t         1782970699                               emits-change writable
.StartTime                              property  t         1782970699                               emits-change writable
.Status                                 property  s         "xyz.openbmc_project.Common.Progress.... emits-change writable
xyz.openbmc_project.Dump.Entry          interface -         -                                        -
.GetFileHandle                          method    -         h                                        -
.InitiateOffload                        method    s         -                                        -
.OffloadUri                             property  s         ""                                       emits-change writable
.Offloaded                              property  b         false                                    emits-change writable
.Size                                   property  t         55                                       emits-change writable
xyz.openbmc_project.Dump.Entry.FaultLog interface -         -                                        -
.AdditionalTypeName                     property  s         ""                                       const
.PrimaryLogId                           property  s         "node1-ras-error9.cper"                  const
.Type                                   property  s         "xyz.openbmc_project.Common.FaultLogT... const
xyz.openbmc_project.Object.Delete       interface -         -                                        -
.Delete                                 method    -         -                                        -
xyz.openbmc_project.Time.EpochTime      interface -         -                                        -
.Elapsed                                property  t         1782970699                               emits-change writable

root@zoro:~# busctl get-property xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/faultlog/0/entry/9 xyz.openbmc_project.Dump.Entry.FaultLog Type
s "xyz.openbmc_project.Common.FaultLogType.FaultLogTypes.Crashdump"

```

Fusion-Link:
platform5: https://fusion2.corp.google.com/47eab8ce-1121-37a6-9495-6aa965e76aba
platform15: https://fusion2.corp.google.com/cda5ef0f-d4f6-3ffc-8e22-8d60a70e0ef9
platform18: https://fusion2.corp.google.com/5803ed5a-eaa3-30d8-87e7-042d92f1f555
platform17: https://fusion2.corp.google.com/ce200d62-7295-3a50-a92d-70cdfdfbf163
platform11+ext: https://fusion2.corp.google.com/960816e1-2476-39f0-b0ba-50a1b25b1a50
platform11: https://fusion2.corp.google.com/07d2cc8a-1738-35d3-bf9d-6b52f0325873
Platforms-Affected: all platforms
Google-Bug-Id: 481913446
Google-Bug-Id: 511865753
Change-Id: I4d97ac9b333dfd022541a446c58b27a8ba2f2fe3
Signed-off-by: Eugene Huang <eugene.ty.huang@fii-na.corp-partner.google.com>
Signed-off-by: cmchang <cmchang@google.com>
(cherry picked from commit 2089b9e218c57c3b0740b29dc2143066cbb46ed8)
3 files changed
tree: 2a9958f24862c1200b7d0f928334c73538a7282b
  1. classes/
  2. conf/
  3. dynamic-layers/
  4. recipes-bsp/
  5. recipes-connectivity/
  6. recipes-core/
  7. recipes-devtools/
  8. recipes-extended/
  9. recipes-google/
  10. recipes-kernel/
  11. recipes-phosphor/
  12. recipes-support/
  13. recipes-tpm1/
  14. recipes-tpm2/
  15. LICENSE
  16. README.md
README.md

meta-gbmc-staging

This repository contains additions to the openbmc/meta-google layer that are not yet ready for OpenBMC inclusion.

How to use this layer

  1. Clone openbmc/openbmc from GitHub.
  2. Clone this layer from GitHub into a subdirectory of openbmc.