@@ -593,34 +593,6 @@ void __init load_ucode_amd_bsp(struct early_load_data *ed, unsigned int cpuid_1_
593
593
native_rdmsr (MSR_AMD64_PATCH_LEVEL , ed -> new_rev , dummy );
594
594
}
595
595
596
- static enum ucode_state _load_microcode_amd (u8 family , const u8 * data , size_t size );
597
-
598
- static int __init save_microcode_in_initrd (void )
599
- {
600
- unsigned int cpuid_1_eax = native_cpuid_eax (1 );
601
- struct cpuinfo_x86 * c = & boot_cpu_data ;
602
- struct cont_desc desc = { 0 };
603
- enum ucode_state ret ;
604
- struct cpio_data cp ;
605
-
606
- if (dis_ucode_ldr || c -> x86_vendor != X86_VENDOR_AMD || c -> x86 < 0x10 )
607
- return 0 ;
608
-
609
- if (!find_blobs_in_containers (& cp ))
610
- return - EINVAL ;
611
-
612
- scan_containers (cp .data , cp .size , & desc );
613
- if (!desc .mc )
614
- return - EINVAL ;
615
-
616
- ret = _load_microcode_amd (x86_family (cpuid_1_eax ), desc .data , desc .size );
617
- if (ret > UCODE_UPDATED )
618
- return - EINVAL ;
619
-
620
- return 0 ;
621
- }
622
- early_initcall (save_microcode_in_initrd );
623
-
624
596
static inline bool patch_cpus_equivalent (struct ucode_patch * p ,
625
597
struct ucode_patch * n ,
626
598
bool ignore_stepping )
@@ -1004,6 +976,32 @@ static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t siz
1004
976
return ret ;
1005
977
}
1006
978
979
+ static int __init save_microcode_in_initrd (void )
980
+ {
981
+ unsigned int cpuid_1_eax = native_cpuid_eax (1 );
982
+ struct cpuinfo_x86 * c = & boot_cpu_data ;
983
+ struct cont_desc desc = { 0 };
984
+ enum ucode_state ret ;
985
+ struct cpio_data cp ;
986
+
987
+ if (dis_ucode_ldr || c -> x86_vendor != X86_VENDOR_AMD || c -> x86 < 0x10 )
988
+ return 0 ;
989
+
990
+ if (!find_blobs_in_containers (& cp ))
991
+ return - EINVAL ;
992
+
993
+ scan_containers (cp .data , cp .size , & desc );
994
+ if (!desc .mc )
995
+ return - EINVAL ;
996
+
997
+ ret = _load_microcode_amd (x86_family (cpuid_1_eax ), desc .data , desc .size );
998
+ if (ret > UCODE_UPDATED )
999
+ return - EINVAL ;
1000
+
1001
+ return 0 ;
1002
+ }
1003
+ early_initcall (save_microcode_in_initrd );
1004
+
1007
1005
/*
1008
1006
* AMD microcode firmware naming convention, up to family 15h they are in
1009
1007
* the legacy file:
0 commit comments