lkml.org 
[lkml]   [2020]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 49/75] x86/sev-es: Wire up existing #VC exit-code handlers
    Date
    From: Joerg Roedel <jroedel@suse.de>

    Re-use the handlers for CPUID and IOIO caused #VC exceptions in the
    early boot handler.

    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    ---
    arch/x86/kernel/sev-es-shared.c | 7 +++----
    arch/x86/kernel/sev-es.c | 6 ++++++
    2 files changed, 9 insertions(+), 4 deletions(-)

    diff --git a/arch/x86/kernel/sev-es-shared.c b/arch/x86/kernel/sev-es-shared.c
    index 4153b1b1048f..59884926fae5 100644
    --- a/arch/x86/kernel/sev-es-shared.c
    +++ b/arch/x86/kernel/sev-es-shared.c
    @@ -325,8 +325,7 @@ static enum es_result vc_ioio_exitinfo(struct es_em_ctxt *ctxt, u64 *exitinfo)
    return ES_OK;
    }

    -static enum es_result __maybe_unused
    -vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt)
    +static enum es_result vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt)
    {
    struct pt_regs *regs = ctxt->regs;
    u64 exit_info_1, exit_info_2;
    @@ -434,8 +433,8 @@ vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt)
    return ret;
    }

    -static enum es_result __maybe_unused vc_handle_cpuid(struct ghcb *ghcb,
    - struct es_em_ctxt *ctxt)
    +static enum es_result vc_handle_cpuid(struct ghcb *ghcb,
    + struct es_em_ctxt *ctxt)
    {
    struct pt_regs *regs = ctxt->regs;
    u32 cr4 = native_read_cr4();
    diff --git a/arch/x86/kernel/sev-es.c b/arch/x86/kernel/sev-es.c
    index 156914d8e103..e04a1868905b 100644
    --- a/arch/x86/kernel/sev-es.c
    +++ b/arch/x86/kernel/sev-es.c
    @@ -450,6 +450,12 @@ static enum es_result vc_handle_exitcode(struct es_em_ctxt *ctxt,
    enum es_result result;

    switch (exit_code) {
    + case SVM_EXIT_CPUID:
    + result = vc_handle_cpuid(ghcb, ctxt);
    + break;
    + case SVM_EXIT_IOIO:
    + result = vc_handle_ioio(ghcb, ctxt);
    + break;
    default:
    /*
    * Unexpected #VC exception
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-07-14 14:14    [W:6.390 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site