lkml.org 
[lkml]   [2021]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 2/6] x86/sev-es: Disable IRQs while GHCB is active
    On Thu, Jun 10, 2021 at 11:11:37AM +0200, Joerg Roedel wrote:
    > From: Joerg Roedel <jroedel@suse.de>
    >
    > The #VC handler only cares about IRQs being disabled while the GHCB is
    > active, as it must not be interrupted by something which could cause
    > another #VC while it holds the GHCB (NMI is the exception for which the
    > backup GHCB is there).
    >
    > Make sure nothing interrupts the code path while the GHCB is active by
    > disabling IRQs in sev_es_get_ghcb() and restoring the previous irq state
    > in sev_es_put_ghcb().

    Why this unnecessarily complicated passing of flags back and forth?

    Why not simply "sandwich" them:

    local_irq_save()
    sev_es_get_ghcb()

    ...blablabla

    sev_es_put_ghcb()
    local_irq_restore();

    in every call site?

    What's the difference in passing *flags in and have the
    get_ghcb/put_ghcb save/restore flags instead of the callers?

    > -static __always_inline struct ghcb *sev_es_get_ghcb(struct ghcb_state *state)
    > +static __always_inline struct ghcb *sev_es_get_ghcb(struct ghcb_state *state,
    > + unsigned long *flags)
    > {
    > struct sev_es_runtime_data *data;
    > struct ghcb *ghcb;
    >
    > + /*
    > + * Nothing shall interrupt this code path while holding the per-cpu
    > + * GHCB. The backup GHCB is only for NMIs interrupting this path.

    Hmm, so why aren't you accessing/setting data->ghcb_active and
    data->backup_ghcb_active safely using cmpxchg() if this path can be
    interrupted by an NMI?

    --
    Regards/Gruss,
    Boris.

    https://people.kernel.org/tglx/notes-about-netiquette

    \
     
     \ /
      Last update: 2021-06-11 16:05    [W:2.407 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site