kvm/i386: Add xen-gnttab-max-frames property
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org>
This commit is contained in:
parent
2aff696b10
commit
6f43f2ee49
@ -3704,6 +3704,7 @@ static void kvm_accel_instance_init(Object *obj)
|
|||||||
s->notify_vmexit = NOTIFY_VMEXIT_OPTION_RUN;
|
s->notify_vmexit = NOTIFY_VMEXIT_OPTION_RUN;
|
||||||
s->notify_window = 0;
|
s->notify_window = 0;
|
||||||
s->xen_version = 0;
|
s->xen_version = 0;
|
||||||
|
s->xen_gnttab_max_frames = 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -120,6 +120,7 @@ struct KVMState
|
|||||||
uint32_t notify_window;
|
uint32_t notify_window;
|
||||||
uint32_t xen_version;
|
uint32_t xen_version;
|
||||||
uint32_t xen_caps;
|
uint32_t xen_caps;
|
||||||
|
uint16_t xen_gnttab_max_frames;
|
||||||
};
|
};
|
||||||
|
|
||||||
void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
|
void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
|
||||||
|
@ -25,6 +25,7 @@ void *kvm_xen_get_vcpu_info_hva(uint32_t vcpu_id);
|
|||||||
void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type);
|
void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type);
|
||||||
void kvm_xen_set_callback_asserted(void);
|
void kvm_xen_set_callback_asserted(void);
|
||||||
int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port);
|
int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port);
|
||||||
|
uint16_t kvm_xen_get_gnttab_max_frames(void);
|
||||||
|
|
||||||
#define kvm_xen_has_cap(cap) (!!(kvm_xen_get_caps() & \
|
#define kvm_xen_has_cap(cap) (!!(kvm_xen_get_caps() & \
|
||||||
KVM_XEN_HVM_CONFIG_ ## cap))
|
KVM_XEN_HVM_CONFIG_ ## cap))
|
||||||
|
@ -5880,6 +5880,33 @@ static void kvm_arch_set_xen_version(Object *obj, Visitor *v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void kvm_arch_get_xen_gnttab_max_frames(Object *obj, Visitor *v,
|
||||||
|
const char *name, void *opaque,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
KVMState *s = KVM_STATE(obj);
|
||||||
|
uint16_t value = s->xen_gnttab_max_frames;
|
||||||
|
|
||||||
|
visit_type_uint16(v, name, &value, errp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void kvm_arch_set_xen_gnttab_max_frames(Object *obj, Visitor *v,
|
||||||
|
const char *name, void *opaque,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
KVMState *s = KVM_STATE(obj);
|
||||||
|
Error *error = NULL;
|
||||||
|
uint16_t value;
|
||||||
|
|
||||||
|
visit_type_uint16(v, name, &value, &error);
|
||||||
|
if (error) {
|
||||||
|
error_propagate(errp, error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
s->xen_gnttab_max_frames = value;
|
||||||
|
}
|
||||||
|
|
||||||
void kvm_arch_accel_class_init(ObjectClass *oc)
|
void kvm_arch_accel_class_init(ObjectClass *oc)
|
||||||
{
|
{
|
||||||
object_class_property_add_enum(oc, "notify-vmexit", "NotifyVMexitOption",
|
object_class_property_add_enum(oc, "notify-vmexit", "NotifyVMexitOption",
|
||||||
@ -5905,6 +5932,13 @@ void kvm_arch_accel_class_init(ObjectClass *oc)
|
|||||||
"Xen version to be emulated "
|
"Xen version to be emulated "
|
||||||
"(in XENVER_version form "
|
"(in XENVER_version form "
|
||||||
"e.g. 0x4000a for 4.10)");
|
"e.g. 0x4000a for 4.10)");
|
||||||
|
|
||||||
|
object_class_property_add(oc, "xen-gnttab-max-frames", "uint16",
|
||||||
|
kvm_arch_get_xen_gnttab_max_frames,
|
||||||
|
kvm_arch_set_xen_gnttab_max_frames,
|
||||||
|
NULL, NULL);
|
||||||
|
object_class_property_set_description(oc, "xen-gnttab-max-frames",
|
||||||
|
"Maximum number of grant table frames");
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_set_max_apic_id(uint32_t max_apic_id)
|
void kvm_set_max_apic_id(uint32_t max_apic_id)
|
||||||
|
@ -1238,6 +1238,12 @@ int kvm_xen_handle_exit(X86CPU *cpu, struct kvm_xen_exit *exit)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t kvm_xen_get_gnttab_max_frames(void)
|
||||||
|
{
|
||||||
|
KVMState *s = KVM_STATE(current_accel());
|
||||||
|
return s->xen_gnttab_max_frames;
|
||||||
|
}
|
||||||
|
|
||||||
int kvm_put_xen_state(CPUState *cs)
|
int kvm_put_xen_state(CPUState *cs)
|
||||||
{
|
{
|
||||||
X86CPU *cpu = X86_CPU(cs);
|
X86CPU *cpu = X86_CPU(cs);
|
||||||
|
Loading…
Reference in New Issue
Block a user