summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C
blob: 9ab033b8a9bf165c1f03620cd06caad907c434fe (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
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C $             */
/*                                                                        */
/* OpenPOWER HostBoot Project                                             */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2013,2015                        */
/* [+] 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  prdfPlatP8Proc.C
 *  @brief Contains the hostboot specific plugin code for P8 Proc
 */


#include <prdfPluginDef.H>
#include <iipServiceDataCollector.h>
#include <prdfExtensibleChip.H>
#include <prdfPluginMap.H>
#include <prdfCalloutUtil.H>

using namespace TARGETING;

namespace PRDF
{

namespace Proc
{

// TODO: RTC 116213 proc_mpipl_check_eligibility() is completely broken so
//       reverting this bug fix to the original 810 and 820 behavior (per
//       request from Kevin) until proc_mpipl_check_eligibility() is fixed
//       in FW830.
/**
 * @brief Call  HWP and set the right dump type
 * @param  i_chip P8 chip
 * @param  i_sc   The step code data struct
 * @returns Failure or Success
 * @note
 */
int32_t analyzeMpIPL( ExtensibleChip * i_chip,
                      STEP_CODE_DATA_STRUCT & i_sc )
{
    PRDF_ERR( "analyzeMpIPL functionality not supported during hostboot: "
               "PROC = 0x%08x", i_chip->GetId() );

    return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, analyzeMpIPL );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, analyzeMpIPL );

/**
 * @brief Handle SLW Malfunction alert
 * @param i_chip P8 chip
 * @param  i_sc   The step code data struct
 * @returns Failure or Success
 * @note
 */
int32_t slwRecovery( ExtensibleChip * i_chip,
                     STEP_CODE_DATA_STRUCT & i_sc )
{
    PRDF_ERR( "slwRecovery functionality not supported during hostboot: "
               "PROC = 0x%08x", i_chip->GetId() );
    CalloutUtil::defaultError( i_sc );
    return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, slwRecovery );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, slwRecovery );

/**
 * @brief   Callout Peer PSI connected to given Proc target
 * @param   i_chip P8 chip
 * @param   i_sc   The step code data struct
 * @returns Failure or Success
 * @note    A NOP version of plugin required by FSP PRDF
 */
int32_t calloutPeerPsiBusTgt( ExtensibleChip * i_chip,
                              STEP_CODE_DATA_STRUCT & i_sc )
{
    PRDF_ERR( "[Proc::calloutPeerPsiBusTgt]  unexpected call: PSI target not "
              "supported in hostboot PROC = 0x%08x", i_chip->GetId() );

    CalloutUtil::defaultError( i_sc );
    return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, calloutPeerPsiBusTgt );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, calloutPeerPsiBusTgt );

/**
 * @brief Check if we're running in hostboot
 * @param i_chip Proc chip.
 * @param i_sc Step Code data struct
 * @return SUCCESS because this is the Hostboot file
 */
int32_t inHostboot( ExtensibleChip * i_chip,
                    STEP_CODE_DATA_STRUCT & i_sc )
{
    return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, inHostboot );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, inHostboot );

/**
 * @brief Collect NX debug traces
 * @param i_chip Proc chip.
 * @param i_sc Step Code data struct
 * @return SUCCESS
 */
int32_t collectNxTraceArray( ExtensibleChip * i_chip,
                             STEP_CODE_DATA_STRUCT & i_sc )
{
    // This error should not occur during Hostboot
    // but if it is, no trace collection is needed.

    return SUCCESS;

}
PRDF_PLUGIN_DEFINE_NS( NaplesProc, Proc, collectNxTraceArray );
PRDF_PLUGIN_DEFINE_NS( MuranoVeniceProc, Proc, collectNxTraceArray );

}//namespace Proc ends

}//namespace PRDF ends
OpenPOWER on IntegriCloud