#[repr(u16)]pub enum BootDiagnosticFlags {
Show 16 variants
RegionSearched = 1,
InvalidBlockLoop = 2,
ValidBlockLoop = 4,
ValidImageDef = 8,
HasPartitionTable = 16,
Considered = 32,
Chosen = 64,
PartitionTableMatchingKeyForVerify = 128,
PartitionTableHashForVerify = 256,
PartitionTableVerifiedOk = 512,
ImageDefMatchingKeyForVerify = 1_024,
ImageDefHashForVerify = 2_048,
ImageDefVerifiedOk = 4_096,
LoadMapEntriesLoaded = 8_192,
ImageLaunched = 16_384,
ImageConditionFailure = 32_768,
}Expand description
Diagnostic flags reported by the upper and lower words in BootInfo::boot_diagnostic
Variants§
RegionSearched = 1
The region was searched for a block loop
InvalidBlockLoop = 2
A block loop was found but it was invalid
ValidBlockLoop = 4
A valid block loop was found (Blocks from a loop wholly contained within the region, and the blocks have the correct structure. Each block consists of items whose sizes sum to the size of the block)
ValidImageDef = 8
A valid IMAGE_DEF was found in the region. A valid IMAGE_DEF must parse correctly and must be executable
HasPartitionTable = 16
Whether a partition table is present. This partition table must have a correct structure
formed if BootDiagnosticFlags::ValidBlockLoop is set. If the partition table turns
out to be invalid, then BootDiagnosticFlags::InvalidBlockLoop is set too (thus both
BootDiagnosticFlags::ValidBlockLoop and BootDiagnosticFlags::InvalidBlockLoop
will both be set)
Considered = 32
There was a choice of partition/slot and this one was considered. The first slot/partition is chosen based on a number of factors. If the first choice fails verification, then the other choice will be considered.
- the version of the PARTITION_TABLE/IMAGE_DEF present in the slot/partition respectively.
- whether the slot/partition is the “update region” as per a FLASH_UPDATE reboot.
- whether an IMAGE_DEF is marked as “explicit buy”
Chosen = 64
This slot/partition was chosen (or was the only choice)
PartitionTableMatchingKeyForVerify = 128
if a signature is required for the PARTITION_TABLE (via OTP setting), then whether the PARTITION_TABLE is signed with a key matching one of the four stored in OTP
PartitionTableHashForVerify = 256
set if a hash value check could be performed. In the case a signature is required, this
value is identical to BootDiagnosticFlags::PartitionTableMatchingKeyForVerify
PartitionTableVerifiedOk = 512
whether the PARTITION_TABLE passed verification (signature/hash if present/required)
ImageDefMatchingKeyForVerify = 1_024
if a signature is required for the IMAGE_DEF due to secure boot, then whether the IMAGE_DEF is signed with a key matching one of the four stored in OTP
ImageDefHashForVerify = 2_048
set if a hash value check could be performed. In the case a signature is required, this
value is identical to BootDiagnosticFlags::ImageDefMatchingKeyForVerify
ImageDefVerifiedOk = 4_096
whether the PARTITION_TABLE passed verification (signature/hash if present/required) and any LOAD_MAP is valid
LoadMapEntriesLoaded = 8_192
whether any code was copied into RAM due to a LOAD_MAP
ImageLaunched = 16_384
whether an IMAGE_DEF from this region was launched
ImageConditionFailure = 32_768
whether the IMAGE_DEF failed final checks before launching; these checks include
- verification failed (if it hasn’t been verified earlier in the CONSIDERED phase).
- a problem occurred setting up any rolling window.
- the rollback version could not be set in OTP (if required in Secure mode)
- the image was marked as Non-secure
- the image was marked as “explicit buy”, and this was a flash boot, but then region was not the “flash update” region
- the image has the wrong architecture, but architecture auto-switch is disabled (or the correct architecture is disabled)
Auto Trait Implementations§
impl Freeze for BootDiagnosticFlags
impl RefUnwindSafe for BootDiagnosticFlags
impl Send for BootDiagnosticFlags
impl Sync for BootDiagnosticFlags
impl Unpin for BootDiagnosticFlags
impl UnwindSafe for BootDiagnosticFlags
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more