[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v15 49/60] i386/xen: handle HVMOP_get_param
From: |
David Woodhouse |
Subject: |
[PATCH v15 49/60] i386/xen: handle HVMOP_get_param |
Date: |
Wed, 1 Mar 2023 13:52:12 +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 75bcf7b630..d2c88ef0d9 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -765,6 +765,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)
{
@@ -809,6 +845,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 v15 53/60] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests, (continued)
- [PATCH v15 53/60] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests, David Woodhouse, 2023/03/01
- [PATCH v15 02/60] xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation, David Woodhouse, 2023/03/01
- [PATCH v15 44/60] hw/xen: Support mapping grant frames, David Woodhouse, 2023/03/01
- [PATCH v15 38/60] hw/xen: Implement EVTCHNOP_reset, David Woodhouse, 2023/03/01
- [PATCH v15 50/60] hw/xen: Add backend implementation of interdomain event channel support, David Woodhouse, 2023/03/01
- [PATCH v15 39/60] i386/xen: add monitor commands to test event injection, David Woodhouse, 2023/03/01
- [PATCH v15 51/60] hw/xen: Add xen_xenstore device for xenstore emulation, David Woodhouse, 2023/03/01
- [PATCH v15 45/60] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson, David Woodhouse, 2023/03/01
- [PATCH v15 52/60] hw/xen: Add basic ring handling to xenstore, David Woodhouse, 2023/03/01
- [PATCH v15 42/60] kvm/i386: Add xen-gnttab-max-frames property, David Woodhouse, 2023/03/01
- [PATCH v15 49/60] i386/xen: handle HVMOP_get_param,
David Woodhouse <=
- [PATCH v15 32/60] hw/xen: Implement EVTCHNOP_bind_virq, David Woodhouse, 2023/03/01
- [PATCH v15 41/60] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback, David Woodhouse, 2023/03/01
- [PATCH v15 54/60] i386/xen: Implement HYPERVISOR_physdev_op, David Woodhouse, 2023/03/01
- [PATCH v15 16/60] i386/xen: manage and save/restore Xen guest long_mode setting, David Woodhouse, 2023/03/01
- [PATCH v15 24/60] i386/xen: implement HYPERVISOR_event_channel_op, David Woodhouse, 2023/03/01
- [PATCH v15 06/60] i386/kvm: Set Xen vCPU ID in KVM, David Woodhouse, 2023/03/01
- [PATCH v15 56/60] hw/xen: Support GSI mapping to PIRQ, David Woodhouse, 2023/03/01
- [PATCH v15 01/60] include: import Xen public headers to hw/xen/interface, David Woodhouse, 2023/03/01
- [PATCH v15 25/60] i386/xen: implement HVMOP_set_evtchn_upcall_vector, David Woodhouse, 2023/03/01
- [PATCH v15 07/60] xen-platform: exclude vfio-pci from the PCI platform unplug, David Woodhouse, 2023/03/01