sev_issue_cmd_external_user(9)
β¨ NAME β¨
sev_issue_cmd_external_user β issue SEV command by other driver with a file handle π
That's the whole vibe, bestie. Like, that's genuinely it, and honestly? Iconic of it.
πΈ SYNOPSIS πΈ
int sev_issue_cmd_external_user (struct file *filep , unsigned int id ,
void *data , int *error );
π ARGUMENTS π
okay so the source page is so real for this one, it just says the same thing three times and dips π
filepβ-- undescribed --π no cap, that's literally all it saysidβ-- undescribed --π the mystery continuesdataβ-- undescribed --π«Ά three for threeerrorβ SEV command return code β¨ (this one actually got a description, we stan)
π¦ DESCRIPTION π¦
So here's the tea: this function is the plug for other drivers β they can use it to issue a SEV command on behalf of userspace π
The one rule, and it's not negotiable: the caller must pass a valid SEV file descriptor, so we know for a fact that it actually has access to the SEV device π₯ No valid fd, no vibes.
And then, further down, the page lists the trio like this:
filepβ SEV device file pointercmdβ command to issuedataβ command buffer
(yes, the synopsis up top calls it id and this line calls it cmd β we're not fixing it, we're just reporting it, iykyk π)
π RETURN π
0β if the SEV successfully processed the command β ate, no crumbs-ENODEVβ if the SEV device is not available π-ENOTSUPPβ if the SEV does not support SEV π-ETIMEDOUTβ if the SEV command timed out β°-EIOβ if the SEV returned a non-zero return code π-EINVALβ if the SEV file descriptor is not valid π«
π SEE ALSO π
First up, the kernel file itself:
./include/linux/psp-sev.hπ
And then the whole squad, in order, no skips:
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_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_guest_deactivate(9)sev_guest_activate(9)sev_guest_df_flush(9)sev_guest_decommission(9)sev_do_cmd(9)
okay that's the page!! mwah π huge shoutout to ./include/linux for being the source, October 2026 for the date, and sev_issue_cmd_external_user(9) for being the moment. go read a struct, bestie, you got this π§ββοΈ
π¦ 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