[SOC_RESET_ME] Add the event handler - part1

Implement SOC_RESET_ME event handler baseline function:
cold reset the host, will ingore the reset quest in case the request
received within reset quiescent period setup by previous reset request.
log request and process result in journal.

tested using bios with tested ebf, with following journal
```
#CN 1
root@mvt18-nfd11:~# journalctl -u *pldmd*0* -o json | jq -r '. | select(.SOC_RESET_ME != null and .SOC_RESET_ME == "request") | with_entries(select(.key | startswith("SOC_RESET_ME"))) '{
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_SOCID": "1",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708"
}
{
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_SOCID": "1",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4"
}
{
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_SOCID": "1",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708"
}
{
  "SOC_RESET_ME_SOCID": "1",
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4"
}
{
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_SOCID": "1",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_RESET_REASON": "TEST"
}

# CN2
root@mvt18-nfd11:~# journalctl -u *pldmd*1* -o json | jq -r '. | select(.SOC_RESET_ME != null and .SOC_RESET_ME == "request") | with_entries(select(.key | startswith("SOC_RESET_ME"))) '{
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_SOCID": "2",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4"
}
{
  "SOC_RESET_ME_SOCID": "2",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4",
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_RESET_REASON": "TEST"
}
{
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_SOCID": "2",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4"
}
{
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_SOCID": "2",
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4"
}
{
  "SOC_RESET_ME_INTERNAL_INFO": "0x0102030405060708",
  "SOC_RESET_ME_RESET_REASON": "TEST",
  "SOC_RESET_ME_RESET_TYPE": "0",
  "SOC_RESET_ME": "request",
  "SOC_RESET_ME_QUIESCENT_PERIOD": "4",
  "SOC_RESET_ME_SOCID": "2"
}
root@mvt18-nfd11:~#
```
Google-Bug-Id: 303898284
Change-Id: I345ae18e6dff6c89c587903d5f306e1321885442
Signed-off-by: Dan Zhang <zhdaniel@google.com>
7 files changed
tree: c7aa04cb217f56d3c66679a0f3fb83c0398ea154
  1. src/
  2. subprojects/
  3. test/
  4. .clang-format
  5. .gitignore
  6. LICENSE
  7. meson.build
  8. meson_options.txt
  9. pldm-oem-google.h
  10. README.md
README.md

PLDM Google OEM specifications

This repo contains:

  1. the pldm-oem-google.h, which is the source of truth definitions of PLDM google oem elements.

  2. pldmd-oem-google static library, as extension of libpldm, contains the helper function to parser the PLDM google oem elements.

Google PLDM OEM events

Google defined PLDM OEM events will be sent as PLDM OEM event with event_class=0xF6, followed by 3 bytes of google IANA [00 D4 DE].

The specific google OEM event ID and associated oem event data format shall be defined in pldm-oem-google.h.