#include <Guid/StatusCodeDataTypeId.h>\r
#include <Guid/StatusCodeDataTypeDebug.h>\r
\r
+//\r
+// Define the maximum extended data size that is supported when a status code is\r
+// reported at TPL_HIGH_LEVEL.\r
+//\r
+#define MAX_EXTENDED_DATA_SIZE 0x200\r
+\r
EFI_STATUS_CODE_PROTOCOL *mReportStatusCodeLibStatusCodeProtocol = NULL;\r
\r
/**\r
EFI_STATUS Status;\r
EFI_STATUS_CODE_DATA *StatusCodeData;\r
EFI_TPL Tpl;\r
- UINT64 Buffer[EFI_STATUS_CODE_DATA_MAX_SIZE / sizeof (UINT64)];\r
+ UINT64 Buffer[(MAX_EXTENDED_DATA_SIZE / sizeof (UINT64)) + 1];\r
\r
ASSERT (!((ExtendedData == NULL) && (ExtendedDataSize != 0)));\r
ASSERT (!((ExtendedData != NULL) && (ExtendedDataSize == 0)));\r
//\r
// If a buffer could not be allocated, then see if the local variable Buffer can be used\r
//\r
- if (ExtendedDataSize > (EFI_STATUS_CODE_DATA_MAX_SIZE - sizeof (EFI_STATUS_CODE_DATA))) {\r
+ if (ExtendedDataSize > (MAX_EXTENDED_DATA_SIZE - sizeof (EFI_STATUS_CODE_DATA))) {\r
//\r
// The local variable Buffer not large enough to hold the extended data associated\r
// with the status code being reported.\r
//\r
- ASSERT (FALSE);\r
+ DEBUG ((EFI_D_ERROR, "Status code extended data is too large to be reported!\n"));\r
return EFI_OUT_OF_RESOURCES;\r
}\r
StatusCodeData = (EFI_STATUS_CODE_DATA *)Buffer;\r