@@ -593,34 +593,6 @@ void __init load_ucode_amd_bsp(struct early_load_data *ed, unsigned int cpuid_1_
593593 native_rdmsr (MSR_AMD64_PATCH_LEVEL , ed -> new_rev , dummy );
594594}
595595
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-
624596static inline bool patch_cpus_equivalent (struct ucode_patch * p ,
625597 struct ucode_patch * n ,
626598 bool ignore_stepping )
@@ -1004,6 +976,32 @@ static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t siz
1004976 return ret ;
1005977}
1006978
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+
10071005/*
10081006 * AMD microcode firmware naming convention, up to family 15h they are in
10091007 * the legacy file:
0 commit comments