diff --git a/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/Cargo.toml b/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/Cargo.toml index 62f678af69..b67b76b9b7 100644 --- a/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/Cargo.toml +++ b/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/Cargo.toml @@ -10,10 +10,10 @@ path = "src/lib.rs" [dependencies] r-efi = { workspace = true } -boot_services = { workspace = true } +mu_uefi_boot_services = { workspace = true } [dev-dependencies] -boot_services = { workspace = true, features = ["mockall"] } +mu_uefi_boot_services = { workspace = true, features = ["mockall"] } [features] std = [] diff --git a/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/src/lib.rs b/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/src/lib.rs index 20777a2d74..3b66a46c65 100644 --- a/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/src/lib.rs +++ b/AdvLoggerPkg/Crates/RustAdvancedLoggerDxe/src/lib.rs @@ -102,9 +102,8 @@ impl AdvancedLogger { // initialize the AdvancedLogger by acquiring a pointer to the AdvancedLogger protocol. fn init(&self, boot_services_impl: &impl boot_services::BootServices) { - let protocol_ptr = match boot_services_impl.locate_protocol(&ADVANCED_LOGGER_PROTOCOL, None) { - Ok(Some(interface)) => interface as *mut AdvancedLoggerProtocolInterface, - Ok(None) => ptr::null_mut(), + let protocol_ptr = match unsafe { boot_services_impl.locate_protocol(&ADVANCED_LOGGER_PROTOCOL, None) } { + Ok(interface) => interface as *mut AdvancedLoggerProtocolInterface, Err(_status) => ptr::null_mut(), }; @@ -289,12 +288,10 @@ mod tests { let mut mock_boot_services = boot_services::MockBootServices::new(); mock_boot_services.expect_locate_protocol().returning(|_: &AdvancedLoggerProtocol, registration| unsafe { assert_eq!(registration, None); - Ok(Some( - (&ADVANCED_LOGGER_INSTANCE as *const AdvancedLoggerProtocolInterface - as *mut AdvancedLoggerProtocolInterface) - .as_mut() - .unwrap(), - )) + Ok((&ADVANCED_LOGGER_INSTANCE as *const AdvancedLoggerProtocolInterface + as *mut AdvancedLoggerProtocolInterface) + .as_mut() + .unwrap()) }); static TEST_LOGGER: AdvancedLogger = AdvancedLogger::new(); TEST_LOGGER.init(&mock_boot_services); @@ -309,12 +306,10 @@ mod tests { let mut mock_boot_services = boot_services::MockBootServices::new(); mock_boot_services.expect_locate_protocol().returning(|_: &AdvancedLoggerProtocol, registration| unsafe { assert_eq!(registration, None); - Ok(Some( - (&ADVANCED_LOGGER_INSTANCE as *const AdvancedLoggerProtocolInterface - as *mut AdvancedLoggerProtocolInterface) - .as_mut() - .unwrap(), - )) + Ok((&ADVANCED_LOGGER_INSTANCE as *const AdvancedLoggerProtocolInterface + as *mut AdvancedLoggerProtocolInterface) + .as_mut() + .unwrap()) }); LOGGER.init(&mock_boot_services); diff --git a/Cargo.toml b/Cargo.toml index 1812042608..62916677e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,15 +13,15 @@ members = [ # Add packages that generate libraries here [workspace.dependencies] -RustAdvancedLoggerDxe = {path = "AdvLoggerPkg/Crates/RustAdvancedLoggerDxe"} -RustBootServicesAllocatorDxe = {path = "MsCorePkg/Crates/RustBootServicesAllocatorDxe"} HidIo = {path = "HidPkg/Crates/HidIo"} -hidparser = {git = "https://github.com/microsoft/mu_rust_hid.git", branch = "main"} +hidparser = {version = "1"} HiiKeyboardLayout = {path = "HidPkg/Crates/HiiKeyboardLayout"} -mu_pi = {git = "https://github.com/microsoft/mu_rust_pi.git", tag = "v5.1.0"} -mu_rust_helpers = { git = "https://github.com/microsoft/mu_rust_helpers.git", tag = "v1.2.1" } -boot_services = { git = "https://github.com/microsoft/mu_rust_helpers.git", tag = "v1.2.1" } +mu_pi = {version = "5"} +mu_rust_helpers = { version = "2" } MuTelemetryHelperLib = {path = "MsWheaPkg/Crates/MuTelemetryHelperLib"} +RustAdvancedLoggerDxe = {path = "AdvLoggerPkg/Crates/RustAdvancedLoggerDxe"} +RustBootServicesAllocatorDxe = {path = "MsCorePkg/Crates/RustBootServicesAllocatorDxe"} +mu_uefi_boot_services = { version = "2" } memoffset = "0.9.0" num-traits = { version = "0.2", default-features = false} diff --git a/MsWheaPkg/Crates/MuTelemetryHelperLib/Cargo.toml b/MsWheaPkg/Crates/MuTelemetryHelperLib/Cargo.toml index 62acf388ad..0d9428e9cb 100644 --- a/MsWheaPkg/Crates/MuTelemetryHelperLib/Cargo.toml +++ b/MsWheaPkg/Crates/MuTelemetryHelperLib/Cargo.toml @@ -8,14 +8,14 @@ name = "mu_telemetry_helper_lib" path = "src/lib.rs" [dependencies] -boot_services = { workspace = true } mu_pi = { workspace = true } mu_rust_helpers = { workspace = true } r-efi = { workspace = true } +mu_uefi_boot_services = { workspace = true } [dev-dependencies] -boot_services = { workspace = true, features = ["mockall"] } mockall = { version = "0.13.0" } +mu_uefi_boot_services = { workspace = true, features = ["mockall"] } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin_include)'] } diff --git a/MsWheaPkg/Crates/MuTelemetryHelperLib/src/lib.rs b/MsWheaPkg/Crates/MuTelemetryHelperLib/src/lib.rs index 826c59cf7c..84e1605205 100644 --- a/MsWheaPkg/Crates/MuTelemetryHelperLib/src/lib.rs +++ b/MsWheaPkg/Crates/MuTelemetryHelperLib/src/lib.rs @@ -201,11 +201,9 @@ mod test { mock_boot_services.expect_locate_protocol().returning(|_: &StatusCodeRuntimeProtocol, registration| unsafe { assert_eq!(registration, None); - Ok(Some( - (&MOCK_STATUS_CODE_RUNTIME_INTERFACE as *const status_code::Protocol as *mut status_code::Protocol) - .as_mut() - .unwrap(), - )) + Ok((&MOCK_STATUS_CODE_RUNTIME_INTERFACE as *const status_code::Protocol as *mut status_code::Protocol) + .as_mut() + .unwrap()) }); // Test sizes of "repr(C)" structs @@ -249,7 +247,7 @@ mod test { mock_boot_services.expect_locate_protocol().returning(|_: &StatusCodeRuntimeProtocol, registration| { assert_eq!(registration, None); //Simulate "marker protocol" without an Interface - Ok(None) + Err(efi::Status::NOT_FOUND) }); assert_eq!( Err(efi::Status::NOT_FOUND), diff --git a/MsWheaPkg/Crates/MuTelemetryHelperLib/src/status_code_runtime.rs b/MsWheaPkg/Crates/MuTelemetryHelperLib/src/status_code_runtime.rs index 5f146c55d5..728caf48cb 100644 --- a/MsWheaPkg/Crates/MuTelemetryHelperLib/src/status_code_runtime.rs +++ b/MsWheaPkg/Crates/MuTelemetryHelperLib/src/status_code_runtime.rs @@ -56,10 +56,7 @@ impl ReportStatusCode for StatusCodeRuntimeProtocol { data_type: efi::Guid, data: T, ) -> Result<(), efi::Status> { - let protocol = boot_services.locate_protocol(&StatusCodeRuntimeProtocol, None)?; - if protocol.is_none() { - return Err(efi::Status::NOT_FOUND); - } + let protocol = unsafe { boot_services.locate_protocol(&StatusCodeRuntimeProtocol, None)? }; let header_size = mem::size_of::(); let data_size = mem::size_of::(); @@ -73,8 +70,7 @@ impl ReportStatusCode for StatusCodeRuntimeProtocol { let caller_id = caller_id.or(Some(&guid::CALLER_ID)).unwrap(); - let status = - (protocol.unwrap().report_status_code)(status_code_type, status_code_value, instance, caller_id, data_ptr); + let status = (protocol.report_status_code)(status_code_type, status_code_value, instance, caller_id, data_ptr); if status.is_error() { Err(status) diff --git a/MsWheaPkg/MsWheaPkg.ci.yaml b/MsWheaPkg/MsWheaPkg.ci.yaml index 6fcb494d59..ec9bf7515b 100644 --- a/MsWheaPkg/MsWheaPkg.ci.yaml +++ b/MsWheaPkg/MsWheaPkg.ci.yaml @@ -86,8 +86,15 @@ "PREVERR", "malformatted", "Subcomponent", - + ], "AdditionalIncludePaths": [] # Additional paths to spell check relative to package root (wildcards supported) + }, + + "RustHostUnitTestPlugin": { + "Coverage": .75, + "CoverageOverrides": { + "MuTelemetryHelperLib": 0.7 + } } } \ No newline at end of file