Improve Nvidia CPER decode
Add decoding of registers to the structure. Note, this requires
COUNTED_BY support which is borrowed from LIBPLDM.
Also add unit-tests for NVIDIA section, and update schema to match
existing register decoding.
Change-Id: If1c9cae97de35ba6a5dad1f462d3989ec6ac6a90
Signed-off-by: Karthik Rajagopalan <krajagopalan@nvidia.com>
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/generator/sections/gen-section-nvidia.c b/generator/sections/gen-section-nvidia.c
index d5103a6..0cb4cb4 100644
--- a/generator/sections/gen-section-nvidia.c
+++ b/generator/sections/gen-section-nvidia.c
@@ -4,6 +4,7 @@
**/
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include "../../edk/BaseTypes.h"
@@ -26,13 +27,21 @@
init_random();
//Create random bytes.
- size_t size = sizeof(EFI_NVIDIA_ERROR_DATA);
+ int numRegs = 6;
+ size_t size = offsetof(EFI_NVIDIA_ERROR_DATA, Register) +
+ numRegs * sizeof(EFI_NVIDIA_REGISTER_DATA);
UINT8 *section = generate_random_bytes(size);
//Reserved byte.
EFI_NVIDIA_ERROR_DATA *nvidia_error = (EFI_NVIDIA_ERROR_DATA *)section;
nvidia_error->Reserved = 0;
+ //Number of Registers.
+ nvidia_error->NumberRegs = numRegs;
+
+ //Severity (0 to 3 as defined in UEFI spec).
+ nvidia_error->Severity %= 4;
+
//Signature.
int idx_random = rand() % (sizeof(signatures) / sizeof(signatures[0]));
strncpy(nvidia_error->Signature, signatures[idx_random],