1*cda5da8dSAndroid Build Coastguard Worker /* 2*cda5da8dSAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*cda5da8dSAndroid Build Coastguard Worker * 4*cda5da8dSAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*cda5da8dSAndroid Build Coastguard Worker * for more information. 6*cda5da8dSAndroid Build Coastguard Worker */ 7*cda5da8dSAndroid Build Coastguard Worker #ifndef __PSP_SEV_USER_H__ 8*cda5da8dSAndroid Build Coastguard Worker #define __PSP_SEV_USER_H__ 9*cda5da8dSAndroid Build Coastguard Worker #include <linux/types.h> 10*cda5da8dSAndroid Build Coastguard Worker enum { 11*cda5da8dSAndroid Build Coastguard Worker SEV_FACTORY_RESET = 0, 12*cda5da8dSAndroid Build Coastguard Worker SEV_PLATFORM_STATUS, 13*cda5da8dSAndroid Build Coastguard Worker SEV_PEK_GEN, 14*cda5da8dSAndroid Build Coastguard Worker SEV_PEK_CSR, 15*cda5da8dSAndroid Build Coastguard Worker SEV_PDH_GEN, 16*cda5da8dSAndroid Build Coastguard Worker SEV_PDH_CERT_EXPORT, 17*cda5da8dSAndroid Build Coastguard Worker SEV_PEK_CERT_IMPORT, 18*cda5da8dSAndroid Build Coastguard Worker SEV_GET_ID, 19*cda5da8dSAndroid Build Coastguard Worker SEV_GET_ID2, 20*cda5da8dSAndroid Build Coastguard Worker SNP_PLATFORM_STATUS, 21*cda5da8dSAndroid Build Coastguard Worker SNP_COMMIT, 22*cda5da8dSAndroid Build Coastguard Worker SNP_SET_CONFIG, 23*cda5da8dSAndroid Build Coastguard Worker SNP_VLEK_LOAD, 24*cda5da8dSAndroid Build Coastguard Worker SEV_MAX, 25*cda5da8dSAndroid Build Coastguard Worker }; 26*cda5da8dSAndroid Build Coastguard Worker typedef enum { 27*cda5da8dSAndroid Build Coastguard Worker SEV_RET_NO_FW_CALL = - 1, 28*cda5da8dSAndroid Build Coastguard Worker SEV_RET_SUCCESS = 0, 29*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PLATFORM_STATE, 30*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_GUEST_STATE, 31*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INAVLID_CONFIG, 32*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_CONFIG = SEV_RET_INAVLID_CONFIG, 33*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_LEN, 34*cda5da8dSAndroid Build Coastguard Worker SEV_RET_ALREADY_OWNED, 35*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_CERTIFICATE, 36*cda5da8dSAndroid Build Coastguard Worker SEV_RET_POLICY_FAILURE, 37*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INACTIVE, 38*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_ADDRESS, 39*cda5da8dSAndroid Build Coastguard Worker SEV_RET_BAD_SIGNATURE, 40*cda5da8dSAndroid Build Coastguard Worker SEV_RET_BAD_MEASUREMENT, 41*cda5da8dSAndroid Build Coastguard Worker SEV_RET_ASID_OWNED, 42*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_ASID, 43*cda5da8dSAndroid Build Coastguard Worker SEV_RET_WBINVD_REQUIRED, 44*cda5da8dSAndroid Build Coastguard Worker SEV_RET_DFFLUSH_REQUIRED, 45*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_GUEST, 46*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_COMMAND, 47*cda5da8dSAndroid Build Coastguard Worker SEV_RET_ACTIVE, 48*cda5da8dSAndroid Build Coastguard Worker SEV_RET_HWSEV_RET_PLATFORM, 49*cda5da8dSAndroid Build Coastguard Worker SEV_RET_HWSEV_RET_UNSAFE, 50*cda5da8dSAndroid Build Coastguard Worker SEV_RET_UNSUPPORTED, 51*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PARAM, 52*cda5da8dSAndroid Build Coastguard Worker SEV_RET_RESOURCE_LIMIT, 53*cda5da8dSAndroid Build Coastguard Worker SEV_RET_SECURE_DATA_INVALID, 54*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_KEY = 0x27, 55*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PAGE_SIZE, 56*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PAGE_STATE, 57*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_MDATA_ENTRY, 58*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PAGE_OWNER, 59*cda5da8dSAndroid Build Coastguard Worker SEV_RET_INVALID_PAGE_AEAD_OFLOW, 60*cda5da8dSAndroid Build Coastguard Worker SEV_RET_RMP_INIT_REQUIRED, 61*cda5da8dSAndroid Build Coastguard Worker SEV_RET_MAX, 62*cda5da8dSAndroid Build Coastguard Worker } sev_ret_code; 63*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_status { 64*cda5da8dSAndroid Build Coastguard Worker __u8 api_major; 65*cda5da8dSAndroid Build Coastguard Worker __u8 api_minor; 66*cda5da8dSAndroid Build Coastguard Worker __u8 state; 67*cda5da8dSAndroid Build Coastguard Worker __u32 flags; 68*cda5da8dSAndroid Build Coastguard Worker __u8 build; 69*cda5da8dSAndroid Build Coastguard Worker __u32 guest_count; 70*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 71*cda5da8dSAndroid Build Coastguard Worker #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100 72*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_pek_csr { 73*cda5da8dSAndroid Build Coastguard Worker __u64 address; 74*cda5da8dSAndroid Build Coastguard Worker __u32 length; 75*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 76*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_pek_cert_import { 77*cda5da8dSAndroid Build Coastguard Worker __u64 pek_cert_address; 78*cda5da8dSAndroid Build Coastguard Worker __u32 pek_cert_len; 79*cda5da8dSAndroid Build Coastguard Worker __u64 oca_cert_address; 80*cda5da8dSAndroid Build Coastguard Worker __u32 oca_cert_len; 81*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 82*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_pdh_cert_export { 83*cda5da8dSAndroid Build Coastguard Worker __u64 pdh_cert_address; 84*cda5da8dSAndroid Build Coastguard Worker __u32 pdh_cert_len; 85*cda5da8dSAndroid Build Coastguard Worker __u64 cert_chain_address; 86*cda5da8dSAndroid Build Coastguard Worker __u32 cert_chain_len; 87*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 88*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_get_id { 89*cda5da8dSAndroid Build Coastguard Worker __u8 socket1[64]; 90*cda5da8dSAndroid Build Coastguard Worker __u8 socket2[64]; 91*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 92*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_get_id2 { 93*cda5da8dSAndroid Build Coastguard Worker __u64 address; 94*cda5da8dSAndroid Build Coastguard Worker __u32 length; 95*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 96*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_snp_status { 97*cda5da8dSAndroid Build Coastguard Worker __u8 api_major; 98*cda5da8dSAndroid Build Coastguard Worker __u8 api_minor; 99*cda5da8dSAndroid Build Coastguard Worker __u8 state; 100*cda5da8dSAndroid Build Coastguard Worker __u8 is_rmp_initialized : 1; 101*cda5da8dSAndroid Build Coastguard Worker __u8 rsvd : 7; 102*cda5da8dSAndroid Build Coastguard Worker __u32 build_id; 103*cda5da8dSAndroid Build Coastguard Worker __u32 mask_chip_id : 1; 104*cda5da8dSAndroid Build Coastguard Worker __u32 mask_chip_key : 1; 105*cda5da8dSAndroid Build Coastguard Worker __u32 vlek_en : 1; 106*cda5da8dSAndroid Build Coastguard Worker __u32 rsvd1 : 29; 107*cda5da8dSAndroid Build Coastguard Worker __u32 guest_count; 108*cda5da8dSAndroid Build Coastguard Worker __u64 current_tcb_version; 109*cda5da8dSAndroid Build Coastguard Worker __u64 reported_tcb_version; 110*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 111*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_snp_config { 112*cda5da8dSAndroid Build Coastguard Worker __u64 reported_tcb; 113*cda5da8dSAndroid Build Coastguard Worker __u32 mask_chip_id : 1; 114*cda5da8dSAndroid Build Coastguard Worker __u32 mask_chip_key : 1; 115*cda5da8dSAndroid Build Coastguard Worker __u32 rsvd : 30; 116*cda5da8dSAndroid Build Coastguard Worker __u8 rsvd1[52]; 117*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 118*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_snp_vlek_load { 119*cda5da8dSAndroid Build Coastguard Worker __u32 len; 120*cda5da8dSAndroid Build Coastguard Worker __u8 vlek_wrapped_version; 121*cda5da8dSAndroid Build Coastguard Worker __u8 rsvd[3]; 122*cda5da8dSAndroid Build Coastguard Worker __u64 vlek_wrapped_address; 123*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 124*cda5da8dSAndroid Build Coastguard Worker struct sev_user_data_snp_wrapped_vlek_hashstick { 125*cda5da8dSAndroid Build Coastguard Worker __u8 data[432]; 126*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 127*cda5da8dSAndroid Build Coastguard Worker struct sev_issue_cmd { 128*cda5da8dSAndroid Build Coastguard Worker __u32 cmd; 129*cda5da8dSAndroid Build Coastguard Worker __u64 data; 130*cda5da8dSAndroid Build Coastguard Worker __u32 error; 131*cda5da8dSAndroid Build Coastguard Worker } __attribute__((__packed__)); 132*cda5da8dSAndroid Build Coastguard Worker #define SEV_IOC_TYPE 'S' 133*cda5da8dSAndroid Build Coastguard Worker #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd) 134*cda5da8dSAndroid Build Coastguard Worker #endif 135