hv:doc:use doxyen-generated API docs in HDL for vIRQ
Adds below header files to the input of doxygen and replaces hard-coded API docs with doxyen-generated ones: - vlapic.h - vioapic.h - vpic.h - irq.h Tracked-On: #1595 Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
This commit is contained in:
parent
cbe0313588
commit
d2d0cbc661
|
@ -796,6 +796,10 @@ INPUT = custom-doxygen/mainpage.md \
|
|||
../hypervisor/include/arch/x86/mtrr.h \
|
||||
../hypervisor/include/arch/x86/pgtable.h \
|
||||
../hypervisor/include/arch/x86/vtd.h \
|
||||
../hypervisor/include/arch/x86/irq.h \
|
||||
../hypervisor/include/arch/x86/guest/vlapic.h \
|
||||
../hypervisor/include/arch/x86/guest/vioapic.h \
|
||||
../hypervisor/include/arch/x86/guest/vpic.h \
|
||||
../hypervisor/include/common/hypercall.h \
|
||||
../hypervisor/include/public/acrn_common.h \
|
||||
../hypervisor/include/public/acrn_hv_defs.h \
|
||||
|
|
|
@ -94,30 +94,29 @@ an interrupt, for example:
|
|||
|
||||
These APIs will finish by making a request for *ACRN_REQUEST_EVENT.*
|
||||
|
||||
lapic_intr_level
|
||||
used by HV to issue a level triggered vector to vLAPIC. This vector
|
||||
will update into IRR registers
|
||||
.. doxygenfunction:: vlapic_intr_level
|
||||
:project: Project ACRN
|
||||
|
||||
lapic_intr_edge
|
||||
used by HV to issue an edge triggered vector to vLAPIC. This vector
|
||||
will update into IRR registers
|
||||
.. doxygenfunction:: vlapic_intr_edge
|
||||
:project: Project ACRN
|
||||
|
||||
lapic_intr_msi
|
||||
Used by HV to issue a MSI to vLAPIC. This vector will update into IRR
|
||||
registers
|
||||
.. doxygenfunction:: vlapic_intr_accepted
|
||||
:project: Project ACRN
|
||||
|
||||
vlapic_set_local_intr
|
||||
Triggers the LAPIC local interrupt (LVT) 'vector' on 'cpu'. 'cpu' can
|
||||
be set to -1 to trigger the interrupt on all CPUs.
|
||||
.. doxygenfunction:: vlapic_pending_intr
|
||||
:project: Project ACRN
|
||||
|
||||
vlapic_pending_intr
|
||||
Check if vLAPIC has pending vector and return the vector with highest
|
||||
priority if there is pending virtual interrupts.
|
||||
.. doxygenfunction:: vlapic_set_local_intr
|
||||
:project: Project ACRN
|
||||
|
||||
vlapic_intr_accepted
|
||||
Used in case of no APICv support. If a vector triggers the vLAPIC,
|
||||
this vector is then moved from IRR registers to ISR registers. It
|
||||
indicates the vector is accepted by Guest and Guest is processing it.
|
||||
.. doxygenfunction:: vlapic_intr_msi
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vlapic_post_intr
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: apicv_get_pir_desc_paddr
|
||||
:project: Project ACRN
|
||||
|
||||
EOI processing
|
||||
==============
|
||||
|
@ -145,15 +144,11 @@ vLAPIC APIs.
|
|||
|
||||
**Supported APIs:**
|
||||
|
||||
vioapic_assert_irq
|
||||
assert a PIN according to active low or active high.
|
||||
.. doxygenfunction:: vioapic_set_irq
|
||||
:project: Project ACRN
|
||||
|
||||
vioapic_deassert_irq
|
||||
de-assert a PIN according to assigned device or emulated device
|
||||
status.
|
||||
|
||||
vioapic_pulse_irq
|
||||
trigger an edge interrupt.
|
||||
.. doxygenfunction:: vioapic_set_irq_nolock
|
||||
:project: Project ACRN
|
||||
|
||||
Virtual PIC
|
||||
***********
|
||||
|
@ -170,20 +165,18 @@ If an interrupt source from vPIC need to inject an interrupt, the
|
|||
following APIs need be called, which will finally make a request for
|
||||
*ACRN_REQUEST_EXTINT or ACRN_REQUEST_EVENT*:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
int vpic_assert_irq(struct vm *vm, uint32_t irq);
|
||||
int vpic_deassert_irq(struct vm *vm, uint32_t irq);
|
||||
int vpic_pulse_irq(struct vm *vm, uint32_t irq);
|
||||
.. doxygenfunction:: vpic_set_irq
|
||||
:project: Project ACRN
|
||||
|
||||
The following APIs are used to query the vector needed to be injected and ACK
|
||||
the service (means move the interrupt from request service - IRR to in
|
||||
service - ISR):
|
||||
|
||||
.. code-block:: c
|
||||
.. doxygenfunction:: vpic_pending_intr
|
||||
:project: Project ACRN
|
||||
|
||||
void vpic_pending_intr(struct vm *vm, uint32_t *vecptr);
|
||||
void vpic_intr_accepted(struct vm *vm, uint32_t vector);
|
||||
.. doxygenfunction:: vpic_intr_accepted
|
||||
:project: Project ACRN
|
||||
|
||||
Virtual Exception
|
||||
*****************
|
||||
|
@ -198,11 +191,29 @@ hypervisor, for example:
|
|||
|
||||
ACRN hypervisor implements virtual exception injection using these APIs:
|
||||
|
||||
.. code-block:: c
|
||||
.. doxygenfunction:: vcpu_queue_exception
|
||||
:project: Project ACRN
|
||||
|
||||
int vcpu_queue_exception(struct vcpu *vcpu, uint32_t vector, uint32_t err_code);
|
||||
int vcpu_inject_gp(struct vcpu *vcpu, uint32_t err_code);
|
||||
int vcpu_inject_pf(struct vcpu *vcpu, uint64_t addr, uint32_t err_code);
|
||||
.. doxygenfunction:: vcpu_inject_extint
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_nmi
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_gp
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_pf
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_ud
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_ac
|
||||
:project: Project ACRN
|
||||
|
||||
.. doxygenfunction:: vcpu_inject_ss
|
||||
:project: Project ACRN
|
||||
|
||||
ACRN hypervisor uses the *vcpu_inject_gp/vcpu_inject_pf* functions
|
||||
to queue exception request, and follows SDM vol3 - 6.15, Table 6-5 to
|
||||
|
|
Loading…
Reference in New Issue