blob: 3221fef8391fc57e1b01fe41253ff2ca9172a412 [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>
10struct snp_report_req {
11 __u8 user_data[64];
12 __u32 vmpl;
13 __u8 rsvd[28];
14};
15struct snp_report_resp {
16 __u8 data[4000];
17};
18struct snp_derived_key_req {
19 __u32 root_key_select;
20 __u32 rsvd;
21 __u64 guest_field_select;
22 __u32 vmpl;
23 __u32 guest_svn;
24 __u64 tcb_version;
25};
26struct snp_derived_key_resp {
27 __u8 data[64];
28};
29struct snp_guest_request_ioctl {
30 __u8 msg_version;
31 __u64 req_data;
32 __u64 resp_data;
Christopher Ferris37c3f3c2023-07-10 10:59:05 -070033 union {
34 __u64 exitinfo2;
35 struct {
36 __u32 fw_error;
37 __u32 vmm_error;
38 };
39 };
Christopher Ferris80ae69d2022-08-02 16:32:21 -070040};
41struct snp_ext_report_req {
42 struct snp_report_req data;
43 __u64 certs_address;
44 __u32 certs_len;
45};
46#define SNP_GUEST_REQ_IOC_TYPE 'S'
47#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
48#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
49#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
Christopher Ferris37c3f3c2023-07-10 10:59:05 -070050#define SNP_GUEST_FW_ERR_MASK GENMASK_ULL(31, 0)
51#define SNP_GUEST_VMM_ERR_SHIFT 32
52#define SNP_GUEST_VMM_ERR(x) (((u64) x) << SNP_GUEST_VMM_ERR_SHIFT)
53#define SNP_GUEST_VMM_ERR_INVALID_LEN 1
54#define SNP_GUEST_VMM_ERR_BUSY 2
Christopher Ferris80ae69d2022-08-02 16:32:21 -070055#endif