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::CpuEntry;
12use host_fdt_parser::GicInfo;
13use host_fdt_parser::MemoryAllocationMode;
14use host_fdt_parser::MemoryEntry;
15use host_fdt_parser::VmbusInfo;
16
17mod dt;
18mod mmio;
19pub mod shim_params;
20
21pub const MAX_CPU_COUNT: usize = 2048;
23
24pub const MAX_NUMA_NODES: usize = 64;
27
28pub const COMMAND_LINE_SIZE: usize = 0x2000;
29
30pub const MAX_VTL2_RAM_RANGES: usize = 64;
35
36const MAX_PARTITION_RAM_RANGES: usize = 1024;
38
39pub const MAX_ENTROPY_SIZE: usize = 256;
41
42#[derive(Debug)]
44pub struct PartitionInfo {
45 pub vtl2_ram: ArrayVec<MemoryEntry, MAX_VTL2_RAM_RANGES>,
50 pub partition_ram: ArrayVec<MemoryEntry, MAX_PARTITION_RAM_RANGES>,
52 pub isolation: IsolationType,
54 pub bsp_reg: u32,
57 pub cpus: ArrayVec<CpuEntry, MAX_CPU_COUNT>,
59 pub sidecar_cpu_overrides: sidecar_defs::PerCpuState,
61 pub vmbus_vtl2: VmbusInfo,
63 pub vmbus_vtl0: VmbusInfo,
65 pub cmdline: ArrayString<COMMAND_LINE_SIZE>,
67 pub com3_serial_available: bool,
69 pub memory_allocation_mode: MemoryAllocationMode,
71 pub entropy: Option<ArrayVec<u8, MAX_ENTROPY_SIZE>>,
73 pub vtl0_alias_map: Option<u64>,
75 pub nvme_keepalive: bool,
77 pub boot_options: BootCommandLineOptions,
79
80 pub gic: Option<GicInfo>,
82 pub pmu_gsiv: Option<u32>,
84}
85
86impl PartitionInfo {
87 pub const fn new() -> Self {
89 PartitionInfo {
90 vtl2_ram: ArrayVec::new_const(),
91 partition_ram: ArrayVec::new_const(),
92 isolation: IsolationType::None,
93 bsp_reg: 0,
94 cpus: ArrayVec::new_const(),
95 sidecar_cpu_overrides: sidecar_defs::PerCpuState {
96 per_cpu_state_specified: false,
97 sidecar_starts_cpu: [true; sidecar_defs::NUM_CPUS_SUPPORTED_FOR_PER_CPU_STATE],
98 },
99 vmbus_vtl2: VmbusInfo {
100 mmio: ArrayVec::new_const(),
101 connection_id: 0,
102 },
103 vmbus_vtl0: VmbusInfo {
104 mmio: ArrayVec::new_const(),
105 connection_id: 0,
106 },
107 cmdline: ArrayString::new_const(),
108 com3_serial_available: false,
109 memory_allocation_mode: MemoryAllocationMode::Host,
110 entropy: None,
111 vtl0_alias_map: None,
112 nvme_keepalive: false,
113 boot_options: BootCommandLineOptions::new(),
114 gic: None,
115 pmu_gsiv: None,
116 }
117 }
118}