[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v11 49/59] i386/xen: handle HVMOP_get_param
From: |
David Woodhouse |
Subject: |
[PATCH v11 49/59] i386/xen: handle HVMOP_get_param |
Date: |
Thu, 16 Feb 2023 06:24:34 +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>
Reviewed-by: Paul Durrant <paul@xen.org>
---
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 f55ab08959..36e60bd2a5 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 v11 01/59] include: import Xen public headers to hw/xen/interface, (continued)
- [PATCH v11 01/59] include: import Xen public headers to hw/xen/interface, David Woodhouse, 2023/02/16
- [PATCH v11 12/59] i386/xen: Implement SCHEDOP_poll and SCHEDOP_yield, David Woodhouse, 2023/02/16
- [PATCH v11 55/59] hw/xen: Implement emulated PIRQ hypercall support, David Woodhouse, 2023/02/16
- [PATCH v11 29/59] hw/xen: Implement EVTCHNOP_status, David Woodhouse, 2023/02/16
- [PATCH v11 18/59] i386/xen: implement XENMEM_add_to_physmap_batch, David Woodhouse, 2023/02/16
- [PATCH v11 54/59] i386/xen: Implement HYPERVISOR_physdev_op, David Woodhouse, 2023/02/16
- [PATCH v11 03/59] xen: Add XEN_DISABLED mode and make it default, David Woodhouse, 2023/02/16
- [PATCH v11 52/59] hw/xen: Add basic ring handling to xenstore, David Woodhouse, 2023/02/16
- [PATCH v11 28/59] i386/xen: Add support for Xen event channel delivery to vCPU, David Woodhouse, 2023/02/16
- [PATCH v11 32/59] hw/xen: Implement EVTCHNOP_bind_virq, David Woodhouse, 2023/02/16
- [PATCH v11 49/59] i386/xen: handle HVMOP_get_param,
David Woodhouse <=
- [PATCH v11 42/59] kvm/i386: Add xen-gnttab-max-frames property, David Woodhouse, 2023/02/16
- [PATCH v11 40/59] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_GSI callback, David Woodhouse, 2023/02/16
- [PATCH v11 43/59] hw/xen: Add xen_gnttab device for grant table emulation, David Woodhouse, 2023/02/16
- [PATCH v11 15/59] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode, David Woodhouse, 2023/02/16
- [PATCH v11 26/59] i386/xen: implement HVMOP_set_param, David Woodhouse, 2023/02/16
- [PATCH v11 59/59] i386/xen: Document Xen HVM emulation, David Woodhouse, 2023/02/16
- [PATCH v11 44/59] hw/xen: Support mapping grant frames, David Woodhouse, 2023/02/16
- [PATCH v11 08/59] xen-platform: allow its creation with XEN_EMULATE mode, David Woodhouse, 2023/02/16
- [PATCH v11 33/59] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2023/02/16