52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||
|
/*
|
||
|
* Copyright IBM Corp. 2022
|
||
|
* Author(s): Steffen Eiden <seiden@linux.ibm.com>
|
||
|
*/
|
||
|
#ifndef __S390_ASM_UVDEVICE_H
|
||
|
#define __S390_ASM_UVDEVICE_H
|
||
|
|
||
|
#include <linux/types.h>
|
||
|
|
||
|
struct uvio_ioctl_cb {
|
||
|
__u32 flags;
|
||
|
__u16 uv_rc; /* UV header rc value */
|
||
|
__u16 uv_rrc; /* UV header rrc value */
|
||
|
__u64 argument_addr; /* Userspace address of uvio argument */
|
||
|
__u32 argument_len;
|
||
|
__u8 reserved14[0x40 - 0x14]; /* must be zero */
|
||
|
};
|
||
|
|
||
|
#define UVIO_ATT_USER_DATA_LEN 0x100
|
||
|
#define UVIO_ATT_UID_LEN 0x10
|
||
|
struct uvio_attest {
|
||
|
__u64 arcb_addr; /* 0x0000 */
|
||
|
__u64 meas_addr; /* 0x0008 */
|
||
|
__u64 add_data_addr; /* 0x0010 */
|
||
|
__u8 user_data[UVIO_ATT_USER_DATA_LEN]; /* 0x0018 */
|
||
|
__u8 config_uid[UVIO_ATT_UID_LEN]; /* 0x0118 */
|
||
|
__u32 arcb_len; /* 0x0128 */
|
||
|
__u32 meas_len; /* 0x012c */
|
||
|
__u32 add_data_len; /* 0x0130 */
|
||
|
__u16 user_data_len; /* 0x0134 */
|
||
|
__u16 reserved136; /* 0x0136 */
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* The following max values define an upper length for the IOCTL in/out buffers.
|
||
|
* However, they do not represent the maximum the Ultravisor allows which is
|
||
|
* often way smaller. By allowing larger buffer sizes we hopefully do not need
|
||
|
* to update the code with every machine update. It is therefore possible for
|
||
|
* userspace to request more memory than actually used by kernel/UV.
|
||
|
*/
|
||
|
#define UVIO_ATT_ARCB_MAX_LEN 0x100000
|
||
|
#define UVIO_ATT_MEASUREMENT_MAX_LEN 0x8000
|
||
|
#define UVIO_ATT_ADDITIONAL_MAX_LEN 0x8000
|
||
|
|
||
|
#define UVIO_DEVICE_NAME "uv"
|
||
|
#define UVIO_TYPE_UVC 'u'
|
||
|
|
||
|
#define UVIO_IOCTL_ATT _IOWR(UVIO_TYPE_UVC, 0x01, struct uvio_ioctl_cb)
|
||
|
|
||
|
#endif /* __S390_ASM_UVDEVICE_H */
|