xref: /freebsd/lib/libvmmapi/internal.h (revision 99127fd103624de593c7d1d885387e7d3667d73d)
17d9ef309SJohn Baldwin /*-
27d9ef309SJohn Baldwin  * SPDX-License-Identifier: BSD-2-Clause
37d9ef309SJohn Baldwin  *
47d9ef309SJohn Baldwin  * Copyright (c) 2022 John Baldwin <jhb@FreeBSD.org>
57d9ef309SJohn Baldwin  */
67d9ef309SJohn Baldwin 
77d9ef309SJohn Baldwin #ifndef __VMMAPI_INTERNAL_H__
87d9ef309SJohn Baldwin #define	__VMMAPI_INTERNAL_H__
97d9ef309SJohn Baldwin 
107f00e46bSMark Johnston #include <sys/types.h>
117f00e46bSMark Johnston 
127e0fa794SMark Johnston enum {
137e0fa794SMark Johnston 	VM_MEMSEG_LOW,
147e0fa794SMark Johnston 	VM_MEMSEG_HIGH,
157e0fa794SMark Johnston 	VM_MEMSEG_COUNT,
167e0fa794SMark Johnston };
177e0fa794SMark Johnston 
18e4656e10SMark Johnston struct vmctx {
19*99127fd1SMark Johnston 	int	fd;		/* device file descriptor */
20*99127fd1SMark Johnston 	int	ctlfd;		/* vmm control descriptor */
217e0fa794SMark Johnston 	struct {
227e0fa794SMark Johnston 		vm_paddr_t base;
237e0fa794SMark Johnston 		vm_size_t size;
247e0fa794SMark Johnston 	} memsegs[VM_MEMSEG_COUNT];
25e4656e10SMark Johnston 	int	memflags;
26e4656e10SMark Johnston 	char	*baseaddr;
27e4656e10SMark Johnston 	char	*name;
28e4656e10SMark Johnston };
297d9ef309SJohn Baldwin 
307d9ef309SJohn Baldwin struct vcpu {
317d9ef309SJohn Baldwin 	struct vmctx *ctx;
327d9ef309SJohn Baldwin 	int vcpuid;
337d9ef309SJohn Baldwin };
347d9ef309SJohn Baldwin 
35e4656e10SMark Johnston int	vcpu_ioctl(struct vcpu *vcpu, u_long cmd, void *arg);
36e4656e10SMark Johnston 
3785efb31dSMark Johnston extern const char *vm_capstrmap[];
3885efb31dSMark Johnston 
397f00e46bSMark Johnston #define	VM_COMMON_IOCTLS	\
407f00e46bSMark Johnston 	VM_RUN,			\
417f00e46bSMark Johnston 	VM_SUSPEND,		\
427f00e46bSMark Johnston 	VM_REINIT,		\
437f00e46bSMark Johnston 	VM_ALLOC_MEMSEG,	\
447f00e46bSMark Johnston 	VM_GET_MEMSEG,		\
457f00e46bSMark Johnston 	VM_MMAP_MEMSEG,		\
467f00e46bSMark Johnston 	VM_MMAP_MEMSEG,		\
477f00e46bSMark Johnston 	VM_MMAP_GETNEXT,	\
487f00e46bSMark Johnston 	VM_MUNMAP_MEMSEG,	\
497f00e46bSMark Johnston 	VM_SET_REGISTER,	\
507f00e46bSMark Johnston 	VM_GET_REGISTER,	\
517f00e46bSMark Johnston 	VM_SET_REGISTER_SET,	\
527f00e46bSMark Johnston 	VM_GET_REGISTER_SET,	\
537f00e46bSMark Johnston 	VM_INJECT_EXCEPTION,	\
547f00e46bSMark Johnston 	VM_SET_CAPABILITY,	\
557f00e46bSMark Johnston 	VM_GET_CAPABILITY,	\
567f00e46bSMark Johnston 	VM_STATS,		\
577f00e46bSMark Johnston 	VM_STAT_DESC,		\
587f00e46bSMark Johnston 	VM_GLA2GPA_NOFAULT,	\
597f00e46bSMark Johnston 	VM_ACTIVATE_CPU,	\
607f00e46bSMark Johnston 	VM_GET_CPUS,		\
617f00e46bSMark Johnston 	VM_SUSPEND_CPU,		\
627f00e46bSMark Johnston 	VM_RESUME_CPU,		\
637f00e46bSMark Johnston 	VM_SET_TOPOLOGY,	\
6456a26fc1SMark Johnston 	VM_GET_TOPOLOGY
657f00e46bSMark Johnston 
667f00e46bSMark Johnston #define	VM_PPT_IOCTLS		\
677f00e46bSMark Johnston 	VM_BIND_PPTDEV,		\
687f00e46bSMark Johnston 	VM_UNBIND_PPTDEV,	\
697f00e46bSMark Johnston 	VM_MAP_PPTDEV_MMIO,	\
707f00e46bSMark Johnston 	VM_PPTDEV_MSI,		\
717f00e46bSMark Johnston 	VM_PPTDEV_MSIX,		\
727f00e46bSMark Johnston 	VM_UNMAP_PPTDEV_MMIO,	\
737f00e46bSMark Johnston 	VM_PPTDEV_DISABLE_MSIX
747f00e46bSMark Johnston 
757f00e46bSMark Johnston extern const cap_ioctl_t vm_ioctl_cmds[];
767f00e46bSMark Johnston extern size_t vm_ioctl_ncmds;
777f00e46bSMark Johnston 
787d9ef309SJohn Baldwin #endif /* !__VMMAPI_INTERNAL_H__ */
79