6
6
7
7
#include "mce_amd.h"
8
8
9
- static struct amd_decoder_ops * fam_ops ;
9
+ static struct amd_decoder_ops fam_ops ;
10
10
11
11
static u8 xec_mask = 0xf ;
12
12
@@ -583,7 +583,7 @@ static void decode_mc0_mce(struct mce *m)
583
583
: (xec ? "multimatch" : "parity" )));
584
584
return ;
585
585
}
586
- } else if (fam_ops -> mc0_mce (ec , xec ))
586
+ } else if (fam_ops . mc0_mce (ec , xec ))
587
587
;
588
588
else
589
589
pr_emerg (HW_ERR "Corrupted MC0 MCE info?\n" );
@@ -697,7 +697,7 @@ static void decode_mc1_mce(struct mce *m)
697
697
pr_cont ("Hardware Assert.\n" );
698
698
else
699
699
goto wrong_mc1_mce ;
700
- } else if (fam_ops -> mc1_mce (ec , xec ))
700
+ } else if (fam_ops . mc1_mce (ec , xec ))
701
701
;
702
702
else
703
703
goto wrong_mc1_mce ;
@@ -831,7 +831,7 @@ static void decode_mc2_mce(struct mce *m)
831
831
832
832
pr_emerg (HW_ERR "MC2 Error: " );
833
833
834
- if (!fam_ops -> mc2_mce (ec , xec ))
834
+ if (!fam_ops . mc2_mce (ec , xec ))
835
835
pr_cont (HW_ERR "Corrupted MC2 MCE info?\n" );
836
836
}
837
837
@@ -1130,7 +1130,8 @@ amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
1130
1130
if (m -> tsc )
1131
1131
pr_emerg (HW_ERR "TSC: %llu\n" , m -> tsc );
1132
1132
1133
- if (!fam_ops )
1133
+ /* Doesn't matter which member to test. */
1134
+ if (!fam_ops .mc0_mce )
1134
1135
goto err_code ;
1135
1136
1136
1137
switch (m -> bank ) {
@@ -1185,70 +1186,65 @@ static int __init mce_amd_init(void)
1185
1186
c -> x86_vendor != X86_VENDOR_HYGON )
1186
1187
return - ENODEV ;
1187
1188
1188
- fam_ops = kzalloc (sizeof (struct amd_decoder_ops ), GFP_KERNEL );
1189
- if (!fam_ops )
1190
- return - ENOMEM ;
1191
-
1192
1189
if (boot_cpu_has (X86_FEATURE_SMCA )) {
1193
1190
xec_mask = 0x3f ;
1194
1191
goto out ;
1195
1192
}
1196
1193
1197
1194
switch (c -> x86 ) {
1198
1195
case 0xf :
1199
- fam_ops -> mc0_mce = k8_mc0_mce ;
1200
- fam_ops -> mc1_mce = k8_mc1_mce ;
1201
- fam_ops -> mc2_mce = k8_mc2_mce ;
1196
+ fam_ops . mc0_mce = k8_mc0_mce ;
1197
+ fam_ops . mc1_mce = k8_mc1_mce ;
1198
+ fam_ops . mc2_mce = k8_mc2_mce ;
1202
1199
break ;
1203
1200
1204
1201
case 0x10 :
1205
- fam_ops -> mc0_mce = f10h_mc0_mce ;
1206
- fam_ops -> mc1_mce = k8_mc1_mce ;
1207
- fam_ops -> mc2_mce = k8_mc2_mce ;
1202
+ fam_ops . mc0_mce = f10h_mc0_mce ;
1203
+ fam_ops . mc1_mce = k8_mc1_mce ;
1204
+ fam_ops . mc2_mce = k8_mc2_mce ;
1208
1205
break ;
1209
1206
1210
1207
case 0x11 :
1211
- fam_ops -> mc0_mce = k8_mc0_mce ;
1212
- fam_ops -> mc1_mce = k8_mc1_mce ;
1213
- fam_ops -> mc2_mce = k8_mc2_mce ;
1208
+ fam_ops . mc0_mce = k8_mc0_mce ;
1209
+ fam_ops . mc1_mce = k8_mc1_mce ;
1210
+ fam_ops . mc2_mce = k8_mc2_mce ;
1214
1211
break ;
1215
1212
1216
1213
case 0x12 :
1217
- fam_ops -> mc0_mce = f12h_mc0_mce ;
1218
- fam_ops -> mc1_mce = k8_mc1_mce ;
1219
- fam_ops -> mc2_mce = k8_mc2_mce ;
1214
+ fam_ops . mc0_mce = f12h_mc0_mce ;
1215
+ fam_ops . mc1_mce = k8_mc1_mce ;
1216
+ fam_ops . mc2_mce = k8_mc2_mce ;
1220
1217
break ;
1221
1218
1222
1219
case 0x14 :
1223
- fam_ops -> mc0_mce = cat_mc0_mce ;
1224
- fam_ops -> mc1_mce = cat_mc1_mce ;
1225
- fam_ops -> mc2_mce = k8_mc2_mce ;
1220
+ fam_ops . mc0_mce = cat_mc0_mce ;
1221
+ fam_ops . mc1_mce = cat_mc1_mce ;
1222
+ fam_ops . mc2_mce = k8_mc2_mce ;
1226
1223
break ;
1227
1224
1228
1225
case 0x15 :
1229
1226
xec_mask = c -> x86_model == 0x60 ? 0x3f : 0x1f ;
1230
1227
1231
- fam_ops -> mc0_mce = f15h_mc0_mce ;
1232
- fam_ops -> mc1_mce = f15h_mc1_mce ;
1233
- fam_ops -> mc2_mce = f15h_mc2_mce ;
1228
+ fam_ops . mc0_mce = f15h_mc0_mce ;
1229
+ fam_ops . mc1_mce = f15h_mc1_mce ;
1230
+ fam_ops . mc2_mce = f15h_mc2_mce ;
1234
1231
break ;
1235
1232
1236
1233
case 0x16 :
1237
1234
xec_mask = 0x1f ;
1238
- fam_ops -> mc0_mce = cat_mc0_mce ;
1239
- fam_ops -> mc1_mce = cat_mc1_mce ;
1240
- fam_ops -> mc2_mce = f16h_mc2_mce ;
1235
+ fam_ops . mc0_mce = cat_mc0_mce ;
1236
+ fam_ops . mc1_mce = cat_mc1_mce ;
1237
+ fam_ops . mc2_mce = f16h_mc2_mce ;
1241
1238
break ;
1242
1239
1243
1240
case 0x17 :
1244
1241
case 0x18 :
1245
1242
pr_warn ("Decoding supported only on Scalable MCA processors.\n" );
1246
- goto err_out ;
1247
- break ;
1243
+ return - EINVAL ;
1248
1244
1249
1245
default :
1250
1246
printk (KERN_WARNING "Huh? What family is it: 0x%x?!\n" , c -> x86 );
1251
- goto err_out ;
1247
+ return - EINVAL ;
1252
1248
}
1253
1249
1254
1250
out :
@@ -1257,19 +1253,13 @@ static int __init mce_amd_init(void)
1257
1253
mce_register_decode_chain (& amd_mce_dec_nb );
1258
1254
1259
1255
return 0 ;
1260
-
1261
- err_out :
1262
- kfree (fam_ops );
1263
- fam_ops = NULL ;
1264
- return - EINVAL ;
1265
1256
}
1266
1257
early_initcall (mce_amd_init );
1267
1258
1268
1259
#ifdef MODULE
1269
1260
static void __exit mce_amd_exit (void )
1270
1261
{
1271
1262
mce_unregister_decode_chain (& amd_mce_dec_nb );
1272
- kfree (fam_ops );
1273
1263
}
1274
1264
1275
1265
MODULE_DESCRIPTION ("AMD MCE decoder" );
0 commit comments