mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-05 07:35:31 +00:00
HV: Add hypercall to set/clear IRQ line
- wraps ASSERT/DEASSERT IRQ line hypercalls.
- remove 'intr_type' from set/clear IRQ line interface.
- deprecate "IRQ_ASSERT", "IRQ_DEASSERT" & "IRQ_PULSE".
- new adding hypercall will support "GSI_SET_HIGH"/
"GSI_SET_LOW"/ "GSI_RAISING_PULSE"/ "GSI_FALLING_PULSE"
operations
Tracked-On: #861
Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -184,6 +184,23 @@ int32_t hcall_deassert_irqline(struct vm *vm, uint16_t vmid, uint64_t param);
|
||||
*/
|
||||
int32_t hcall_pulse_irqline(struct vm *vm, uint16_t vmid, uint64_t param);
|
||||
|
||||
|
||||
/**
|
||||
* @brief set or clear IRQ line
|
||||
*
|
||||
* Set or clear a virtual IRQ line for a VM, which could be from ISA
|
||||
* or IOAPIC, normally it triggers an edge IRQ.
|
||||
* The function will return -1 if the target VM does not exist.
|
||||
*
|
||||
* @param vm Pointer to VM data structure
|
||||
* @param vmid ID of the VM
|
||||
* @irq_req: request command for IRQ set or clear
|
||||
*
|
||||
* @pre Pointer vm shall point to VM0
|
||||
* @return 0 on success, non-zero on error.
|
||||
*/
|
||||
int32_t hcall_set_irqline(struct vm *vm, uint16_t vmid,
|
||||
struct acrn_irqline_ops *ops);
|
||||
/**
|
||||
* @brief inject MSI interrupt
|
||||
*
|
||||
|
||||
@@ -11,11 +11,6 @@
|
||||
#define IRQF_LEVEL (1U << 1U) /* 1: level trigger; 0: edge trigger */
|
||||
#define IRQF_PT (1U << 2U) /* 1: for passthrough dev */
|
||||
|
||||
enum irq_mode {
|
||||
IRQ_PULSE,
|
||||
IRQ_ASSERT,
|
||||
IRQ_DEASSERT,
|
||||
};
|
||||
|
||||
typedef void (*irq_action_t)(uint32_t irq, void *priv_data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user