Home | History | Annotate | Download | only in linux
      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