> > + mov eax, 1 > > + cpuid > > + mov ecx, MSR_IA32_BIOS_SIGN_ID > > + rdmsr ; Get current microcode signature > > + xor eax, eax > > + test edx, edx > > + jnz Exit2 > 1. SDM uses following assembly to read current microcode signature.
Example 10-9. Assembly Code to Retrieve the Update Revision MOV ECX, 08BH ;IA32_BIOS_SIGN_ID XOR EAX, EAX ;clear EAX XOR EDX, EDX ;clear EDX WRMSR ;Load 0 to MSR at 8BH MOV EAX, 1 Cupid MOV ECX, 08BH ;IA32_BIOS_SIGN_ID rdmsr ;Read Model Specific Register Comparing against yours, I think there are two diffs: 1). you missed the write-zero to msr 8b 2). you cleared RAX (I don't know why) And the existing code "LoadCheck:" actually contains exactly the SDM recommended logic to get current microcode revision. Why not use that directly? > - je Continue > > + je Done ; if already one version microcode loaded, go to done 2. You changed another behavior: from load all microcodes to load one only. Can you separate it in a standalone patch and explain in commit? I guess since the 1st check you added will skip loading when cpu microcode revision is not 0, so the change here is to align with that behavior. -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102147): https://edk2.groups.io/g/devel/message/102147 Mute This Topic: https://groups.io/mt/97931383/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-