Commit b20e3780 authored by Brijesh Singh's avatar Brijesh Singh Committed by Paolo Bonzini
Browse files

kvm: add memory encryption context



Split from a patch by Brijesh Singh (brijesh.singh@amd.com).

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarBrijesh Singh <brijesh.singh@amd.com>
parent 9b02f7bf
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
obj-$(CONFIG_SOFTMMU) += accel.o
obj-y += kvm/
obj-$(CONFIG_KVM) += kvm/
obj-$(CONFIG_TCG) += tcg/
obj-y += stubs/
+2 −1
Original line number Diff line number Diff line
obj-$(CONFIG_KVM) += kvm-all.o
obj-y += kvm-all.o
obj-$(call lnot,$(CONFIG_SEV)) += sev-stub.o
+25 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@
#include "qemu/event_notifier.h"
#include "trace.h"
#include "hw/irq.h"
#include "sysemu/sev.h"

#include "hw/boards.h"

@@ -103,6 +104,9 @@ struct KVMState
#endif
    KVMMemoryListener memory_listener;
    QLIST_HEAD(, KVMParkedVcpu) kvm_parked_vcpus;

    /* memory encryption */
    void *memcrypt_handle;
};

KVMState *kvm_state;
@@ -138,6 +142,15 @@ int kvm_get_max_memslots(void)
    return s->nr_slots;
}

bool kvm_memcrypt_enabled(void)
{
    if (kvm_state && kvm_state->memcrypt_handle) {
        return true;
    }

    return false;
}

static KVMSlot *kvm_get_free_slot(KVMMemoryListener *kml)
{
    KVMState *s = kvm_state;
@@ -1636,6 +1649,18 @@ static int kvm_init(MachineState *ms)

    kvm_state = s;

    /*
     * if memory encryption object is specified then initialize the memory
     * encryption context.
     */
    if (ms->memory_encryption) {
        kvm_state->memcrypt_handle = sev_guest_init(ms->memory_encryption);
        if (!kvm_state->memcrypt_handle) {
            ret = -1;
            goto err;
        }
    }

    ret = kvm_arch_init(ms, s);
    if (ret < 0) {
        goto err;

accel/kvm/sev-stub.c

0 → 100644
+21 −0
Original line number Diff line number Diff line
/*
 * QEMU SEV stub
 *
 * Copyright Advanced Micro Devices 2018
 *
 * Authors:
 *      Brijesh Singh <brijesh.singh@amd.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 * See the COPYING file in the top-level directory.
 *
 */

#include "qemu/osdep.h"
#include "qemu-common.h"
#include "sysemu/sev.h"

void *sev_guest_init(const char *id)
{
    return NULL;
}
+5 −0
Original line number Diff line number Diff line
@@ -105,6 +105,11 @@ int kvm_on_sigbus(int code, void *addr)
    return 1;
}

bool kvm_memcrypt_enabled(void)
{
    return false;
}

#ifndef CONFIG_USER_ONLY
int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
{
Loading