mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-04 22:47:00 +00:00
75 lines
1.7 KiB
C
75 lines
1.7 KiB
C
/*
|
|
* Copyright (C) 2018 Intel Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef IOAPIC_H
|
|
#define IOAPIC_H
|
|
|
|
/*
|
|
* IOAPIC_MAX_LINES is architecturally defined.
|
|
* The usable RTEs may be a subset of the total on a per IO APIC basis.
|
|
*/
|
|
#define IOAPIC_MAX_LINES 120U
|
|
#define NR_LEGACY_IRQ 16U
|
|
#define NR_LEGACY_PIN NR_LEGACY_IRQ
|
|
#define NR_MAX_GSI (NR_IOAPICS * IOAPIC_MAX_LINES)
|
|
|
|
void setup_ioapic_irqs(void);
|
|
|
|
bool irq_is_gsi(uint32_t irq);
|
|
uint8_t irq_to_pin(uint32_t irq);
|
|
|
|
/**
|
|
* @brief Get irq num from pin num
|
|
*
|
|
* @param[in] pin The pin number
|
|
*/
|
|
uint32_t pin_to_irq(uint8_t pin);
|
|
|
|
/**
|
|
* @brief Set the redirection table entry
|
|
*
|
|
* Set the redirection table entry of an interrupt
|
|
*
|
|
* @param[in] irq The number of irq to set
|
|
* @param[in] rte Union of ioapic_rte to set
|
|
*/
|
|
void ioapic_set_rte(uint32_t irq, union ioapic_rte rte);
|
|
|
|
/**
|
|
* @brief Get the redirection table entry
|
|
*
|
|
* Get the redirection table entry of an interrupt
|
|
*
|
|
* @param[in] irq The number of irq to fetch RTE
|
|
* @param[inout] rte Pointer to union ioapic_rte to return result RTE
|
|
*
|
|
* @pre rte != NULL
|
|
*/
|
|
void ioapic_get_rte(uint32_t irq, union ioapic_rte *rte);
|
|
|
|
void suspend_ioapic(void);
|
|
void resume_ioapic(void);
|
|
|
|
void gsi_mask_irq(uint32_t irq);
|
|
void gsi_unmask_irq(uint32_t irq);
|
|
|
|
extern uint8_t pic_ioapic_pin_map[NR_LEGACY_PIN];
|
|
|
|
#ifdef HV_DEBUG
|
|
/**
|
|
* @brief Get information of ioapic
|
|
*
|
|
* It's for debug only.
|
|
*
|
|
* @param[in] str_max_len The max size of the string containing
|
|
* interrupt info
|
|
* @param[inout] str_arg Pointer to the output information
|
|
*/
|
|
int get_ioapic_info(char *str_arg, size_t str_max_len);
|
|
#endif /* HV_DEBUG */
|
|
|
|
#endif /* IOAPIC_H */
|