STRUCT SEV_DATA_SNP_SHUTDOWN_EX(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct sev_data_snp_shutdown_ex(9) β€” the Kernel API Manual, but make it make sense πŸŽ€

okay so bestie, welcome to the Kernel API Manual ✨ and today's main character is struct sev_data_snp_shutdown_ex. yes the name is a mouthful, no we are not abbreviating it, she earned those underscores πŸ‘‘


🌸 NAME 🌸

struct sev_data_snp_shutdown_ex β€” literally the SNP_SHUTDOWN_EX structure. that's her. that's the whole vibe πŸ¦‹


✨ SYNOPSIS ✨

here's the shape of her, exactly as she is, no notes:

struct sev_data_snp_shutdown_ex {
    u32 len;
    u32 iommu_snp_shutdown:1;
    u32 x86_snp_shutdown:1;
    u32 rsvd1:30;
 };

like, look at those bitfields. the way she packs three whole fields into one u32?? obsessed πŸ˜­πŸ’–


πŸŽ€ Members πŸŽ€

let's meet the girlies one by one:

  • len β€” the length of the command buffer that gets read by the PSP. yes, the PSP. she's reading. keep it accurate pls πŸ“
  • iommu_snp_shutdown β€” when this bit is set, you're disabling enforcement of SNP in the IOMMU. that's the whole job πŸ›‘
  • x86_snp_shutdown β€” and this bit right here disables SNP on all cores. all of them. every last one πŸ’€
  • rsvd1 β€” reserved. she's not for you, bestie, don't touch, don't ask πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

the whole extended friend group, in the kernel file ./include/linux/psp-sev.h β€” no cap, this is the entire group chat:

  • struct sev_data_init(9)
  • struct sev_data_init_ex(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_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 okay, that's a lot of structs, but every single one of them is invited to the party πŸ«ΆπŸ’œ


ngl bestie, the reserved field is reserved. don't be the girl who writes to rsvd1. iykyk πŸ™ˆ

that's the whole page!! sourced straight from ./include/linux, dated October 2026, and she ate fr fr β€” mwah, go read a struct, ily πŸ“πŸ’–βœ¨

πŸ“¦ where this page comes from