[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v10 49/59] i386/xen: handle HVMOP_get_param
From: |
David Woodhouse |
Subject: |
[PATCH v10 49/59] i386/xen: handle HVMOP_get_param |
Date: |
Wed, 1 Feb 2023 14:31:38 +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 75e62bc02f..3d6ea7ca98 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 v10 00/59] Xen HVM support under KVM, David Woodhouse, 2023/02/01
- [PATCH v10 53/59] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests, David Woodhouse, 2023/02/01
- [PATCH v10 49/59] i386/xen: handle HVMOP_get_param,
David Woodhouse <=
- [PATCH v10 14/59] xen: Permit --xen-domid argument when accel is KVM, David Woodhouse, 2023/02/01
- [PATCH v10 10/59] i386/xen: implement HYPERVISOR_xen_version, David Woodhouse, 2023/02/01
- [PATCH v10 29/59] hw/xen: Implement EVTCHNOP_status, David Woodhouse, 2023/02/01
- [PATCH v10 44/59] hw/xen: Support mapping grant frames, David Woodhouse, 2023/02/01