x86/sev-es: Handle NMI State
authorJoerg Roedel <jroedel@suse.de>
Mon, 7 Sep 2020 13:16:11 +0000 (15:16 +0200)
committerBorislav Petkov <bp@suse.de>
Wed, 9 Sep 2020 16:02:35 +0000 (18:02 +0200)
commit4ca68e023b11e4d5908bf9ee326fab01111d77d5
tree874f57bbc6627e3f64668d2845051e1ea03cc15f
parent094794f59720d7e877a1eeb372ecedeed6b441ab
x86/sev-es: Handle NMI State

When running under SEV-ES, the kernel has to tell the hypervisor when to
open the NMI window again after an NMI was injected. This is done with
an NMI-complete message to the hypervisor.

Add code to the kernel's NMI handler to send this message right at the
beginning of do_nmi(). This always allows nesting NMIs.

 [ bp: Mark __sev_es_nmi_complete() noinstr:
   vmlinux.o: warning: objtool: exc_nmi()+0x17: call to __sev_es_nmi_complete()
leaves .noinstr.text section
   While at it, use __pa_nodebug() for the same reason due to
   CONFIG_DEBUG_VIRTUAL=y:
   vmlinux.o: warning: objtool: __sev_es_nmi_complete()+0xd9: call to __phys_addr()
    leaves .noinstr.text section ]

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20200907131613.12703-71-joro@8bytes.org
arch/x86/include/asm/sev-es.h
arch/x86/include/uapi/asm/svm.h
arch/x86/kernel/nmi.c
arch/x86/kernel/sev-es.c