mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-23 01:37:44 +00:00
hv: Introduce Global System Interrupt (GSI) into INTx Remapping
As ACRN prepares to support platforms with multiple IO-APICs, GSI is a better way to represent physical and virtual INTx interrupt source. 1) This patch replaces usage of "pin" with "gsi" whereever applicable across the modules. 2) PIC pin to gsi is trickier and needs to consider the usage of "Interrupt Source Override" structure in ACPI for the corresponding VM. Tracked-On: #4151 Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.com> Acked-by: Eddie Dong <eddie.dong@Intel.com>
This commit is contained in:
committed by
wenlingz
parent
2fe3004202
commit
85217e362f
@@ -76,7 +76,7 @@ void vioapic_reset(struct acrn_vm *vm);
|
||||
* @brief Set vIOAPIC IRQ line status.
|
||||
*
|
||||
* @param[in] vm Pointer to target VM
|
||||
* @param[in] irqline Target IRQ number
|
||||
* @param[in] vgsi GSI for the virtual interrupt
|
||||
* @param[in] operation Action options: GSI_SET_HIGH/GSI_SET_LOW/
|
||||
* GSI_RAISING_PULSE/GSI_FALLING_PULSE
|
||||
*
|
||||
@@ -84,7 +84,7 @@ void vioapic_reset(struct acrn_vm *vm);
|
||||
*
|
||||
* @return None
|
||||
*/
|
||||
void vioapic_set_irqline_lock(const struct acrn_vm *vm, uint32_t irqline, uint32_t operation);
|
||||
void vioapic_set_irqline_lock(const struct acrn_vm *vm, uint32_t vgsi, uint32_t operation);
|
||||
|
||||
/**
|
||||
* @brief Set vIOAPIC IRQ line status.
|
||||
@@ -93,18 +93,18 @@ void vioapic_set_irqline_lock(const struct acrn_vm *vm, uint32_t irqline, uint32
|
||||
* operation be done with ioapic lock.
|
||||
*
|
||||
* @param[in] vm Pointer to target VM
|
||||
* @param[in] irqline Target IRQ number
|
||||
* @param[in] vgsi GSI for the virtual interrupt
|
||||
* @param[in] operation Action options: GSI_SET_HIGH/GSI_SET_LOW/
|
||||
* GSI_RAISING_PULSE/GSI_FALLING_PULSE
|
||||
*
|
||||
* @pre irqline < vioapic_pincount(vm)
|
||||
* @return None
|
||||
*/
|
||||
void vioapic_set_irqline_nolock(const struct acrn_vm *vm, uint32_t irqline, uint32_t operation);
|
||||
void vioapic_set_irqline_nolock(const struct acrn_vm *vm, uint32_t vgsi, uint32_t operation);
|
||||
|
||||
uint32_t vioapic_pincount(const struct acrn_vm *vm);
|
||||
void vioapic_process_eoi(struct acrn_vm *vm, uint32_t vector);
|
||||
void vioapic_get_rte(const struct acrn_vm *vm, uint32_t pin, union ioapic_rte *rte);
|
||||
void vioapic_get_rte(const struct acrn_vm *vm, uint32_t vgsi, union ioapic_rte *rte);
|
||||
int32_t vioapic_mmio_access_handler(struct io_request *io_req, void *handler_private_data);
|
||||
|
||||
/**
|
||||
|
@@ -149,13 +149,13 @@ void vpic_init(struct acrn_vm *vm);
|
||||
* @brief Set vPIC IRQ line status.
|
||||
*
|
||||
* @param[in] vpic Pointer to target VM's vpic table
|
||||
* @param[in] irqline Target IRQ number
|
||||
* @param[in] vgsi GSI for the virtual interrupt
|
||||
* @param[in] operation action options:GSI_SET_HIGH/GSI_SET_LOW/
|
||||
* GSI_RAISING_PULSE/GSI_FALLING_PULSE
|
||||
*
|
||||
* @return None
|
||||
*/
|
||||
void vpic_set_irqline(struct acrn_vpic *vpic, uint32_t irqline, uint32_t operation);
|
||||
void vpic_set_irqline(struct acrn_vpic *vpic, uint32_t vgsi, uint32_t operation);
|
||||
|
||||
/**
|
||||
* @brief Get pending virtual interrupts for vPIC.
|
||||
@@ -179,7 +179,7 @@ void vpic_pending_intr(struct acrn_vpic *vpic, uint32_t *vecptr);
|
||||
* @pre vm != NULL
|
||||
*/
|
||||
void vpic_intr_accepted(struct acrn_vpic *vpic, uint32_t vector);
|
||||
void vpic_get_irqline_trigger_mode(const struct acrn_vpic *vpic, uint32_t irqline, enum vpic_trigger *trigger);
|
||||
void vpic_get_irqline_trigger_mode(const struct acrn_vpic *vpic, uint32_t vgsi, enum vpic_trigger *trigger);
|
||||
uint32_t vpic_pincount(void);
|
||||
struct acrn_vpic *vm_pic(const struct acrn_vm *vm);
|
||||
|
||||
|
@@ -88,5 +88,5 @@ void vuart_putchar(struct acrn_vuart *vu, char ch);
|
||||
char vuart_getchar(struct acrn_vuart *vu);
|
||||
void vuart_toggle_intr(const struct acrn_vuart *vu);
|
||||
|
||||
bool is_vuart_intx(const struct acrn_vm *vm, uint32_t intx_pin);
|
||||
bool is_vuart_intx(const struct acrn_vm *vm, uint32_t intx_gsi);
|
||||
#endif /* VUART_H */
|
||||
|
Reference in New Issue
Block a user