summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plugins/prdfMemLogParse.H
blob: d41f48b7397c9ad42d5eba4b31e80de90bc3e7cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/usr/diag/prdf/common/plugins/prdfMemLogParse.H $          */
/*                                                                        */
/* OpenPOWER HostBoot Project                                             */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2013,2018                        */
/* [+] International Business Machines Corp.                              */
/*                                                                        */
/*                                                                        */
/* Licensed under the Apache License, Version 2.0 (the "License");        */
/* you may not use this file except in compliance with the License.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */

/** @file  prdfMemLogParse.H
 *  @brief Error log parsing code specific to the memory subsystem.
 */

#ifndef __prdfMemLogParse_H
#define __prdfMemLogParse_H

#include <stdint.h>
#include <prdfMemoryMruData.H>
#include <attributeenums.H>     // For TARGETING::TYPE enum

class ErrlUsrParser;

namespace PRDF
{
#if defined(PRDF_HOSTBOOT_ERRL_PLUGIN)
namespace HOSTBOOT
{
#elif defined(PRDF_FSP_ERRL_PLUGIN)
namespace FSP
{
#endif

/**
 * @brief Parses MemoryMru data.
 * @note  Since this will be used in several different sections, this function
 *        simply parses the data. It does not print header information (i.e.
 *        "MemoryMru") or print out the uint32_t value of the MemoryMru. It is
 *        up to the caller to add that data.
 * @param i_parser The error log parser.
 * @param i_memMru A MemoryMru.
 */
void parseMemMruData( ErrlUsrParser & i_parser, uint32_t i_memMru );

/**
 * @brief Parses extended MemoryMru data.
 * @note  Since this will be used in several different sections, this function
 *        simply parses the data. It does not print header information (i.e.
 *        "MemoryMru") or print out the uint32_t value of the MemoryMru. It is
 *        up to the caller to add that data.
 * @param i_parser    The error log parser.
 * @param i_extMemMru A MemoryMru with extended data for extra FFDC.
 */
void parseMemMruData( ErrlUsrParser & i_parser,
                      const MemoryMruData::ExtendedData & i_extMemMru );

/**
 * @brief Parses Memory UE table.
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseMemUeTable( uint8_t * i_buffer, uint32_t i_buflen,
                      ErrlUsrParser & i_parser );

/**
 * @brief Parses Memory CE table.
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseMemCeTable( uint8_t * i_buffer, uint32_t i_buflen,
                      ErrlUsrParser & i_parser );

/**
 * @brief Parses IUE threshold counts.
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseIueCounts( uint8_t * i_buffer, uint32_t i_buflen,
                     ErrlUsrParser & i_parser );

/**
 * @brief Parses Memory RCE table.
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseMemRceTable( uint8_t * i_buffer, uint32_t i_buflen,
                      ErrlUsrParser & i_parser );

/**
 * @brief Parses DRAM Repairs data (actual chip/symbol marks and DRAM repairs in
 *        hardware).
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
                           ErrlUsrParser & i_parser );

/**
 * @brief Parses DRAM Repairs VPD (data in bad DQ bitmap attributes).
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 * @param i_type   The target type
 */
bool parseDramRepairsVpd( uint8_t * i_buffer, uint32_t i_buflen,
                          ErrlUsrParser & i_parser, TARGETING::TYPE i_type );

/**
 * @brief Parses Row Repair VPD (data in Row Repair Data attributes).
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 */
bool parseRowRepairVpd( uint8_t * i_buffer, uint32_t i_buflen,
                        ErrlUsrParser & i_parser );

/**
 * @brief Parses Bad DQ Bitmap data (Used in IPL UE isolation).
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 * @param i_type   The target type
 */
bool parseBadDqBitmap( uint8_t * i_buffer, uint32_t i_buflen,
                       ErrlUsrParser & i_parser, TARGETING::TYPE i_type );

/**
 * @brief Parses TD Controller state data.
 * @param i_buffer The data buffer.
 * @param i_buflen The buffer length.
 * @param i_parser The error log parser.
 * @param i_sigId  The signature ID.
 */
bool parseTdCtlrStateData( uint8_t * i_buffer, uint32_t i_buflen,
                           ErrlUsrParser & i_parser, uint32_t i_sigId );

#if defined(PRDF_HOSTBOOT_ERRL_PLUGIN) || defined(PRDF_FSP_ERRL_PLUGIN)
} // end namespace FSP/HOSTBOOT
#endif
} // end namespace PRDF

#endif // __prdfMemLogParse_H

OpenPOWER on IntegriCloud