Supported hypercallsΒΆ

group supported_hypercalls

Xen on ARM makes extensive use of hardware facilities and therefore only a subset of the potential hypercalls are required.

Since ARM uses second stage paging any machine/physical addresses passed to hypercalls are Guest Physical Addresses (Intermediate Physical Addresses) unless otherwise noted.

The following hypercalls (and sub operations) are supported on the ARM platform. Other hypercalls should be considered unavailable/unsupported.

HYPERVISOR_memory_op All generic sub-operations

HYPERVISOR_domctl All generic sub-operations, with the exception of:

  • XEN_DOMCTL_irq_permission (not yet implemented)

HYPERVISOR_sched_op All generic sub-operations, with the exception of:

  • SCHEDOP_block prefer wfi hardware instruction

HYPERVISOR_console_io All generic sub-operations

HYPERVISOR_xen_version All generic sub-operations

HYPERVISOR_event_channel_op All generic sub-operations

HYPERVISOR_physdev_op No sub-operations are currenty supported

HYPERVISOR_sysctl All generic sub-operations, with the exception of:

  • XEN_SYSCTL_page_offline_op
  • XEN_SYSCTL_get_pmstat
  • XEN_SYSCTL_pm_op

HYPERVISOR_hvm_op Exactly these sub-operations are supported:

  • HVMOP_set_param
  • HVMOP_get_param

HYPERVISOR_grant_table_op All generic sub-operations

HYPERVISOR_vcpu_op Exactly these sub-operations are supported:

  • VCPUOP_register_vcpu_info
  • VCPUOP_register_runstate_memory_area

Other notes on the ARM ABI:

  • struct start_info is not exported to ARM guests.
  • struct shared_info is mapped by ARM guests using the HYPERVISOR_memory_op sub-op XENMEM_add_to_physmap, passing XENMAPSPACE_shared_info as space parameter.
  • All the per-cpu struct vcpu_info are mapped by ARM guests using the HYPERVISOR_vcpu_op sub-op VCPUOP_register_vcpu_info, including cpu0 struct vcpu_info.
  • The grant table is mapped using the HYPERVISOR_memory_op sub-op XENMEM_add_to_physmap, passing XENMAPSPACE_grant_table as space parameter. The memory range specified under the Xen compatible hypervisor node on device tree can be used as target gpfn for the mapping.
  • Xenstore is initialized by using the two hvm_params HVM_PARAM_STORE_PFN and HVM_PARAM_STORE_EVTCHN. They can be read with the HYPERVISOR_hvm_op sub-op HVMOP_get_param.
  • The paravirtualized console is initialized by using the two hvm_params HVM_PARAM_CONSOLE_PFN and HVM_PARAM_CONSOLE_EVTCHN. They can be read with the HYPERVISOR_hvm_op sub-op HVMOP_get_param.
  • Event channel notifications are delivered using the percpu GIC interrupt specified under the Xen compatible hypervisor node on device tree.
  • The device tree Xen compatible node is fully described under Linux at Documentation/devicetree/bindings/arm/xen.txt.