summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule
blob: da827cec82add93f9fd4fb56d8312127219a3628 (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
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
# $Source: src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule $
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 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

/** Callout the connected MBA 0 */
actionclass calloutMba0 { callout(connected(TYPE_MBA, 0), MRU_MED); };

/** Callout the connected MBA 1 */
actionclass calloutMba1 { callout(connected(TYPE_MBA, 1), MRU_MED); };

/** Callout the connected MBA 0, threshold 1 */
actionclass mba0_th_1 { calloutMba0; threshold1; };

/** Callout the connected MBA 1, threshold 1 */
actionclass mba1_th_1 { calloutMba1; threshold1; };

/** Callout the connected MBA 0, threshold 1, SUE source */
actionclass mba0_th_1_UERE { mba0_th_1; SueSource; };

/** Callout the connected MBA 1, threshold 1, SUE source */
actionclass mba1_th_1_UERE { mba1_th_1; SueSource; };

/** Threshold and mask policy (MBA 0) */
actionclass threshold_and_mask_mba0 { calloutMba0; threshold_and_mask; };

/** Threshold and mask policy (MBA 1) */
actionclass threshold_and_mask_mba1 { calloutMba1; threshold_and_mask; };

/** Callout the connected L4 */
actionclass calloutL4 { callout(connected(TYPE_L4), MRU_MED); };

/** Callout the connected L4, threshold 1 */
actionclass l4_th_1 { calloutL4; threshold1; };

/** Callout the connected L4, threshold 32/day */
actionclass l4_th_32perDay { calloutL4; threshold32pday; };

/** Callout the connected L4, threshold 1, SUE source */
actionclass l4_th_1_UERE { l4_th_1; SueSource; };

/** PLL error */
actionclass pll_unlock_UERE
{
    # These FIR bits should never trigger directly themselves in the rule code.
    # Instead, They should be handled by global PRD PLL isolation code. We will
    # add a threshold here to prevent flooding, just in case.
    threshold32pday;
};

/** Callout the DMI BUS interface */
actionclass calloutBusInterface_dmibus
{
# TODO: RTC 144057
#    funccall("calloutBusInterfacePlugin");
};

/** Callout the DMI BUS interface, threshold 1 */
actionclass calloutBusInterface_dmibus_th1
{
    calloutBusInterface_dmibus;
    threshold1;
};

/** Callout the DMI BUS interface, threshold 1 */
actionclass calloutBusInterface_dmibus_th1_UERE
{
    calloutBusInterface_dmibus;
    threshold1;
    SueSource;
};

/** Lane Repair: spare deployed */
actionclass spareDeployed_dmibus
{
    calloutBusInterface_dmibus;
# TODO: RTC 144057
#    funccall("spareDeployed");
};

/** Lane Repair: max spares exceeded */
actionclass maxSparesExceeded_dmibus_UERE
{
    calloutBusInterface_dmibus_th1;
# TODO: RTC 144057
#    funccall("maxSparesExceeded");
    SueSource; # channel failure
};

/** Lane Repair: too many bus errors */
actionclass tooManyBusErrors_dmibus
{
    calloutBusInterface_dmibus_th1;
# TODO: RTC 144057
#    funccall("tooManyBusErrors");
};

/** L4 cache SRW CE */
actionclass l4_cache_srw_ce
{
    calloutL4;
    threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES));
    funccall("CaptureL4CacheErr");
    funccall("ClearServiceCallFlag");
    funccall("ClearMbsSecondaryBits");
};

/** L4 cache SRW UE */
actionclass l4_cache_srw_ue_UERE
{
    calloutL4;
    threshold1;
    funccall("CaptureL4CacheErr");
    funccall("MaskMbsSecondaryBits");
    SueSource;
};

/** L4 cache CO UE */
actionclass l4_cache_co_ce
{
    calloutL4;
    threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES));
    funccall("CaptureL4CacheErr");
    funccall("ClearServiceCallFlag");
    funccall("ClearMbaCalSecondaryBits");
};

/** L4 cache CO UE */
actionclass l4_cache_co_ue_UERE
{
    calloutL4;
    threshold1;
    funccall("CaptureL4CacheErr");
    funccall("MaskMbaCalSecondaryBits");
    SueSource;
};

OpenPOWER on IntegriCloud