mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-28 03:43:23 +00:00
Ignore unusable regions for max_paddr
This commit is contained in:
@ -53,6 +53,7 @@ use log::info;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
arch::mm::PagingConsts,
|
arch::mm::PagingConsts,
|
||||||
|
boot::memory_region::MemoryRegionType,
|
||||||
const_assert,
|
const_assert,
|
||||||
mm::{
|
mm::{
|
||||||
frame::allocator::{self, EarlyAllocatedFrameMeta},
|
frame::allocator::{self, EarlyAllocatedFrameMeta},
|
||||||
@ -451,7 +452,12 @@ impl_frame_meta_for!(MetaPageMeta);
|
|||||||
pub(crate) unsafe fn init() -> Segment<MetaPageMeta> {
|
pub(crate) unsafe fn init() -> Segment<MetaPageMeta> {
|
||||||
let max_paddr = {
|
let max_paddr = {
|
||||||
let regions = &crate::boot::EARLY_INFO.get().unwrap().memory_regions;
|
let regions = &crate::boot::EARLY_INFO.get().unwrap().memory_regions;
|
||||||
regions.iter().map(|r| r.base() + r.len()).max().unwrap()
|
regions
|
||||||
|
.iter()
|
||||||
|
.filter(|r| r.typ() == MemoryRegionType::Usable)
|
||||||
|
.map(|r| r.base() + r.len())
|
||||||
|
.max()
|
||||||
|
.unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
info!(
|
info!(
|
||||||
@ -567,8 +573,11 @@ macro_rules! mark_ranges {
|
|||||||
fn mark_unusable_ranges() {
|
fn mark_unusable_ranges() {
|
||||||
let regions = &crate::boot::EARLY_INFO.get().unwrap().memory_regions;
|
let regions = &crate::boot::EARLY_INFO.get().unwrap().memory_regions;
|
||||||
|
|
||||||
for region in regions.iter() {
|
for region in regions
|
||||||
use crate::boot::memory_region::MemoryRegionType;
|
.iter()
|
||||||
|
.rev()
|
||||||
|
.skip_while(|r| r.typ() != MemoryRegionType::Usable)
|
||||||
|
{
|
||||||
match region.typ() {
|
match region.typ() {
|
||||||
MemoryRegionType::BadMemory => mark_ranges!(region, UnusableMemoryMeta),
|
MemoryRegionType::BadMemory => mark_ranges!(region, UnusableMemoryMeta),
|
||||||
MemoryRegionType::Unknown => mark_ranges!(region, UnusableMemoryMeta),
|
MemoryRegionType::Unknown => mark_ranges!(region, UnusableMemoryMeta),
|
||||||
|
Reference in New Issue
Block a user