mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-22 05:30:24 +00:00
doc: Editorial changes to hypercall hld
Signed-off-by: Reyes, Amy <amy.reyes@intel.com>
This commit is contained in:
parent
245951f8ea
commit
dc6fccfa0d
@ -13,26 +13,26 @@ The application binary interface (ABI) of ACRN hypercalls is defined as follows.
|
|||||||
|
|
||||||
- A guest VM executes the ``vmcall`` instruction to trigger a hypercall.
|
- A guest VM executes the ``vmcall`` instruction to trigger a hypercall.
|
||||||
|
|
||||||
- Input parameters of a hypercall includes:
|
- Input parameters of a hypercall include:
|
||||||
|
|
||||||
- An hypercall ID in register ``R8``, which specifies the kind of service
|
- A hypercall ID in register ``R8``, which specifies the kind of service
|
||||||
requested by the guest VM.
|
requested by the guest VM.
|
||||||
|
|
||||||
- The first parameter in register ``RDI`` and the second in register
|
- The first parameter in register ``RDI`` and the second in register
|
||||||
``RSI``. The semantics of those two parameters vary among different kinds of
|
``RSI``. The semantics of those two parameters vary among different kinds of
|
||||||
hypercalls and are defined in the hypercall APIs reference. For hypercalls
|
hypercalls and are defined in the :ref:`hv-hypercall-ref`. For hypercalls
|
||||||
requesting operations on a specific VM, the first parameter is typically the
|
requesting operations on a specific VM, the first parameter is typically the
|
||||||
ID of that VM.
|
ID of that VM.
|
||||||
|
|
||||||
- The register ``RAX`` contains the return value of the hypercall after a guest
|
- The register ``RAX`` contains the return value of the hypercall after a guest
|
||||||
VM executes the ``vmcall`` instruction, unless the ``vmcall`` instruction
|
VM executes the ``vmcall`` instruction, unless the ``vmcall`` instruction
|
||||||
triggers an exception. Other general purpose registers are not modified by a
|
triggers an exception. Other general-purpose registers are not modified by a
|
||||||
hypercall.
|
hypercall.
|
||||||
|
|
||||||
- In case a hypercall parameter is defined as a pointer to a data structure,
|
- If a hypercall parameter is defined as a pointer to a data structure,
|
||||||
fields in that structure can be either input, output or inout.
|
fields in that structure can be either input, output, or inout.
|
||||||
|
|
||||||
There are some restrictions for hypercall and upcall:
|
There are some restrictions for hypercalls and upcalls:
|
||||||
|
|
||||||
#. Only specific VMs (the Service VM and the VM with Trusty enabled)
|
#. Only specific VMs (the Service VM and the VM with Trusty enabled)
|
||||||
can invoke hypercalls. A VM that cannot invoke hypercalls gets ``#UD``
|
can invoke hypercalls. A VM that cannot invoke hypercalls gets ``#UD``
|
||||||
@ -58,6 +58,8 @@ Service VM registers the IRQ handler for vector (0xF3) and notifies the I/O
|
|||||||
emulation module in the Service VM once the IRQ is triggered. View the detailed
|
emulation module in the Service VM once the IRQ is triggered. View the detailed
|
||||||
upcall process at :ref:`ipi-management`.
|
upcall process at :ref:`ipi-management`.
|
||||||
|
|
||||||
|
.. _hv-hypercall-ref:
|
||||||
|
|
||||||
Hypercall APIs Reference
|
Hypercall APIs Reference
|
||||||
************************
|
************************
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user