|  | /**************************************************************************** | 
|  | **************************************************************************** | 
|  | *** | 
|  | ***   This header was automatically generated from a Linux kernel header | 
|  | ***   of the same name, to make information necessary for userspace to | 
|  | ***   call into the kernel available to libc.  It contains only constants, | 
|  | ***   structures, and macros generated from the original header, and thus, | 
|  | ***   contains no copyrightable information. | 
|  | *** | 
|  | ***   To edit the content of this header, modify the corresponding | 
|  | ***   source file (e.g. under external/kernel-headers/original/) then | 
|  | ***   run bionic/libc/kernel/tools/update_all.py | 
|  | *** | 
|  | ***   Any manual change here will be lost the next time this script will | 
|  | ***   be run. You've been warned! | 
|  | *** | 
|  | **************************************************************************** | 
|  | ****************************************************************************/ | 
|  | #ifndef __PSP_SEV_USER_H__ | 
|  | #define __PSP_SEV_USER_H__ | 
|  | #include <linux/types.h> | 
|  | enum { | 
|  | SEV_FACTORY_RESET = 0, | 
|  | SEV_PLATFORM_STATUS, | 
|  | SEV_PEK_GEN, | 
|  | SEV_PEK_CSR, | 
|  | SEV_PDH_GEN, | 
|  | SEV_PDH_CERT_EXPORT, | 
|  | SEV_PEK_CERT_IMPORT, | 
|  | SEV_GET_ID, | 
|  | SEV_GET_ID2, | 
|  | SEV_MAX, | 
|  | }; | 
|  | typedef enum { | 
|  | SEV_RET_SUCCESS = 0, | 
|  | SEV_RET_INVALID_PLATFORM_STATE, | 
|  | SEV_RET_INVALID_GUEST_STATE, | 
|  | SEV_RET_INAVLID_CONFIG, | 
|  | SEV_RET_INVALID_LEN, | 
|  | SEV_RET_ALREADY_OWNED, | 
|  | SEV_RET_INVALID_CERTIFICATE, | 
|  | SEV_RET_POLICY_FAILURE, | 
|  | SEV_RET_INACTIVE, | 
|  | SEV_RET_INVALID_ADDRESS, | 
|  | SEV_RET_BAD_SIGNATURE, | 
|  | SEV_RET_BAD_MEASUREMENT, | 
|  | SEV_RET_ASID_OWNED, | 
|  | SEV_RET_INVALID_ASID, | 
|  | SEV_RET_WBINVD_REQUIRED, | 
|  | SEV_RET_DFFLUSH_REQUIRED, | 
|  | SEV_RET_INVALID_GUEST, | 
|  | SEV_RET_INVALID_COMMAND, | 
|  | SEV_RET_ACTIVE, | 
|  | SEV_RET_HWSEV_RET_PLATFORM, | 
|  | SEV_RET_HWSEV_RET_UNSAFE, | 
|  | SEV_RET_UNSUPPORTED, | 
|  | SEV_RET_MAX, | 
|  | } sev_ret_code; | 
|  | struct sev_user_data_status { | 
|  | __u8 api_major; | 
|  | __u8 api_minor; | 
|  | __u8 state; | 
|  | __u32 flags; | 
|  | __u8 build; | 
|  | __u32 guest_count; | 
|  | } __packed; | 
|  | struct sev_user_data_pek_csr { | 
|  | __u64 address; | 
|  | __u32 length; | 
|  | } __packed; | 
|  | struct sev_user_data_pek_cert_import { | 
|  | __u64 pek_cert_address; | 
|  | __u32 pek_cert_len; | 
|  | __u64 oca_cert_address; | 
|  | __u32 oca_cert_len; | 
|  | } __packed; | 
|  | struct sev_user_data_pdh_cert_export { | 
|  | __u64 pdh_cert_address; | 
|  | __u32 pdh_cert_len; | 
|  | __u64 cert_chain_address; | 
|  | __u32 cert_chain_len; | 
|  | } __packed; | 
|  | struct sev_user_data_get_id { | 
|  | __u8 socket1[64]; | 
|  | __u8 socket2[64]; | 
|  | } __packed; | 
|  | struct sev_user_data_get_id2 { | 
|  | __u64 address; | 
|  | __u32 length; | 
|  | } __packed; | 
|  | struct sev_issue_cmd { | 
|  | __u32 cmd; | 
|  | __u64 data; | 
|  | __u32 error; | 
|  | } __packed; | 
|  | #define SEV_IOC_TYPE 'S' | 
|  | #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd) | 
|  | #endif |