diff --git a/ostd/src/arch/riscv/serial.rs b/ostd/src/arch/riscv/serial.rs index 6448dc0af..cc6c28956 100644 --- a/ostd/src/arch/riscv/serial.rs +++ b/ostd/src/arch/riscv/serial.rs @@ -33,6 +33,8 @@ impl Write for Stdout { /// Initializes the serial port. pub(crate) fn init() {} +pub(crate) fn callback_init() {} + /// Sends a byte on the serial port. pub fn send(data: u8) { sbi_rt::console_write_byte(data); diff --git a/ostd/src/arch/x86/mod.rs b/ostd/src/arch/x86/mod.rs index a56789576..2c1de0e86 100644 --- a/ostd/src/arch/x86/mod.rs +++ b/ostd/src/arch/x86/mod.rs @@ -41,11 +41,9 @@ use log::{info, warn}; #[cfg(feature = "cvm_guest")] pub(crate) fn init_cvm_guest() { - use ::tdx_guest::serial_println; - match init_tdx() { Ok(td_info) => { - serial_println!( + crate::early_println!( "[kernel] Intel TDX initialized\n[kernel] td gpaw: {}, td attributes: {:?}", td_info.gpaw, td_info.attributes @@ -89,7 +87,6 @@ pub(crate) unsafe fn late_init_on_bsp() { kernel::pic::enable(); } } - serial::callback_init(); kernel::tsc::init_tsc_freq(); timer::init_bsp(); diff --git a/ostd/src/console.rs b/ostd/src/console.rs index d49944c58..98b7c75e2 100644 --- a/ostd/src/console.rs +++ b/ostd/src/console.rs @@ -4,9 +4,15 @@ use core::fmt::Arguments; +use crate::if_tdx_enabled; + /// Prints formatted arguments to the console. pub fn early_print(args: Arguments) { - crate::arch::serial::print(args); + if_tdx_enabled!({ + tdx_guest::print(args); + } else { + crate::arch::serial::print(args); + }); } /// Prints to the console. diff --git a/ostd/src/lib.rs b/ostd/src/lib.rs index 2322defcd..45adfa177 100644 --- a/ostd/src/lib.rs +++ b/ostd/src/lib.rs @@ -113,6 +113,7 @@ unsafe fn init() { if_tdx_enabled!({ arch::serial::init(); }); + arch::serial::callback_init(); smp::init(); diff --git a/ostd/src/mm/frame/allocator.rs b/ostd/src/mm/frame/allocator.rs index f0d86b1b2..ee6f4d06e 100644 --- a/ostd/src/mm/frame/allocator.rs +++ b/ostd/src/mm/frame/allocator.rs @@ -10,7 +10,7 @@ use super::{meta::AnyFrameMeta, segment::Segment, Frame}; use crate::{ boot::memory_region::MemoryRegionType, error::Error, - if_tdx_enabled, impl_frame_meta_for, + impl_frame_meta_for, mm::{paddr_to_vaddr, Paddr, PAGE_SIZE}, prelude::*, util::range_difference, @@ -212,13 +212,7 @@ pub(crate) unsafe fn init() { // Truncate the early allocated frames if there is an overlap. for r1 in range_difference(&(region.base()..region.end()), &range_1) { for r2 in range_difference(&r1, &range_2) { - if_tdx_enabled!({ - use tdx_guest::serial_println; - - serial_println!("Adding free frames to the allocator: {:x?}", r2); - } else { - log::info!("Adding free frames to the allocator: {:x?}", r2); - }); + log::info!("Adding free frames to the allocator: {:x?}", r2); get_global_frame_allocator().add_free_memory(r2.start, r2.len()); } } diff --git a/ostd/src/mm/frame/meta.rs b/ostd/src/mm/frame/meta.rs index e08da8434..48639b755 100644 --- a/ostd/src/mm/frame/meta.rs +++ b/ostd/src/mm/frame/meta.rs @@ -53,7 +53,7 @@ use log::info; use crate::{ arch::mm::PagingConsts, - const_assert, if_tdx_enabled, + const_assert, mm::{ frame::allocator::{self, EarlyAllocatedFrameMeta}, kspace::LINEAR_MAPPING_BASE_VADDR, @@ -447,15 +447,10 @@ pub(crate) unsafe fn init() -> Segment { regions.iter().map(|r| r.base() + r.len()).max().unwrap() }; - if_tdx_enabled!({ - use tdx_guest::serial_println; - - serial_println!("Initializing frame metadata for physical memory up to {:x}", - max_paddr) - } else { - info!("Initializing frame metadata for physical memory up to {:x}", - max_paddr); - }); + info!( + "Initializing frame metadata for physical memory up to {:x}", + max_paddr + ); add_temp_linear_mapping(max_paddr); diff --git a/ostd/src/mm/kspace/mod.rs b/ostd/src/mm/kspace/mod.rs index 2ff5e716e..21b5a511a 100644 --- a/ostd/src/mm/kspace/mod.rs +++ b/ostd/src/mm/kspace/mod.rs @@ -59,7 +59,6 @@ use super::{ use crate::{ arch::mm::{PageTableEntry, PagingConsts}, boot::memory_region::MemoryRegionType, - if_tdx_enabled, }; /// The shortest supported address width is 39 bits. And the literal @@ -133,13 +132,7 @@ pub static KERNEL_PAGE_TABLE: Once) { - if_tdx_enabled!({ - use tdx_guest::serial_println; - - serial_println!("Initializing the kernel page table"); - } else { - info!("Initializing the kernel page table"); - }); + info!("Initializing the kernel page table"); let regions = &crate::boot::EARLY_INFO.get().unwrap().memory_regions; let phys_mem_cap = regions.iter().map(|r| r.base() + r.len()).max().unwrap();