openhcl_boot/host_params/
mod.rs1use crate::cmdline::BootCommandLineOptions;
8use crate::host_params::shim_params::IsolationType;
9use arrayvec::ArrayString;
10use arrayvec::ArrayVec;
11use host_fdt_parser::ComInfo;
12use host_fdt_parser::CpuEntry;
13use host_fdt_parser::GicInfo;
14use host_fdt_parser::MemoryAllocationMode;
15use host_fdt_parser::MemoryEntry;
16use host_fdt_parser::VmbusInfo;
17
18mod dt;
19mod mmio;
20pub mod shim_params;
21
22pub const MAX_CPU_COUNT: usize = 2048;
24
25pub const MAX_NUMA_NODES: usize = 64;
28
29pub const COMMAND_LINE_SIZE: usize = 0x2000;
30
31pub const MAX_VTL2_RAM_RANGES: usize = 64;
36
37const MAX_PARTITION_RAM_RANGES: usize = 1024;
39
40pub const MAX_ENTROPY_SIZE: usize = 256;
42
43#[derive(Debug)]
45pub struct PartitionInfo {
46 pub vtl2_ram: ArrayVec<MemoryEntry, MAX_VTL2_RAM_RANGES>,
51 pub partition_ram: ArrayVec<MemoryEntry, MAX_PARTITION_RAM_RANGES>,
53 pub isolation: IsolationType,
55 pub bsp_reg: u32,
58 pub cpus: ArrayVec<CpuEntry, MAX_CPU_COUNT>,
60 pub sidecar_cpu_overrides: sidecar_defs::PerCpuState,
62 pub vmbus_vtl2: VmbusInfo,
64 pub vmbus_vtl0: VmbusInfo,
66 pub cmdline: ArrayString<COMMAND_LINE_SIZE>,
68 pub com3_serial: ComInfo,
70 pub memory_allocation_mode: MemoryAllocationMode,
72 pub entropy: Option<ArrayVec<u8, MAX_ENTROPY_SIZE>>,
74 pub vtl0_alias_map: Option<u64>,
76 pub nvme_keepalive: bool,
78 pub boot_options: BootCommandLineOptions,
80
81 pub gic: Option<GicInfo>,
83 pub pmu_gsiv: Option<u32>,
85}
86
87impl PartitionInfo {
88 pub const fn new() -> Self {
90 PartitionInfo {
91 vtl2_ram: ArrayVec::new_const(),
92 partition_ram: ArrayVec::new_const(),
93 isolation: IsolationType::None,
94 bsp_reg: 0,
95 cpus: ArrayVec::new_const(),
96 sidecar_cpu_overrides: sidecar_defs::PerCpuState {
97 per_cpu_state_specified: false,
98 sidecar_starts_cpu: [true; sidecar_defs::NUM_CPUS_SUPPORTED_FOR_PER_CPU_STATE],
99 },
100 vmbus_vtl2: VmbusInfo {
101 mmio: ArrayVec::new_const(),
102 connection_id: 0,
103 },
104 vmbus_vtl0: VmbusInfo {
105 mmio: ArrayVec::new_const(),
106 connection_id: 0,
107 },
108 cmdline: ArrayString::new_const(),
109 com3_serial: ComInfo::None,
110 memory_allocation_mode: MemoryAllocationMode::Host,
111 entropy: None,
112 vtl0_alias_map: None,
113 nvme_keepalive: false,
114 boot_options: BootCommandLineOptions::new(),
115 gic: None,
116 pmu_gsiv: None,
117 }
118 }
119}