> 
> +   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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to