[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 48/58] i386/xen: handle HVMOP_get_param
From: |
David Woodhouse |
Subject: |
[PATCH v9 48/58] i386/xen: handle HVMOP_get_param |
Date: |
Sat, 28 Jan 2023 08:11:03 +0000 |
From: Joao Martins <joao.m.martins@oracle.com>
Which is used to fetch xenstore PFN and port to be used
by the guest. This is preallocated by the toolstack when
guest will just read those and use it straight away.
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
target/i386/kvm/xen-emu.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index 860253807f..b2c63047e9 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -762,6 +762,42 @@ out:
return true;
}
+static bool handle_get_param(struct kvm_xen_exit *exit, X86CPU *cpu,
+ uint64_t arg)
+{
+ CPUState *cs = CPU(cpu);
+ struct xen_hvm_param hp;
+ int err = 0;
+
+ /* No need for 32/64 compat handling */
+ qemu_build_assert(sizeof(hp) == 16);
+
+ if (kvm_copy_from_gva(cs, arg, &hp, sizeof(hp))) {
+ err = -EFAULT;
+ goto out;
+ }
+
+ if (hp.domid != DOMID_SELF && hp.domid != xen_domid) {
+ err = -ESRCH;
+ goto out;
+ }
+
+ switch (hp.index) {
+ case HVM_PARAM_STORE_PFN:
+ hp.value = XEN_SPECIAL_PFN(XENSTORE);
+ break;
+ default:
+ return false;
+ }
+
+ if (kvm_copy_to_gva(cs, arg, &hp, sizeof(hp))) {
+ err = -EFAULT;
+ }
+out:
+ exit->u.hcall.result = err;
+ return true;
+}
+
static int kvm_xen_hcall_evtchn_upcall_vector(struct kvm_xen_exit *exit,
X86CPU *cpu, uint64_t arg)
{
@@ -806,6 +842,9 @@ static bool kvm_xen_hcall_hvm_op(struct kvm_xen_exit *exit,
X86CPU *cpu,
case HVMOP_set_param:
return handle_set_param(exit, cpu, arg);
+ case HVMOP_get_param:
+ return handle_get_param(exit, cpu, arg);
+
default:
return false;
}
--
2.39.0
- [PATCH v9 05/58] i386/kvm: handle Xen HVM cpuid leaves, (continued)
- [PATCH v9 05/58] i386/kvm: handle Xen HVM cpuid leaves, David Woodhouse, 2023/01/28
- [PATCH v9 51/58] hw/xen: Add basic ring handling to xenstore, David Woodhouse, 2023/01/28
- [PATCH v9 21/58] i386/xen: handle VCPUOP_register_vcpu_time_info, David Woodhouse, 2023/01/28
- [PATCH v9 46/58] i386/xen: handle PV timer hypercalls, David Woodhouse, 2023/01/28
- [PATCH v9 24/58] i386/xen: implement HVMOP_set_evtchn_upcall_vector, David Woodhouse, 2023/01/28
- [PATCH v9 29/58] hw/xen: Implement EVTCHNOP_close, David Woodhouse, 2023/01/28
- [PATCH v9 32/58] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2023/01/28
- [PATCH v9 27/58] i386/xen: Add support for Xen event channel delivery to vCPU, David Woodhouse, 2023/01/28
- [PATCH v9 03/58] xen: Add XEN_DISABLED mode and make it default, David Woodhouse, 2023/01/28
- [PATCH v9 23/58] i386/xen: implement HYPERVISOR_event_channel_op, David Woodhouse, 2023/01/28
- [PATCH v9 48/58] i386/xen: handle HVMOP_get_param,
David Woodhouse <=
- [PATCH v9 30/58] hw/xen: Implement EVTCHNOP_unmask, David Woodhouse, 2023/01/28
- [PATCH v9 28/58] hw/xen: Implement EVTCHNOP_status, David Woodhouse, 2023/01/28
- [PATCH v9 02/58] xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation, David Woodhouse, 2023/01/28
- [PATCH v9 41/58] kvm/i386: Add xen-gnttab-max-frames property, David Woodhouse, 2023/01/28
- [PATCH v9 34/58] hw/xen: Implement EVTCHNOP_alloc_unbound, David Woodhouse, 2023/01/28
- [PATCH v9 44/58] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson, David Woodhouse, 2023/01/28
- [PATCH v9 40/58] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback, David Woodhouse, 2023/01/28
- [PATCH v9 50/58] hw/xen: Add xen_xenstore device for xenstore emulation, David Woodhouse, 2023/01/28
- [PATCH v9 37/58] hw/xen: Implement EVTCHNOP_reset, David Woodhouse, 2023/01/28
- [PATCH v9 26/58] hw/xen: Add xen_evtchn device for event channel emulation, David Woodhouse, 2023/01/28