• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef __PSP_SEV_USER_H__
20 #define __PSP_SEV_USER_H__
21 #include <linux/types.h>
22 enum {
23   SEV_FACTORY_RESET = 0,
24   SEV_PLATFORM_STATUS,
25   SEV_PEK_GEN,
26   SEV_PEK_CSR,
27   SEV_PDH_GEN,
28   SEV_PDH_CERT_EXPORT,
29   SEV_PEK_CERT_IMPORT,
30   SEV_GET_ID,
31   SEV_MAX,
32 };
33 typedef enum {
34   SEV_RET_SUCCESS = 0,
35   SEV_RET_INVALID_PLATFORM_STATE,
36   SEV_RET_INVALID_GUEST_STATE,
37   SEV_RET_INAVLID_CONFIG,
38   SEV_RET_INVALID_LEN,
39   SEV_RET_ALREADY_OWNED,
40   SEV_RET_INVALID_CERTIFICATE,
41   SEV_RET_POLICY_FAILURE,
42   SEV_RET_INACTIVE,
43   SEV_RET_INVALID_ADDRESS,
44   SEV_RET_BAD_SIGNATURE,
45   SEV_RET_BAD_MEASUREMENT,
46   SEV_RET_ASID_OWNED,
47   SEV_RET_INVALID_ASID,
48   SEV_RET_WBINVD_REQUIRED,
49   SEV_RET_DFFLUSH_REQUIRED,
50   SEV_RET_INVALID_GUEST,
51   SEV_RET_INVALID_COMMAND,
52   SEV_RET_ACTIVE,
53   SEV_RET_HWSEV_RET_PLATFORM,
54   SEV_RET_HWSEV_RET_UNSAFE,
55   SEV_RET_UNSUPPORTED,
56   SEV_RET_MAX,
57 } sev_ret_code;
58 struct sev_user_data_status {
59   __u8 api_major;
60   __u8 api_minor;
61   __u8 state;
62   __u32 flags;
63   __u8 build;
64   __u32 guest_count;
65 } __packed;
66 struct sev_user_data_pek_csr {
67   __u64 address;
68   __u32 length;
69 } __packed;
70 struct sev_user_data_pek_cert_import {
71   __u64 pek_cert_address;
72   __u32 pek_cert_len;
73   __u64 oca_cert_address;
74   __u32 oca_cert_len;
75 } __packed;
76 struct sev_user_data_pdh_cert_export {
77   __u64 pdh_cert_address;
78   __u32 pdh_cert_len;
79   __u64 cert_chain_address;
80   __u32 cert_chain_len;
81 } __packed;
82 struct sev_user_data_get_id {
83   __u8 socket1[64];
84   __u8 socket2[64];
85 } __packed;
86 struct sev_issue_cmd {
87   __u32 cmd;
88   __u64 data;
89   __u32 error;
90 } __packed;
91 #define SEV_IOC_TYPE 'S'
92 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
93 #endif
94