diff --git a/Cargo.toml b/Cargo.toml index 3d6aed15f6..323a7d2976 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,6 +81,7 @@ default = [ "acpi", #"debugger", "multi_core", + # "numa", "serial_debug", "self_modifying", "x86_kvm_pv", @@ -95,6 +96,7 @@ self_modifying = [] acpi = [] lpss_debug = [] multi_core = ["acpi"] +numa = ["multi_core"] profiling = [] #TODO: remove when threading issues are fixed pti = [] diff --git a/src/acpi/mod.rs b/src/acpi/mod.rs index fbff6723ba..990bf045c6 100644 --- a/src/acpi/mod.rs +++ b/src/acpi/mod.rs @@ -20,11 +20,11 @@ mod rsdp; mod rsdt; mod rxsdt; pub mod sdt; -#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))] +#[cfg(feature = "numa")] pub mod slit; #[cfg(target_arch = "aarch64")] mod spcr; -#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))] +#[cfg(feature = "numa")] pub mod srat; mod xsdt; diff --git a/src/main.rs b/src/main.rs index 8380e02f94..23a60c006a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,6 +69,7 @@ mod log; mod memory; /// NUMA support +#[cfg(feature = "numa")] mod numa; /// Panic diff --git a/src/numa.rs b/src/numa.rs index c490c3d7d8..d0cae5fef3 100644 --- a/src/numa.rs +++ b/src/numa.rs @@ -1,9 +1,5 @@ -#[cfg(all( - feature = "acpi", - any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64") -))] -use crate::acpi; use crate::{ + acpi, cpu_set::LogicalCpuId, sync::{CleanLockToken, Mutex, L0}, }; @@ -41,10 +37,7 @@ pub fn init() { NUMA_NODES.call_once(|| HashMap::new()); let mut flag = false; - #[cfg(all( - feature = "acpi", - any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64") - ))] + #[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))] { acpi::srat::init(); acpi::slit::init(); diff --git a/src/percpu.rs b/src/percpu.rs index 461dca1d42..f93fa40f3e 100644 --- a/src/percpu.rs +++ b/src/percpu.rs @@ -19,7 +19,6 @@ use crate::{ }, cpu_set::{LogicalCpuId, MAX_CPU_COUNT}, cpu_stats::{CpuStats, CpuStatsData}, - numa::NumaNode, ptrace::Session, syscall::debug::SyscallDebugInfo, }; diff --git a/src/startup/mod.rs b/src/startup/mod.rs index f2e48cfe8c..0ea4274a36 100644 --- a/src/startup/mod.rs +++ b/src/startup/mod.rs @@ -9,11 +9,13 @@ use crate::{ arch::interrupt, context::{self, switch::SwitchResult}, memory::{PhysicalAddress, RmmA, RmmArch}, - numa::{self, NUMA_NODES}, profiling, scheme, sync::CleanLockToken, }; +#[cfg(feature = "numa")] +use crate::numa; + pub mod memory; #[repr(C, packed(8))] @@ -187,6 +189,7 @@ pub(crate) fn kmain(bootstrap: Bootstrap) -> ! { } } + #[cfg(feature = "numa")] numa::init(); run_userspace(&mut token)