You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #83. The orchestration integration is complete and boots Windows end-to-end on Maa hardware via runtime helpers::discover_boot_options, but #83 step 2 originally specified static device paths flowing through platform PCDs / config HOBs via MsSurfaceCorePkg/Library/PeiPatinaConfigLib. That's still ahead.
Why this matters
Boot partition path must be static + known at platform-init time so patina_sre::SreBootManager can write-lock the correct NVMe Boot Partition (currently a log::warn! stub pending Add partition write-lock helper to patina-boot #61's patina_boot::partition::lock_partition_write).
Main OS path could rely on discover_boot_options indefinitely, but a hardcoded fallback ensures recovery flows when EFI Boot#### variables are corrupted / missing / cleared.
Scope
Define a PATINA_SRE_CONFIG_HOB struct (C side) in MsSurfaceCorePkg/Include/Guid/PatinaSreConfig.h with: GUID + two EFI_DEVICE_PATH_PROTOCOL slots (boot_partition_path, main_os_path).
Extend MsSurfaceCorePkg/Library/PeiPatinaConfigLib/PeiPatinaConfigLib.c with PublishPatinaSreConfigHob().
Add a matching Rust HOB struct + parser in patina_sre (or a new platform-config submodule). Pattern follows PATINA_PERFORMANCE_CONFIG_HOB / PerformanceConfigurationProvider.
Add a Patina component in patina_sre that consumes the HOB at boot, constructs SreBootManager with the static paths, and registers it via BootDispatcher.
Update surface_patina_intel/patina_bin/bin/patina_x64.rs to register the new HOB-consuming component (replaces today's hardcoded EndEntire placeholders).
Open design questions
Boot-partition path syntax — NVMe BPs are a controller-level concept (not a namespace partition). The EFI device-path encoding for an NVMe BP target isn't standard. Options: a Surface-vendor-specific path node, or pass the NVMe controller path + a separate "bank ID" PCD.
Path source — hardcoded byte literal in C, OR build from PCDs at runtime (PCI bus/dev/fn + GPT GUID + file-path components)? The latter is more flexible across SKUs.
Follow-up to #83. The orchestration integration is complete and boots Windows end-to-end on Maa hardware via runtime
helpers::discover_boot_options, but #83 step 2 originally specified static device paths flowing through platform PCDs / config HOBs viaMsSurfaceCorePkg/Library/PeiPatinaConfigLib. That's still ahead.Why this matters
patina_sre::SreBootManagercan write-lock the correct NVMe Boot Partition (currently alog::warn!stub pending Add partition write-lock helper to patina-boot #61'spatina_boot::partition::lock_partition_write).discover_boot_optionsindefinitely, but a hardcoded fallback ensures recovery flows when EFI Boot#### variables are corrupted / missing / cleared.Scope
PATINA_SRE_CONFIG_HOBstruct (C side) inMsSurfaceCorePkg/Include/Guid/PatinaSreConfig.hwith: GUID + twoEFI_DEVICE_PATH_PROTOCOLslots (boot_partition_path, main_os_path).MsSurfaceCorePkg/Library/PeiPatinaConfigLib/PeiPatinaConfigLib.cwithPublishPatinaSreConfigHob().patina_sre(or a new platform-config submodule). Pattern followsPATINA_PERFORMANCE_CONFIG_HOB/PerformanceConfigurationProvider.patina_srethat consumes the HOB at boot, constructsSreBootManagerwith the static paths, and registers it viaBootDispatcher.surface_patina_intel/patina_bin/bin/patina_x64.rsto register the new HOB-consuming component (replaces today's hardcodedEndEntireplaceholders).Open design questions
Out of scope
patina_boot::partition::lock_partition_writehelper — tracked in Add partition write-lock helper to patina-boot #61.Refs