On Mon, Oct 19, 2020 at 05:11:17PM +0200, Joerg Roedel wrote: > From: Joerg Roedel <[email protected]> > > Introduce sev_status and initialize it together with sme_me_mask to have > an indicator which SEV features are enabled. > > Signed-off-by: Joerg Roedel <[email protected]> > --- > arch/x86/boot/compressed/mem_encrypt.S | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/boot/compressed/mem_encrypt.S > b/arch/x86/boot/compressed/mem_encrypt.S > index dd07e7b41b11..0effd58f0095 100644 > --- a/arch/x86/boot/compressed/mem_encrypt.S > +++ b/arch/x86/boot/compressed/mem_encrypt.S > @@ -71,6 +71,8 @@ SYM_FUNC_END(get_sev_encryption_bit) > SYM_FUNC_START(set_sev_encryption_mask) > #ifdef CONFIG_AMD_MEM_ENCRYPT > push %rbp > + push %rax > + push %rcx
There's no need to save/restore RAX and RCX, they are callee save. This function is only called from C, so I doubt it's using a custom ABI. > push %rdx > > movq %rsp, %rbp /* Save current stack pointer */ > @@ -81,10 +83,19 @@ SYM_FUNC_START(set_sev_encryption_mask) > > bts %rax, sme_me_mask(%rip) /* Create the encryption mask */ > > + /* Read sev_status */ > + movl $MSR_AMD64_SEV, %ecx > + rdmsr > + shlq $32, %rdx > + orq %rdx, %rax > + movq %rax, sev_status(%rip) > + > .Lno_sev_mask: > movq %rbp, %rsp /* Restore original stack pointer */ > > pop %rdx > + pop %rcx > + pop %rax > pop %rbp > #endif > > @@ -96,5 +107,6 @@ SYM_FUNC_END(set_sev_encryption_mask) > > #ifdef CONFIG_AMD_MEM_ENCRYPT > .balign 8 > -SYM_DATA(sme_me_mask, .quad 0) > +SYM_DATA(sme_me_mask, .quad 0) > +SYM_DATA(sev_status, .quad 0) > #endif > -- > 2.28.0 >

