122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef __LINUX_PUBLIC_PRIVCMD_H__
722851890Sopenharmony_ci#define __LINUX_PUBLIC_PRIVCMD_H__
822851890Sopenharmony_ci#include <linux/types.h>
922851890Sopenharmony_ci#include <linux/compiler.h>
1022851890Sopenharmony_ci#include <xen/interface/xen.h>
1122851890Sopenharmony_cistruct privcmd_hypercall {
1222851890Sopenharmony_ci	__u64 op;
1322851890Sopenharmony_ci	__u64 arg[5];
1422851890Sopenharmony_ci};
1522851890Sopenharmony_cistruct privcmd_mmap_entry {
1622851890Sopenharmony_ci	__u64 va;
1722851890Sopenharmony_ci
1822851890Sopenharmony_ci	__u64 mfn;
1922851890Sopenharmony_ci	__u64 npages;
2022851890Sopenharmony_ci};
2122851890Sopenharmony_cistruct privcmd_mmap {
2222851890Sopenharmony_ci	int num;
2322851890Sopenharmony_ci	domid_t dom;
2422851890Sopenharmony_ci	struct privcmd_mmap_entry __user *entry;
2522851890Sopenharmony_ci};
2622851890Sopenharmony_cistruct privcmd_mmapbatch {
2722851890Sopenharmony_ci	int num;
2822851890Sopenharmony_ci	domid_t dom;
2922851890Sopenharmony_ci	__u64 addr;
3022851890Sopenharmony_ci	xen_pfn_t __user *arr;
3122851890Sopenharmony_ci};
3222851890Sopenharmony_ci#define PRIVCMD_MMAPBATCH_MFN_ERROR     0xf0000000U
3322851890Sopenharmony_ci#define PRIVCMD_MMAPBATCH_PAGED_ERROR   0x80000000U
3422851890Sopenharmony_cistruct privcmd_mmapbatch_v2 {
3522851890Sopenharmony_ci	unsigned int num;
3622851890Sopenharmony_ci	domid_t dom;
3722851890Sopenharmony_ci	__u64 addr;
3822851890Sopenharmony_ci	const xen_pfn_t __user *arr;
3922851890Sopenharmony_ci	int __user *err;
4022851890Sopenharmony_ci};
4122851890Sopenharmony_cistruct privcmd_dm_op_buf {
4222851890Sopenharmony_ci	void __user *uptr;
4322851890Sopenharmony_ci	size_t size;
4422851890Sopenharmony_ci};
4522851890Sopenharmony_cistruct privcmd_dm_op {
4622851890Sopenharmony_ci	domid_t dom;
4722851890Sopenharmony_ci	__u16 num;
4822851890Sopenharmony_ci	const struct privcmd_dm_op_buf __user *ubufs;
4922851890Sopenharmony_ci};
5022851890Sopenharmony_cistruct privcmd_mmap_resource {
5122851890Sopenharmony_ci	domid_t dom;
5222851890Sopenharmony_ci	__u32 type;
5322851890Sopenharmony_ci	__u32 id;
5422851890Sopenharmony_ci	__u32 idx;
5522851890Sopenharmony_ci	__u64 num;
5622851890Sopenharmony_ci	__u64 addr;
5722851890Sopenharmony_ci};
5822851890Sopenharmony_ci#define IOCTL_PRIVCMD_HYPERCALL					\
5922851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
6022851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAP					\
6122851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
6222851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAPBATCH					\
6322851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
6422851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAPBATCH_V2				\
6522851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
6622851890Sopenharmony_ci#define IOCTL_PRIVCMD_DM_OP					\
6722851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
6822851890Sopenharmony_ci#define IOCTL_PRIVCMD_RESTRICT					\
6922851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
7022851890Sopenharmony_ci#define IOCTL_PRIVCMD_MMAP_RESOURCE				\
7122851890Sopenharmony_ci	_IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
7222851890Sopenharmony_ci#endif
73