blob: a7226412847b91df9787f0ad4b2dc0b16254848e [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Christopher Ferris80ae69d2022-08-02 16:32:21 -07007#ifndef __UAPI_LINUX_SEV_GUEST_H_
8#define __UAPI_LINUX_SEV_GUEST_H_
9#include <linux/types.h>
Christopher Ferris0f795212024-01-17 14:17:28 -080010#define SNP_REPORT_USER_DATA_SIZE 64
Christopher Ferris80ae69d2022-08-02 16:32:21 -070011struct snp_report_req {
Christopher Ferris0f795212024-01-17 14:17:28 -080012 __u8 user_data[SNP_REPORT_USER_DATA_SIZE];
Christopher Ferris80ae69d2022-08-02 16:32:21 -070013 __u32 vmpl;
14 __u8 rsvd[28];
15};
16struct snp_report_resp {
17 __u8 data[4000];
18};
19struct snp_derived_key_req {
20 __u32 root_key_select;
21 __u32 rsvd;
22 __u64 guest_field_select;
23 __u32 vmpl;
24 __u32 guest_svn;
25 __u64 tcb_version;
26};
27struct snp_derived_key_resp {
28 __u8 data[64];
29};
30struct snp_guest_request_ioctl {
31 __u8 msg_version;
32 __u64 req_data;
33 __u64 resp_data;
Christopher Ferris37c3f3c2023-07-10 10:59:05 -070034 union {
35 __u64 exitinfo2;
36 struct {
37 __u32 fw_error;
38 __u32 vmm_error;
39 };
40 };
Christopher Ferris80ae69d2022-08-02 16:32:21 -070041};
42struct snp_ext_report_req {
43 struct snp_report_req data;
44 __u64 certs_address;
45 __u32 certs_len;
46};
47#define SNP_GUEST_REQ_IOC_TYPE 'S'
48#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
49#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
50#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
Christopher Ferris37c3f3c2023-07-10 10:59:05 -070051#define SNP_GUEST_FW_ERR_MASK GENMASK_ULL(31, 0)
52#define SNP_GUEST_VMM_ERR_SHIFT 32
53#define SNP_GUEST_VMM_ERR(x) (((u64) x) << SNP_GUEST_VMM_ERR_SHIFT)
Christopher Ferris63fcca42024-09-26 01:12:10 +000054#define SNP_GUEST_FW_ERR(x) ((x) & SNP_GUEST_FW_ERR_MASK)
55#define SNP_GUEST_ERR(vmm_err,fw_err) (SNP_GUEST_VMM_ERR(vmm_err) | SNP_GUEST_FW_ERR(fw_err))
Christopher Ferris37c3f3c2023-07-10 10:59:05 -070056#define SNP_GUEST_VMM_ERR_INVALID_LEN 1
57#define SNP_GUEST_VMM_ERR_BUSY 2
Christopher Ferris80ae69d2022-08-02 16:32:21 -070058#endif