@@ -346,7 +346,7 @@ where
346
346
let dsdt_address = fadt. dsdt_address ( ) ?;
347
347
let dsdt = unsafe { read_table :: < H , Dsdt > ( self . handler . clone ( ) , dsdt_address) ? } ;
348
348
349
- Ok ( AmlTable :: new ( dsdt_address, dsdt. header ( ) . length ) )
349
+ Ok ( AmlTable :: new ( dsdt_address, dsdt. header ( ) . length , dsdt . header ( ) . revision ) )
350
350
} )
351
351
}
352
352
@@ -393,14 +393,16 @@ pub struct AmlTable {
393
393
pub address : usize ,
394
394
/// Length (in bytes) of the AML stream.
395
395
pub length : u32 ,
396
+ pub revision : u8 ,
396
397
}
397
398
398
399
impl AmlTable {
399
400
/// Create an `AmlTable` from the address and length of the table **including the SDT header**.
400
- pub ( crate ) fn new ( address : usize , length : u32 ) -> AmlTable {
401
+ pub ( crate ) fn new ( address : usize , length : u32 , revision : u8 ) -> AmlTable {
401
402
AmlTable {
402
403
address : address + mem:: size_of :: < SdtHeader > ( ) ,
403
404
length : length - mem:: size_of :: < SdtHeader > ( ) as u32 ,
405
+ revision,
404
406
}
405
407
}
406
408
}
@@ -458,7 +460,11 @@ where
458
460
self . tables_phys_ptrs . find_map ( |table_phys_ptr| {
459
461
// SAFETY: Table guarantees its contained addresses to be valid.
460
462
match unsafe { read_table :: < _ , Ssdt > ( handler. clone ( ) , table_phys_ptr as usize ) } {
461
- Ok ( ssdt_mapping) => Some ( AmlTable :: new ( ssdt_mapping. physical_start ( ) , ssdt_mapping. header . length ) ) ,
463
+ Ok ( ssdt_mapping) => Some ( AmlTable :: new (
464
+ ssdt_mapping. physical_start ( ) ,
465
+ ssdt_mapping. header . length ,
466
+ ssdt_mapping. header . revision ,
467
+ ) ) ,
462
468
Err ( AcpiError :: SdtInvalidSignature ( _) ) => None ,
463
469
Err ( e) => {
464
470
log:: warn!( "Found invalid SSDT at physical address {:p}: {:?}" , table_phys_ptr, e) ;
0 commit comments