Refactor Xlat error handling
Updating XlatError variants and change it to use thiserror. Handle
allocation errors when allocating pages for translation tables.
Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I6b039d4c6c8481e66ccb838514053e9dc8d99e1c
diff --git a/src/block.rs b/src/block.rs
index e80617b..59613a6 100644
--- a/src/block.rs
+++ b/src/block.rs
@@ -3,9 +3,6 @@
use core::fmt;
-use alloc::format;
-use alloc::string::ToString;
-
use super::{
address::{PhysicalAddress, VirtualAddress},
TranslationGranule, XlatError,
@@ -51,16 +48,11 @@
let min_granule_mask = granule.block_size_at_level(3) - 1;
if length == 0 {
- return Err(XlatError::InvalidParameterError(
- "Length cannot be 0".to_string(),
- ));
+ return Err(XlatError::InvalidParameterError("Length cannot be 0"));
}
if (pa.0 | va.0 | length) & min_granule_mask != 0 {
- return Err(XlatError::InvalidParameterError(format!(
- "Addresses and length must be aligned {:#08x} {:#08x} {:#x} {:#x}",
- pa.0, va.0, length, min_granule_mask
- )));
+ return Err(XlatError::AlignmentError(pa, va, length, min_granule_mask));
}
Ok(Self {