Skip to content

[feature/patina-boot] patina_boot: Add connect-dispatch interleaving with DxeServices#1422

Merged
kat-perez merged 1 commit intoOpenDevicePartnership:feature/patina-bootfrom
kat-perez:kp/connect-dispatch-interleaving
Mar 26, 2026
Merged

[feature/patina-boot] patina_boot: Add connect-dispatch interleaving with DxeServices#1422
kat-perez merged 1 commit intoOpenDevicePartnership:feature/patina-bootfrom
kat-perez:kp/connect-dispatch-interleaving

Conversation

@kat-perez
Copy link
Copy Markdown
Contributor

@kat-perez kat-perez commented Mar 19, 2026

Description

Interleave controller connection with DXE driver dispatch during device
enumeration. Connecting controllers can discover new firmware volumes
(e.g., PCI option ROMs) that contain drivers for devices behind that
controller. Those drivers must be dispatched before the next round of
enumeration, otherwise the devices they serve will not be found.

SimpleBootManager uses interleave_connect_and_dispatch() to alternate
between connecting controllers and dispatching newly-discovered drivers
until both stabilize. The DxeDispatch service trait (from #1421) is
consumed via dependency injection.

Note: interleave_connect_and_dispatch() currently uses connect_all()
which connects every controller on every round. This is functional but
inefficient for platforms with large device topologies — a future
optimization could connect only newly-discovered controllers.

  • Impacts functionality?
  • Impacts security?
  • Breaking change?
  • Includes tests?
  • Includes documentation?

How This Was Tested

  • Built SBSA DXE core binary with BootDispatcher + SimpleBootManager replacing TianoCore BdsDxe
  • Booted Windows ARM64 under QEMU SBSA-ref emulation with Patina BDS handling the full boot flow
  • Verified interleaving: controller connection discovered AHCI device, partial device path expanded to full path, Windows bootloader loaded, ExitBootServices completed

Integration Instructions

Depends on #1421 (DxeDispatch service trait) for platform binary integration.

Remove TianoCore BdsDxe.inf from platform DSC/FDF since the BootDispatcher provides the BDS architectural protocol.

@patina-automation
Copy link
Copy Markdown
Contributor

patina-automation Bot commented Mar 19, 2026

✅ QEMU Validation Passed

All QEMU validation jobs completed successfully.

Note: Q35 is only built on Windows hosts (QEMU boot is disabled due to a QEMU vfat issue).

Workflow run: https://github.com/OpenDevicePartnership/patina/actions/runs/23599996750

Boot Time to EFI Shell

Platform Elapsed
Q35 (Linux Host) 25.8s
SBSA (Linux Host) 35.7s

Dependencies

Repository Ref
patina 7f4af87
patina-dxe-core-qemu 4f98fff
patina-fw-patcher 3b8900d
patina-qemu firmware v2.0.0
patina-qemu build script da1e895

This comment was automatically generated by the Patina QEMU PR Validation Post workflow.

@github-actions github-actions Bot added the impact:testing Affects testing label Mar 19, 2026
@kat-perez kat-perez changed the title patina_boot: Add connect-dispatch interleaving with DxeServices [feature/patina-boot] patina_boot: Add connect-dispatch interleaving with DxeServices Mar 19, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 19, 2026

Codecov Report

❌ Patch coverage is 98.68421% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
components/patina_boot/src/boot_dispatcher.rs 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@kat-perez kat-perez force-pushed the kp/connect-dispatch-interleaving branch 5 times, most recently from a0927b6 to 604e4db Compare March 24, 2026 20:16
@kat-perez kat-perez force-pushed the feature/patina-boot branch from 65c2d6a to aa4d81a Compare March 24, 2026 22:34
@kat-perez kat-perez force-pushed the kp/connect-dispatch-interleaving branch from 604e4db to 3ee20c6 Compare March 24, 2026 22:38
@kat-perez kat-perez force-pushed the feature/patina-boot branch from aa4d81a to d8d67dc Compare March 24, 2026 23:32
@kat-perez kat-perez force-pushed the kp/connect-dispatch-interleaving branch from 3ee20c6 to 0b51ac7 Compare March 25, 2026 14:57
@kat-perez kat-perez marked this pull request as ready for review March 25, 2026 16:38
Comment thread components/patina_boot/README.md
Comment thread components/patina_boot/README.md Outdated
@kat-perez kat-perez force-pushed the kp/connect-dispatch-interleaving branch 4 times, most recently from 66b7354 to 78ca642 Compare March 25, 2026 19:53
@kat-perez kat-perez requested a review from os-d March 25, 2026 20:06
Comment thread components/patina_boot/src/orchestrators/simple_boot_manager.rs
Comment thread components/patina_boot/README.md Outdated
@kat-perez kat-perez force-pushed the kp/connect-dispatch-interleaving branch from 78ca642 to 7f4af87 Compare March 26, 2026 14:20
@kat-perez kat-perez merged commit f168dff into OpenDevicePartnership:feature/patina-boot Mar 26, 2026
10 checks passed
@kat-perez kat-perez deleted the kp/connect-dispatch-interleaving branch March 26, 2026 14:42
kat-perez added a commit to kat-perez/patina that referenced this pull request Apr 1, 2026
…with DxeServices (OpenDevicePartnership#1422)

## Description

Interleave controller connection with DXE driver dispatch during device
enumeration. Connecting controllers can discover new firmware volumes
(e.g., PCI option ROMs) that contain drivers for devices behind that
controller. Those drivers must be dispatched before the next round of
enumeration, otherwise the devices they serve will not be found.

`SimpleBootManager` uses `interleave_connect_and_dispatch()` to
alternate
between connecting controllers and dispatching newly-discovered drivers
until both stabilize. The `DxeDispatch` service trait (from OpenDevicePartnership#1421) is
consumed via dependency injection.

Note: `interleave_connect_and_dispatch()` currently uses `connect_all()`
which connects every controller on every round. This is functional but
inefficient for platforms with large device topologies — a future
optimization could connect only newly-discovered controllers.

- [x] Impacts functionality?
- [ ] Impacts security?
- [ ] Breaking change?
- [x] Includes tests?
- [ ] Includes documentation?

## How This Was Tested

- Built SBSA DXE core binary with `BootDispatcher` + `SimpleBootManager`
replacing TianoCore BdsDxe
- Booted Windows ARM64 under QEMU SBSA-ref emulation with Patina BDS
handling the full boot flow
- Verified interleaving: controller connection discovered AHCI device,
partial device path expanded to full path, Windows bootloader loaded,
ExitBootServices completed

## Integration Instructions

Depends on OpenDevicePartnership#1421 (`DxeDispatch` service trait) for platform binary
integration.

Remove TianoCore `BdsDxe.inf` from platform DSC/FDF since the
`BootDispatcher` provides the BDS architectural protocol.
kat-perez added a commit that referenced this pull request Apr 1, 2026
…with DxeServices (#1422)

## Description

Interleave controller connection with DXE driver dispatch during device
enumeration. Connecting controllers can discover new firmware volumes
(e.g., PCI option ROMs) that contain drivers for devices behind that
controller. Those drivers must be dispatched before the next round of
enumeration, otherwise the devices they serve will not be found.

`SimpleBootManager` uses `interleave_connect_and_dispatch()` to
alternate
between connecting controllers and dispatching newly-discovered drivers
until both stabilize. The `DxeDispatch` service trait (from #1421) is
consumed via dependency injection.

Note: `interleave_connect_and_dispatch()` currently uses `connect_all()`
which connects every controller on every round. This is functional but
inefficient for platforms with large device topologies — a future
optimization could connect only newly-discovered controllers.

- [x] Impacts functionality?
- [ ] Impacts security?
- [ ] Breaking change?
- [x] Includes tests?
- [ ] Includes documentation?

## How This Was Tested

- Built SBSA DXE core binary with `BootDispatcher` + `SimpleBootManager`
replacing TianoCore BdsDxe
- Booted Windows ARM64 under QEMU SBSA-ref emulation with Patina BDS
handling the full boot flow
- Verified interleaving: controller connection discovered AHCI device,
partial device path expanded to full path, Windows bootloader loaded,
ExitBootServices completed

## Integration Instructions

Depends on #1421 (`DxeDispatch` service trait) for platform binary
integration.

Remove TianoCore `BdsDxe.inf` from platform DSC/FDF since the
`BootDispatcher` provides the BDS architectural protocol.
kat-perez added a commit that referenced this pull request Apr 14, 2026
…with DxeServices (#1422)

## Description

Interleave controller connection with DXE driver dispatch during device
enumeration. Connecting controllers can discover new firmware volumes
(e.g., PCI option ROMs) that contain drivers for devices behind that
controller. Those drivers must be dispatched before the next round of
enumeration, otherwise the devices they serve will not be found.

`SimpleBootManager` uses `interleave_connect_and_dispatch()` to
alternate
between connecting controllers and dispatching newly-discovered drivers
until both stabilize. The `DxeDispatch` service trait (from #1421) is
consumed via dependency injection.

Note: `interleave_connect_and_dispatch()` currently uses `connect_all()`
which connects every controller on every round. This is functional but
inefficient for platforms with large device topologies — a future
optimization could connect only newly-discovered controllers.

- [x] Impacts functionality?
- [ ] Impacts security?
- [ ] Breaking change?
- [x] Includes tests?
- [ ] Includes documentation?

## How This Was Tested

- Built SBSA DXE core binary with `BootDispatcher` + `SimpleBootManager`
replacing TianoCore BdsDxe
- Booted Windows ARM64 under QEMU SBSA-ref emulation with Patina BDS
handling the full boot flow
- Verified interleaving: controller connection discovered AHCI device,
partial device path expanded to full path, Windows bootloader loaded,
ExitBootServices completed

## Integration Instructions

Depends on #1421 (`DxeDispatch` service trait) for platform binary
integration.

Remove TianoCore `BdsDxe.inf` from platform DSC/FDF since the
`BootDispatcher` provides the BDS architectural protocol.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

impact:testing Affects testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants