66
77#include "mce_amd.h"
88
9- static struct amd_decoder_ops * fam_ops ;
9+ static struct amd_decoder_ops fam_ops ;
1010
1111static u8 xec_mask = 0xf ;
1212
@@ -583,7 +583,7 @@ static void decode_mc0_mce(struct mce *m)
583583 : (xec ? "multimatch" : "parity" )));
584584 return ;
585585 }
586- } else if (fam_ops -> mc0_mce (ec , xec ))
586+ } else if (fam_ops . mc0_mce (ec , xec ))
587587 ;
588588 else
589589 pr_emerg (HW_ERR "Corrupted MC0 MCE info?\n" );
@@ -697,7 +697,7 @@ static void decode_mc1_mce(struct mce *m)
697697 pr_cont ("Hardware Assert.\n" );
698698 else
699699 goto wrong_mc1_mce ;
700- } else if (fam_ops -> mc1_mce (ec , xec ))
700+ } else if (fam_ops . mc1_mce (ec , xec ))
701701 ;
702702 else
703703 goto wrong_mc1_mce ;
@@ -831,7 +831,7 @@ static void decode_mc2_mce(struct mce *m)
831831
832832 pr_emerg (HW_ERR "MC2 Error: " );
833833
834- if (!fam_ops -> mc2_mce (ec , xec ))
834+ if (!fam_ops . mc2_mce (ec , xec ))
835835 pr_cont (HW_ERR "Corrupted MC2 MCE info?\n" );
836836}
837837
@@ -1130,7 +1130,8 @@ amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
11301130 if (m -> tsc )
11311131 pr_emerg (HW_ERR "TSC: %llu\n" , m -> tsc );
11321132
1133- if (!fam_ops )
1133+ /* Doesn't matter which member to test. */
1134+ if (!fam_ops .mc0_mce )
11341135 goto err_code ;
11351136
11361137 switch (m -> bank ) {
@@ -1185,70 +1186,65 @@ static int __init mce_amd_init(void)
11851186 c -> x86_vendor != X86_VENDOR_HYGON )
11861187 return - ENODEV ;
11871188
1188- fam_ops = kzalloc (sizeof (struct amd_decoder_ops ), GFP_KERNEL );
1189- if (!fam_ops )
1190- return - ENOMEM ;
1191-
11921189 if (boot_cpu_has (X86_FEATURE_SMCA )) {
11931190 xec_mask = 0x3f ;
11941191 goto out ;
11951192 }
11961193
11971194 switch (c -> x86 ) {
11981195 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 ;
12021199 break ;
12031200
12041201 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 ;
12081205 break ;
12091206
12101207 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 ;
12141211 break ;
12151212
12161213 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 ;
12201217 break ;
12211218
12221219 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 ;
12261223 break ;
12271224
12281225 case 0x15 :
12291226 xec_mask = c -> x86_model == 0x60 ? 0x3f : 0x1f ;
12301227
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 ;
12341231 break ;
12351232
12361233 case 0x16 :
12371234 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 ;
12411238 break ;
12421239
12431240 case 0x17 :
12441241 case 0x18 :
12451242 pr_warn ("Decoding supported only on Scalable MCA processors.\n" );
1246- goto err_out ;
1247- break ;
1243+ return - EINVAL ;
12481244
12491245 default :
12501246 printk (KERN_WARNING "Huh? What family is it: 0x%x?!\n" , c -> x86 );
1251- goto err_out ;
1247+ return - EINVAL ;
12521248 }
12531249
12541250out :
@@ -1257,19 +1253,13 @@ static int __init mce_amd_init(void)
12571253 mce_register_decode_chain (& amd_mce_dec_nb );
12581254
12591255 return 0 ;
1260-
1261- err_out :
1262- kfree (fam_ops );
1263- fam_ops = NULL ;
1264- return - EINVAL ;
12651256}
12661257early_initcall (mce_amd_init );
12671258
12681259#ifdef MODULE
12691260static void __exit mce_amd_exit (void )
12701261{
12711262 mce_unregister_decode_chain (& amd_mce_dec_nb );
1272- kfree (fam_ops );
12731263}
12741264
12751265MODULE_DESCRIPTION ("AMD MCE decoder" );
0 commit comments