ZXFoundation™ 26h2
Loading...
Searching...
No Matches
arch.s390x.init.zxfl.protocol Module Reference

Data Structures

struct  arch::s390x::init::zxvl::checksum_entry
struct  arch::s390x::init::zxvl::checksum_table
struct  arch::s390x::init::zxfl::cpu_info
 One entry in the CPU map. More...
struct  arch::s390x::init::zxfl::ecag_info
 ECAG CPU attributes. More...
struct  arch::s390x::init::zxfl::mem_region
 One entry in the physical memory map. More...
struct  arch::s390x::init::zxfl::protocol
 ZXFoundationLoader boot protocol. (C++-ify). More...
struct  arch::s390x::init::zxfl::sclp_info
 SCLP facility info detected by loader. More...
struct  arch::s390x::init::zxfl::sysmodule
 System Modules - (sysmodule=N in parmfile). More...
struct  arch::s390x::init::zxfl::systeminfo
 System identification — populated from STSI (EBCDIC converted to ASCII by loader). More...

Functions

constexpr auto arch::s390x::init::zxvl::compute_token (u64 stfle0, u64 schid) noexcept -> u64
auto arch::s390x::init::zxfl::cpu_state_str (u8 state) noexcept -> std::string_view
 Pretty-print a ZXFL CPU state.
auto arch::s390x::init::zxfl::cpu_type_str (u8 type) noexcept -> std::string_view
 Pretty-print a ZXFL CPU type.
auto arch::s390x::init::zxfl::mem_type_str (u32 type) noexcept -> std::string_view
 Pretty-print a ZXFL memory region type.

Variables

u8 _pad [3] {}
u32 _pad0 {}
u32 _pad0 {}
u8 _pad1 [9] {}
u32 _pad1 {}
u32 _pad2 {}
u8 _pad3 [3] {}
u32 _pad4 {}
u32 _pad6 {}
u16 _pad7 {}
u32 _pad8 {}
u32 algo {}
u64 base {}
u64 binding_token {}
u8 book_id {}
u16 bsp_cpu_addr {}
u32 cache_associativity {}
u32 cache_line_size {}
u32 cache_total_size {}
u32 capability {}
u8 capacity {}
u64 cksum_table {}
u64 cmdline_addr {}
 HHDM virtual address of NUL-terminated cmdline.
u32 cmdline_len {}
u8 core_id {}
u16 core_id {}
u32 count {}
u16 cpu_addr {}
u32 cpu_count {}
cpu_info cpu_map [ZXFL_CPU_MAP_MAX] {}
u16 cpus_configured {}
u16 cpus_reserved {}
u16 cpus_standby {}
u16 cpus_total {}
u64 cr0_snapshot {}
u64 cr13_snapshot {}
u64 cr1_snapshot {}
u8 digest [crypto::sha256::SHA256_DIGEST_SIZE] {}
u8 drawer_id {}
u64 ecag_info_addr {}
 HHDM virt addr of ecag_info struct.
checksum_entry entries [ZXVL_CKSUM_MAX_ENTRIES] {}
u64 facilities {}
u32 feature_bits {}
u32 flags {}
u64 hamax {}
u64 hhdm_phys_coverage_end {}
 Exclusive physical end covered by initial HHDM DAT.
u64 hmfai {}
u64 hsa_size {}
u32 ibc {}
u16 ipl_dev_model {}
u16 ipl_dev_type {}
u32 ipl_schid {}
constexpr auto arch::s390x::init::zxfl::IPL_TYPE_CCW = 0U
 IPL type values for ipl_info::ipl_type.
constexpr auto arch::s390x::init::zxfl::IPL_TYPE_ECKD = 2U
constexpr auto arch::s390x::init::zxfl::IPL_TYPE_FCP = 1U
constexpr auto arch::s390x::init::zxfl::IPL_TYPE_NVME = 3U
constexpr auto arch::s390x::init::zxfl::IPL_TYPE_UNKNOWN = 0xFFU
u64 kernel_entry {}
 Entry point (HHDM virtual address).
u64 kernel_phys_end {}
u64 kernel_phys_start {}
u64 kernel_stack_top {}
 HHDM virtual address of initial stack top.
u64 length {}
u64 loader_build_id {}
u8 loader_digest [32] {}
 SHA-256 of stage2 .text+.rodata+.data. Verified by kernel.
u16 loader_major {}
u16 loader_minor {}
u32 loader_timestamp {}
u64 lock_phys {}
 HHDM virtual address of the structural lock segment (converted by mmu.c).
u64 lowcore_phys {}
 Physical address of the BSP lowcore prefix area (always 0x0).
u32 lpar_caf {}
u8 lpar_characteristics {}
u16 lpar_cpus_dedicated {}
u16 lpar_cpus_shared {}
u8 lpar_mt_gtid {}
u8 lpar_mt_installed {}
u8 lpar_mt_stid {}
char lpar_name [8] {}
u16 lpar_number {}
u8 lpar_uuid [16] {}
u8 lpar_vsne {}
u32 magic {}
u32 magic {}
char manufacturer [16] {}
u32 max_cores {}
u8 mem_detect_source {}
 0=none, 1=SCLP, 2=DIAG260, 3=TPROT
u64 mem_map_addr {}
 HHDM virtual address of mem_region[].
u32 mem_map_count {}
u64 mem_total_bytes {}
char model [16] {}
u32 model_cap_rating {}
char model_capacity [16] {}
char model_perm_cap [16] {}
u32 model_perm_cap_rating {}
char model_temp_cap [16] {}
u32 model_temp_cap_rating {}
char model_var_cap [16] {}
u32 model_var_cap_rating {}
u32 module_count {}
sysmodule modules [16]
u32 mtid {}
u32 mtid_cp {}
char name [32] {}
u32 ncr {}
u32 nominal_cap {}
u32 npr {}
u32 ntr {}
u8 numa_node {}
u16 numa_node {}
u8 numa_node {}
u32 nvr {}
u64 pgtbl_pool_end {}
 Physical end (exclusive) of the loader's page-table bump pool. The kernel PMM must not allocate from [kernel_phys_end, pgtbl_pool_end).
u64 phys_start {}
 Physical start of module.
u64 phys_start {}
char plant [4] {}
u64 rnmax {}
u64 rzm {}
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_CEI = 5U
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_GPERF = 3U
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_IB = 4U
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_SIEF2 = 0U
 SCLP feature bit indices for sclp_info::feature_bits.
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_SIGPIF = 2U
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_SIIF = 1U
constexpr auto arch::s390x::init::zxfl::SCLP_FEAT_SKEY = 6U
u64 sclp_info_addr {}
 HHDM virt addr of sclp_info struct.
u32 secondary_cap {}
char sequence [16] {}
u64 size {}
u64 size_bytes {}
u8 smt_id {}
u8 smt_id {}
u8 socket_id {}
u16 socket_id {}
u8 state {}
u32 stfle_count {}
u64 stfle_fac [cpu::features::STFLE_MAX_DWORDS] {}
systeminfo sysinfo
u64 tod_boot {}
u8 topology_evidence {}
u8 type {}
u32 type {}
char type [4] {}
u8 typepct [5] {}
u32 version {}
u32 version {}
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_EVIDENCE_FALLBACK = 0x04U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_EVIDENCE_NONE = 0x00U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_EVIDENCE_SIGP = 0x01U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_EVIDENCE_STSI = 0x02U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_MAP_MAX = zxfoundation::base::config::CONFIG_ZX_MAX_CPUS
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_ONLINE = 0x01U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_STOPPED = 0x02U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_CP = 1U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_ICF = 3U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_IFL = 2U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_UNKNOWN = 0xFFU
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_ZAAP = 5U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_TYPE_ZIIP = 4U
constexpr auto arch::s390x::init::zxfl::ZXFL_CPU_UNKNOWN = 0x00U
constexpr u8 arch::s390x::init::zxvl::ZXFL_EXPECTED_DIGEST [crypto::sha256::SHA256_DIGEST_SIZE] {}
 Expected SHA-256 digest of the authorized stage2 loader.
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_CMDLINE = 1U << 2
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_ECAG = 1U << 12
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_LOWCORE = 1U << 3
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_MEM_MAP = 1U << 1
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_SCLP = 1U << 8
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_SMP = 1U << 0
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_STFLE = 1U << 4
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_SYSINFO = 1U << 5
constexpr auto arch::s390x::init::zxfl::ZXFL_FLAG_TOD = 1U << 6
constexpr auto arch::s390x::init::zxfl::ZXFL_LOADER_MAJOR = 1U
constexpr auto arch::s390x::init::zxfl::ZXFL_LOADER_MINOR = 0U
constexpr auto arch::s390x::init::zxfl::ZXFL_LOWCORE_PHYS = 0x0ULL
constexpr auto arch::s390x::init::zxfl::ZXFL_MAGIC = 0x5A58464CU
constexpr auto arch::s390x::init::zxfl::ZXFL_MEM_KERNEL = 0x04U
constexpr auto arch::s390x::init::zxfl::ZXFL_MEM_LOADER = 0x03U
constexpr auto arch::s390x::init::zxfl::ZXFL_MEM_MAP_MAX = 16U
constexpr auto arch::s390x::init::zxfl::ZXFL_MEM_RESERVED = 0x02U
constexpr auto arch::s390x::init::zxfl::ZXFL_MEM_USABLE = 0x01U
constexpr auto arch::s390x::init::zxfl::ZXFL_MEMPROBE_DIAG = 2
constexpr auto arch::s390x::init::zxfl::ZXFL_MEMPROBE_SCLP = 1
constexpr auto arch::s390x::init::zxfl::ZXFL_MEMPROBE_TPROT = 3
constexpr auto arch::s390x::init::zxfl::ZXFL_MEMPROBE_UNKNOWN = 0
constexpr auto arch::s390x::init::zxfl::ZXFL_OFFSET_KERNEL_STACK_TOP = 400U
constexpr auto arch::s390x::init::zxfl::ZXFL_SEED = 0xA5F0C3E1B2D49687UL
constexpr auto arch::s390x::init::zxfl::ZXFL_VERSION_4 = 0x00000004U
constexpr auto arch::s390x::init::zxvl::ZXVL_CKSUM_ALGO_SHA256 = 0x00000001U
constexpr auto arch::s390x::init::zxvl::ZXVL_CKSUM_MAGIC = 0x5A58564CU
constexpr auto arch::s390x::init::zxvl::ZXVL_CKSUM_MAX_ENTRIES = 16U
constexpr auto arch::s390x::init::zxvl::ZXVL_CKSUM_VERSION = 0x00000001U
constexpr auto arch::s390x::init::zxvl::ZXVL_FRAME_MAGIC_A = 0xC0FFEE00FACADE42UL
constexpr auto arch::s390x::init::zxvl::ZXVL_FRAME_MAGIC_B = 0x1337BABE0DDBA115UL
constexpr auto arch::s390x::init::zxvl::ZXVL_FRAME_SIZE = 64U
constexpr auto arch::s390x::init::zxvl::ZXVL_HS_CHALLENGE = 0xFEEDFACECAFEBABEUL
constexpr auto arch::s390x::init::zxvl::ZXVL_HS_RESPONSE = 0xDEADBEEF0BADF00DUL
constexpr auto arch::s390x::init::zxvl::ZXVL_HS_RESPONSE_HI = 0xDEADBEEFU
constexpr auto arch::s390x::init::zxvl::ZXVL_HS_RESPONSE_LO = 0x0BADF00DU
constexpr auto arch::s390x::init::zxvl::ZXVL_LOCK_EMBED_HI = 0xCCBBCC35U
constexpr auto arch::s390x::init::zxvl::ZXVL_LOCK_EMBED_LO = 0xE5664311U
constexpr auto arch::s390x::init::zxvl::ZXVL_LOCK_EXPECTED = 0xF0A5C3B2E1D49687UL
constexpr auto arch::s390x::init::zxvl::ZXVL_LOCK_MASK = 0x3C1E0F8704B2D596UL
constexpr auto arch::s390x::init::zxvl::ZXVL_LOCK_SENTINEL = 0x5A58464CU
constexpr auto arch::s390x::init::zxvl::ZXVL_PFLAGS_CKSUM = 0x00200004U
constexpr auto arch::s390x::init::zxvl::ZXVL_PFLAGS_ENTRY = 0x00800005U
constexpr auto arch::s390x::init::zxvl::ZXVL_PFLAGS_HS = 0x00400005U
constexpr auto arch::s390x::init::zxvl::ZXVL_PFLAGS_LOCK = 0x00100006U
constexpr auto arch::s390x::init::zxvl::ZXVL_SEED = 0xA5F0C3E1B2D49687UL
constexpr auto arch::s390x::init::zxvl::ZXVL_SEED_HI = 0xA5F0C3E1U
constexpr auto arch::s390x::init::zxvl::ZXVL_SEED_LO = 0xB2D49687U

Files

file  arch/s390x/init/zxfl/protocol.cxxm
 ZXFoundationLoader boot protocol — kernel-side C++23 view.