Commit 45b4eba
committed
ci: fix aarch64 firmware crash with multiple PCI segments
The aarch64 UEFI firmware uses FdtPciHostBridgeLib
to discover PCI host bridges from the device tree.
This library asserts that only one pci-host-ecam-
generic FDT node exists. Cloud-hypervisor generates
one node per PCI segment, so when we launch a guest
with num_pci_segments > 1 the DEBUG firmware hits
the assert and terminates.
Switch both x64 and aarch64 builds from DEBUG to
RELEASE where the assert is compiled out.
FdtPciHostBridgeLib only enumerates the first PCI
host bridge (segment 0) regardless of build type.
Segments 1-95 are not visible to UEFI. This is not
a functional problem because:
- Cloud-hypervisor provides ACPI tables (MCFG,
DSDT) describing all segments directly to the
guest via CloudHvAcpiPlatformDxe
- The Linux kernel re-enumerates PCI from the
MCFG table and assigns BARs independently
- Boot devices (virtio-blk, virtio-net) reside
on segment 0 which UEFI does enumerate
Signed-off-by: Saravanan D <saravanand@crusoe.ai>1 parent 13b4963 commit 45b4eba
1 file changed
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
0 commit comments