Commit fc02086b authored by Eduardo Habkost's avatar Eduardo Habkost Committed by Paolo Bonzini
Browse files

kvm: Make KVMState be the TYPE_KVM_ACCEL instance struct



Now that we create an accel object before calling machine_init, we can
simply use the accel object to save all KVMState data, instead of
allocationg KVMState manually.

Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent ac2da55e
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -71,8 +71,10 @@ typedef struct KVMSlot

typedef struct kvm_dirty_log KVMDirtyLog;

struct KVMState
typedef struct KVMState
{
    AccelState parent_obj;

    KVMSlot *slots;
    int nr_slots;
    int fd;
@@ -105,10 +107,13 @@ struct KVMState
    QTAILQ_HEAD(msi_hashtab, KVMMSIRoute) msi_hashtab[KVM_MSI_HASHTAB_SIZE];
    bool direct_msi;
#endif
};
} KVMState;

#define TYPE_KVM_ACCEL ACCEL_CLASS_NAME("kvm")

#define KVM_STATE(obj) \
    OBJECT_CHECK(KVMState, (obj), TYPE_KVM_ACCEL)

KVMState *kvm_state;
bool kvm_kernel_irqchip;
bool kvm_async_interrupts_allowed;
@@ -1401,7 +1406,7 @@ static int kvm_init(MachineState *ms)
    int i, type = 0;
    const char *kvm_type;

    s = g_malloc0(sizeof(KVMState));
    s = KVM_STATE(ms->accelerator);

    /*
     * On systems where the kernel can support different base page
@@ -1590,7 +1595,6 @@ err:
        close(s->fd);
    }
    g_free(s->slots);
    g_free(s);

    return ret;
}
@@ -2242,6 +2246,7 @@ static const TypeInfo kvm_accel_type = {
    .name = TYPE_KVM_ACCEL,
    .parent = TYPE_ACCEL,
    .class_init = kvm_accel_class_init,
    .instance_size = sizeof(KVMState),
};

static void kvm_type_init(void)