From 308d4e8c4e03fc491a857ccf1dfcb975ec4697d8 Mon Sep 17 00:00:00 2001 From: Mingqiang Chi Date: Fri, 1 Mar 2019 09:33:35 +0800 Subject: [PATCH] hv:move forward the initialization for iommu & ptdev move 'init_iommu()' & 'ptdev_init()' before starting all secondary cores to avoid access uninitialized resource in partition mode. Tracked-On: #1842 Signed-off-by: Mingqiang Chi Acked-by: Eddie Dong --- hypervisor/arch/x86/cpu.c | 7 +++++++ hypervisor/arch/x86/init.c | 12 ------------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/hypervisor/arch/x86/cpu.c b/hypervisor/arch/x86/cpu.c index 044166c71..0d223e2ba 100644 --- a/hypervisor/arch/x86/cpu.c +++ b/hypervisor/arch/x86/cpu.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -214,6 +215,12 @@ void init_cpu_post(uint16_t pcpu_id) setup_posted_intr_notification(); init_pci_pdev_list(); + if (init_iommu() != 0) { + panic("failed to initialize iommu!"); + } + + ptdev_init(); + /* Start all secondary cores */ startup_paddr = prepare_trampoline(); start_cpus(); diff --git a/hypervisor/arch/x86/init.c b/hypervisor/arch/x86/init.c index 738eabc7e..8dc95ad2a 100644 --- a/hypervisor/arch/x86/init.c +++ b/hypervisor/arch/x86/init.c @@ -47,16 +47,6 @@ static void init_debug_post(uint16_t pcpu_id) profiling_setup(); } -/*TODO: move into pass-thru module */ -static void init_passthru(void) -{ - if (init_iommu() != 0) { - panic("failed to initialize iommu!"); - } - - ptdev_init(); -} - /*TODO: move into guest-vcpu module */ static void enter_guest_mode(uint16_t pcpu_id) { @@ -81,8 +71,6 @@ static void init_primary_cpu_post(void) init_debug_post(BOOT_CPU_ID); - init_passthru(); - enter_guest_mode(BOOT_CPU_ID); }