Re: [edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread Kinney, Michael D
Jiewen, Doing 2 CPUID instructions in every SMI looks expensive. We have global mXdSupported. Can we change that to gXdSupported and detect support in driver entry and use this BOOLEAN flag in assembly code to determine if the MSR_EFER need to be updated? Also, please use MSR_EFER and

Re: [edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread Kinney, Michael D
Jiewen, Yes. That is a good solution to declare global in assembly for this case. Mike > -Original Message- > From: Yao, Jiewen > Sent: Wednesday, November 25, 2015 2:17 PM > To: Kinney, Michael D ; edk2-de...@ml01.01.org > Cc: Fan, Jeff

Re: [edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread Yao, Jiewen
Got it. I will create a new patch to handle that. -Original Message- From: Kinney, Michael D Sent: Thursday, November 26, 2015 8:00 AM To: Yao, Jiewen; edk2-de...@ml01.01.org; Kinney, Michael D Cc: Fan, Jeff Subject: RE: [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging

Re: [edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread Yao, Jiewen
HI Mike Current gXdSupported is defined in C code. I am not able to refer it directly in protected mode asm directly. One possible way is to define AsmXdSupported variable in protected mode ASM, then we can let C code back fill the data value. Like what we did for gSmiStack and gSmiCr3. Do you

[edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread jiewen yao
There might be page table set SMM data region be XD. So we have to enable XD before enable paging. Or #PF might be generated. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" Cc: "Fan, Jeff" Cc: "Kinney, Michael D"

[edk2] [patch] UefiCpuPkg/PiSmmCpu: Move XD enable to ASM before paging enable.

2015-11-25 Thread jiewen yao
There might be page table set SMM data region be XD. So we have to enable XD before enable paging. Or #PF might be generated. mXdSupported is moved from C to ASM, because protected mode code can not refer global variable in long mode ASM. MSR_EFER/MSR_EFER_XD macro is moved from H to ASM as