[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 41/51] kvm/i386: Add xen-gnttab-max-frames property
From: |
David Woodhouse |
Subject: |
[PATCH v7 41/51] kvm/i386: Add xen-gnttab-max-frames property |
Date: |
Mon, 16 Jan 2023 21:57:55 +0000 |
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
accel/kvm/kvm-all.c | 1 +
include/sysemu/kvm_int.h | 1 +
include/sysemu/kvm_xen.h | 1 +
target/i386/kvm/kvm.c | 34 ++++++++++++++++++++++++++++++++++
target/i386/kvm/xen-emu.c | 6 ++++++
5 files changed, 43 insertions(+)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index ca1efac278..9c0c964296 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -3704,6 +3704,7 @@ static void kvm_accel_instance_init(Object *obj)
s->notify_vmexit = NOTIFY_VMEXIT_OPTION_RUN;
s->notify_window = 0;
s->xen_version = 0;
+ s->xen_gnttab_max_frames = 64;
}
/**
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index 7f945bc763..39ce4d36f6 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -120,6 +120,7 @@ struct KVMState
uint32_t notify_window;
uint32_t xen_version;
uint32_t xen_caps;
+ uint16_t xen_gnttab_max_frames;
};
void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml,
diff --git a/include/sysemu/kvm_xen.h b/include/sysemu/kvm_xen.h
index a32ee58852..df92205a7d 100644
--- a/include/sysemu/kvm_xen.h
+++ b/include/sysemu/kvm_xen.h
@@ -24,6 +24,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_set_callback_asserted(void);
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() & \
KVM_XEN_HVM_CONFIG_ ## cap))
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 51ddf4bfa2..76bdd9d7ea 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -5866,6 +5866,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)
{
object_class_property_add_enum(oc, "notify-vmexit", "NotifyVMexitOption",
@@ -5891,6 +5918,13 @@ void kvm_arch_accel_class_init(ObjectClass *oc)
"Xen version to be emulated "
"(in XENVER_version form "
"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)
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index f863a99315..905fa4d318 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -1206,6 +1206,12 @@ int kvm_xen_handle_exit(X86CPU *cpu, struct kvm_xen_exit
*exit)
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)
{
X86CPU *cpu = X86_CPU(cs);
--
2.39.0
- [PATCH v7 07/51] xen-platform: exclude vfio-pci from the PCI platform unplug, (continued)
- [PATCH v7 07/51] xen-platform: exclude vfio-pci from the PCI platform unplug, David Woodhouse, 2023/01/16
- [PATCH v7 02/51] xen: add CONFIG_XENFV_MACHINE and CONFIG_XEN_EMU options for Xen emulation, David Woodhouse, 2023/01/16
- [PATCH v7 25/51] i386/xen: implement HVMOP_set_param, David Woodhouse, 2023/01/16
- [PATCH v7 40/51] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback, David Woodhouse, 2023/01/16
- [PATCH v7 04/51] i386/kvm: Add xen-version KVM accelerator property and init KVM Xen support, David Woodhouse, 2023/01/16
- [PATCH v7 24/51] i386/xen: implement HVMOP_set_evtchn_upcall_vector, David Woodhouse, 2023/01/16
- [PATCH v7 09/51] i386/xen: handle guest hypercalls, David Woodhouse, 2023/01/16
- [PATCH v7 16/51] i386/xen: implement HYPERVISOR_memory_op, David Woodhouse, 2023/01/16
- [PATCH v7 37/51] hw/xen: Implement EVTCHNOP_reset, David Woodhouse, 2023/01/16
- [PATCH v7 35/51] hw/xen: Implement EVTCHNOP_bind_interdomain, David Woodhouse, 2023/01/16
- [PATCH v7 41/51] kvm/i386: Add xen-gnttab-max-frames property,
David Woodhouse <=
- [PATCH v7 05/51] i386/kvm: handle Xen HVM cpuid leaves, David Woodhouse, 2023/01/16
- [PATCH v7 39/51] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_GSI callback, David Woodhouse, 2023/01/16
- [PATCH v7 47/51] i386/xen: Reserve Xen special pages for console, xenstore rings, David Woodhouse, 2023/01/16
- [PATCH v7 30/51] hw/xen: Implement EVTCHNOP_unmask, David Woodhouse, 2023/01/16
- [PATCH v7 17/51] i386/xen: implement XENMEM_add_to_physmap_batch, David Woodhouse, 2023/01/16
- [PATCH v7 12/51] i386/xen: Implement SCHEDOP_poll and SCHEDOP_yield, David Woodhouse, 2023/01/16
- [PATCH v7 21/51] i386/xen: handle VCPUOP_register_vcpu_time_info, David Woodhouse, 2023/01/16
- [PATCH v7 11/51] i386/xen: implement HYPERVISOR_sched_op, SCHEDOP_shutdown, David Woodhouse, 2023/01/16
- [PATCH v7 13/51] hw/xen: Add xen_overlay device for emulating shared xenheap pages, David Woodhouse, 2023/01/16
- [PATCH v7 44/51] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson, David Woodhouse, 2023/01/16