hv: change several APIs to void type

Change these 6 APIs to void type:
  init_default_irqs
  interrupt_init
  early_init_lapic
  init_lapic
  init_iommu
  destroy_iommu_domain
It has checked the argument of destroy_iommu_domain in shutdown_vm,
then no need to check it again inside destroy_iommu_domain.

Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com>
Reviewed-by: Junjie Mao <junjie.mao@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Mingqiang Chi 2018-07-17 09:41:08 +08:00 committed by wenlingz
parent 8017ebdf82
commit aa2b2d80d4
8 changed files with 24 additions and 58 deletions

View File

@ -544,10 +544,7 @@ static void bsp_boot_post(void)
ASSERT(get_cpu_id() == BOOT_CPU_ID, "");
if (init_iommu() != 0) {
pr_fatal("%s, init iommu failed\n", __func__);
return;
}
init_iommu();
console_setup_timer();

View File

@ -365,10 +365,10 @@ uint32_t dev_to_vector(struct dev_handler_node *node)
return node->desc->vector;
}
int init_default_irqs(uint16_t cpu_id)
void init_default_irqs(uint16_t cpu_id)
{
if (cpu_id != BOOT_CPU_ID) {
return 0;
return;
}
init_irq_desc();
@ -377,8 +377,6 @@ int init_default_irqs(uint16_t cpu_id)
disable_pic_irq();
setup_ioapic_irq();
init_softirq();
return 0;
}
void dispatch_exception(struct intr_excp_ctx *ctx)
@ -731,28 +729,14 @@ void get_cpu_interrupt_info(char *str, int str_max)
}
#endif /* HV_DEBUG */
int interrupt_init(uint16_t pcpu_id)
void interrupt_init(uint16_t pcpu_id)
{
struct host_idt_descriptor *idtd = &HOST_IDTR;
int status;
set_idt(idtd);
status = init_lapic(pcpu_id);
ASSERT(status == 0, "lapic init failed");
if (status != 0) {
return -ENODEV;
}
status = init_default_irqs(pcpu_id);
ASSERT(status == 0, "irqs init failed");
if (status != 0) {
return -ENODEV;
}
init_lapic(pcpu_id);
init_default_irqs(pcpu_id);
#ifndef CONFIG_EFI_STUB
CPU_IRQ_ENABLE();
#endif
return status;
}

View File

@ -180,7 +180,7 @@ static void map_lapic(void)
lapic_info.xapic.vaddr = HPA2HVA(lapic_info.xapic.paddr);
}
int early_init_lapic(void)
void early_init_lapic(void)
{
/* Get local APIC base address */
lapic_base_msr.value = msr_read(MSR_IA32_APIC_BASE);
@ -207,11 +207,9 @@ int early_init_lapic(void)
ASSERT(lapic_base_msr.fields.x2APIC_enable == 0U,
"Disable X2APIC in BIOS");
}
return 0;
}
int init_lapic(uint16_t pcpu_id)
void init_lapic(uint16_t pcpu_id)
{
/* Set the Logical Destination Register */
write_lapic_reg32(LAPIC_LOGICAL_DESTINATION_REGISTER,
@ -236,8 +234,6 @@ int init_lapic(uint16_t pcpu_id)
/* Ensure there are no ISR bits set. */
clear_lapic_isr();
return 0;
}
void save_lapic(struct lapic_regs *regs)

View File

@ -169,25 +169,18 @@ static struct list_head iommu_domains;
static void dmar_register_hrhd(struct dmar_drhd_rt *drhd_rt);
static struct dmar_drhd_rt *device_to_dmaru(uint16_t segment, uint8_t bus,
uint8_t devfun);
static int register_hrhd_units(void)
static void register_hrhd_units(void)
{
struct dmar_info *info = get_dmar_info();
struct dmar_drhd_rt *drhd_rt;
uint32_t i;
if (info == NULL) {
pr_warn("vtd: no dmar units found");
return -1;
}
for (i = 0U; i < info->drhd_count; i++) {
drhd_rt = calloc(1, sizeof(struct dmar_drhd_rt));
ASSERT(drhd_rt != NULL, "");
drhd_rt->drhd = &info->drhd_units[i];
dmar_register_hrhd(drhd_rt);
}
return 0;
}
static uint32_t iommu_read32(struct dmar_drhd_rt *dmar_uint, uint32_t offset)
@ -910,12 +903,11 @@ struct iommu_domain *create_iommu_domain(uint16_t vm_id, uint64_t translation_ta
return domain;
}
int destroy_iommu_domain(struct iommu_domain *domain)
/**
* @pre domain != NULL
*/
void destroy_iommu_domain(struct iommu_domain *domain)
{
if (domain == NULL) {
return 1;
}
/* currently only support ept */
if (!domain->is_tt_ept) {
ASSERT(false, "translation_table is not EPT!");
@ -929,8 +921,6 @@ int destroy_iommu_domain(struct iommu_domain *domain)
free_domain_id(domain->dom_id);
free(domain);
return 0;
}
static int add_iommu_device(struct iommu_domain *domain, uint16_t segment,
@ -1258,7 +1248,7 @@ void resume_iommu(void)
}
}
int init_iommu(void)
void init_iommu(void)
{
uint16_t bus;
uint16_t devfun;
@ -1268,9 +1258,7 @@ int init_iommu(void)
spinlock_init(&domain_lock);
if (register_hrhd_units() != 0) {
return -1;
}
register_hrhd_units();
host_domain = create_host_domain();
@ -1282,6 +1270,4 @@ int init_iommu(void)
}
enable_iommu();
return 0;
}

View File

@ -322,6 +322,9 @@ int parse_dmar_table(void)
return 0;
}
/**
* @post return != NULL
*/
struct dmar_info *get_dmar_info(void)
{
parse_dmar_table();

View File

@ -70,7 +70,7 @@ int common_handler_edge(struct irq_desc *desc, void *handler_data);
int common_dev_handler_level(struct irq_desc *desc, void *handler_data);
int quick_handler_nolock(struct irq_desc *desc, void *handler_data);
int init_default_irqs(uint16_t cpu);
void init_default_irqs(uint16_t cpu);
void dispatch_exception(struct intr_excp_ctx *ctx);
void dispatch_interrupt(struct intr_excp_ctx *ctx);
@ -106,7 +106,7 @@ int exception_vmexit_handler(struct vcpu *vcpu);
int interrupt_window_vmexit_handler(struct vcpu *vcpu);
int external_interrupt_vmexit_handler(struct vcpu *vcpu);
int acrn_handle_pending_request(struct vcpu *vcpu);
int interrupt_init(uint16_t pcpu_id);
void interrupt_init(uint16_t pcpu_id);
void cancel_event_injection(struct vcpu *vcpu);

View File

@ -134,8 +134,8 @@ union lapic_id {
void write_lapic_reg32(uint32_t offset, uint32_t value);
void save_lapic(struct lapic_regs *regs);
int early_init_lapic(void);
int init_lapic(uint16_t cpu_id);
void early_init_lapic(void);
void init_lapic(uint16_t cpu_id);
void send_lapic_eoi(void);
uint8_t get_cur_lapic_id(void);
int send_startup_ipi(enum intr_cpu_startup_shorthand cpu_startup_shorthand,

View File

@ -480,7 +480,7 @@ struct iommu_domain *create_iommu_domain(uint16_t vm_id,
uint64_t translation_table, uint32_t addr_width);
/* Destroy the iommu domain */
int destroy_iommu_domain(struct iommu_domain *domain);
void destroy_iommu_domain(struct iommu_domain *domain);
/* Enable translation of iommu*/
void enable_iommu(void);
@ -495,5 +495,5 @@ void suspend_iommu(void);
void resume_iommu(void);
/* iommu initialization */
int init_iommu(void);
void init_iommu(void);
#endif