STRUCT SEV_DATA_INIT_EX(9)
π struct sev_data_init_ex β INIT_EX command parameters π
okay so bestie, this is a page from the Kernel API Manual (section 9, the kernel-API part of the Unix manual pages), and it's all about struct sev_data_init_ex. yes it's a struct, no it's not scary, come sit with me π
β¨ NAME β¨
struct sev_data_init_ex β the parameter squad for the INIT_EX command. that's it, that's the vibe. π¦
πΈ SYNOPSIS πΈ
here's the whole lil struct, literally copy it exactly, don't be creative with it:
struct sev_data_init_ex {
u32 length;
u32 flags;
u64 tmr_address;
u32 tmr_len;
u32 reserved;
u64 nv_address;
u32 nv_len;
};
look at her. seven fields. main character energy π
π Members π
time for the roll call, one by one, no skipping, i would never π
lengthβ the length of the command buffer that gets read by the PSP. that's the size, bestie, know it.flagsβ processing flags. the little switches that tell things how to behave β¨tmr_addressβ the system physical address used for SEV-ES. a whole address, physical, system-level. slay.tmr_lenβ the length oftmr_address. it's literally the len of the address, that's the whole job.nv_addressβ the system physical address used for PSP NV storage. NV storage, PSP, physical address. iconic.nv_lenβ the length ofnv_address. again: len of the address. consistency is a flex π
lowkey notice there's no bullet for reserved in the members list β that's exactly how the original page does it, so i'm keeping it that way, no cap. the field is in the struct, the description isn't. π«Ά
π¦ SEE ALSO π¦
okay this is the part where the page just flexes its entire friend group. the kernel file is ./include/linux/psp-sev.h, and then it's a whole parade of siblings. all of these, every single one, i'm not dropping anybody π
struct sev_data_init(9), struct sev_data_pek_csr(9), struct sev_data_download_firmware(9), struct sev_data_get_id(9), struct sev_data_pdh_cert_export(9), struct sev_data_decommission(9), struct sev_data_activate(9), struct sev_data_deactivate(9), struct sev_data_guest_status(9), struct sev_data_launch_start(9), struct sev_data_launch_update_data(9), struct sev_data_launch_update_vmsa(9), struct sev_data_launch_measure(9), struct sev_data_launch_secret(9), struct sev_data_launch_finish(9), struct sev_data_send_start(9), struct sev_data_send_finish(9), struct sev_data_send_cancel(9), struct sev_data_receive_start(9), struct sev_data_receive_update_data(9), struct sev_data_receive_update_vmsa(9), struct sev_data_receive_finish(9), struct sev_data_dbg(9), struct sev_data_attestation_report(9), struct sev_data_snp_download_firmware(9), struct sev_data_snp_activate(9), struct sev_data_snp_addr(9), struct sev_data_snp_launch_start(9), struct sev_data_snp_launch_update(9), struct sev_data_snp_launch_finish(9), struct sev_data_snp_guest_status(9), struct sev_data_snp_page_reclaim(9), struct sev_data_snp_page_unsmash(9), struct sev_data_snp_dbg(9), struct sev_data_snp_guest_request(9), struct sev_data_snp_init_ex(9), struct sev_data_range(9), struct sev_data_range_list(9), struct sev_data_snp_shutdown_ex(9), struct sev_platform_init_args(9), struct sev_data_snp_commit(9), struct sev_data_snp_feature_info(9), struct sev_data_snp_verify_mitigation(9), struct sev_data_snp_verify_mitigation_dst(9), struct sev_snp_tcb_version_genoa_milan(9), struct sev_snp_tcb_version_turin(9), sev_module_init(9), sev_platform_init(9), sev_platform_status(9), sev_issue_cmd_external_user(9), sev_guest_deactivate(9), sev_guest_activate(9), sev_guest_df_flush(9), sev_guest_decommission(9), sev_do_cmd(9)
like. that's the whole group chat. 58 entries and every one of them made it in. iykyk ππ₯
k that's the page! mwah π
and a lil sign-off for the fine print: this page lives under ./include/linux, it's dated October 2026, and it's page struct sev_data_init_ex(9) of the Kernel API Manual. take care of her, she's iconic πβ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms