From ebf96fa843f7fca5299b0366eea72665de3bf7de Mon Sep 17 00:00:00 2001 From: Ivan Tan Date: Thu, 14 Dec 2023 03:34:37 +0000 Subject: [PATCH] aarch64: fix dtb scheme --- src/scheme/dtb.rs | 17 ++++------------- src/scheme/mod.rs | 4 ++++ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/scheme/dtb.rs b/src/scheme/dtb.rs index c46179400c..a37d20efec 100644 --- a/src/scheme/dtb.rs +++ b/src/scheme/dtb.rs @@ -1,7 +1,7 @@ use core::sync::atomic::{self, AtomicUsize}; use alloc::boxed::Box; -use hashbrown::HashMap; +use alloc::collections::BTreeMap; use spin::{Once, RwLock}; use crate::dtb::DTB_BINARY; @@ -30,14 +30,12 @@ struct Handle { stat: bool, } -static HANDLES: RwLock> = RwLock::new(HashMap::new()); +static HANDLES: RwLock> = RwLock::new(BTreeMap::new()); static NEXT_FD: AtomicUsize = AtomicUsize::new(0); static DATA: Once> = Once::new(); -static SCHEME_ID: Once = Once::new(); impl DtbScheme { - pub fn new(id: SchemeId) -> Self { - let mut id_init = false; + pub fn init() { let mut data_init = false; DATA.call_once(|| { @@ -51,16 +49,9 @@ impl DtbScheme { Box::from(dtb) }); - SCHEME_ID.call_once(|| { - id_init = true; - - id - }); - if !data_init || !id_init { + if !data_init { log::error!("DtbScheme::new called multiple times"); } - - Self } } diff --git a/src/scheme/mod.rs b/src/scheme/mod.rs index 6a6b261e55..68f06a69b4 100644 --- a/src/scheme/mod.rs +++ b/src/scheme/mod.rs @@ -501,5 +501,9 @@ pub fn init_globals() { { AcpiScheme::init(); } + #[cfg(target_arch = "aarch64")] + { + DtbScheme::init(); + } IrqScheme::init(); }