xref: /freebsd/lib/libvmmapi/internal.h (revision 7e0fa794123eb8395fffa976c47e8ba4f44f2df0)
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 
12*7e0fa794SMark Johnston enum {
13*7e0fa794SMark Johnston 	VM_MEMSEG_LOW,
14*7e0fa794SMark Johnston 	VM_MEMSEG_HIGH,
15*7e0fa794SMark Johnston 	VM_MEMSEG_COUNT,
16*7e0fa794SMark Johnston };
17*7e0fa794SMark Johnston 
18e4656e10SMark Johnston struct vmctx {
19e4656e10SMark Johnston 	int	fd;
20*7e0fa794SMark Johnston 	struct {
21*7e0fa794SMark Johnston 		vm_paddr_t base;
22*7e0fa794SMark Johnston 		vm_size_t size;
23*7e0fa794SMark Johnston 	} memsegs[VM_MEMSEG_COUNT];
24e4656e10SMark Johnston 	int	memflags;
25e4656e10SMark Johnston 	char	*baseaddr;
26e4656e10SMark Johnston 	char	*name;
27e4656e10SMark Johnston };
287d9ef309SJohn Baldwin 
297d9ef309SJohn Baldwin struct vcpu {
307d9ef309SJohn Baldwin 	struct vmctx *ctx;
317d9ef309SJohn Baldwin 	int vcpuid;
327d9ef309SJohn Baldwin };
337d9ef309SJohn Baldwin 
34e4656e10SMark Johnston int	vcpu_ioctl(struct vcpu *vcpu, u_long cmd, void *arg);
35e4656e10SMark Johnston 
3685efb31dSMark Johnston extern const char *vm_capstrmap[];
3785efb31dSMark Johnston 
387f00e46bSMark Johnston #define	VM_COMMON_IOCTLS	\
397f00e46bSMark Johnston 	VM_RUN,			\
407f00e46bSMark Johnston 	VM_SUSPEND,		\
417f00e46bSMark Johnston 	VM_REINIT,		\
427f00e46bSMark Johnston 	VM_ALLOC_MEMSEG,	\
437f00e46bSMark Johnston 	VM_GET_MEMSEG,		\
447f00e46bSMark Johnston 	VM_MMAP_MEMSEG,		\
457f00e46bSMark Johnston 	VM_MMAP_MEMSEG,		\
467f00e46bSMark Johnston 	VM_MMAP_GETNEXT,	\
477f00e46bSMark Johnston 	VM_MUNMAP_MEMSEG,	\
487f00e46bSMark Johnston 	VM_SET_REGISTER,	\
497f00e46bSMark Johnston 	VM_GET_REGISTER,	\
507f00e46bSMark Johnston 	VM_SET_REGISTER_SET,	\
517f00e46bSMark Johnston 	VM_GET_REGISTER_SET,	\
527f00e46bSMark Johnston 	VM_INJECT_EXCEPTION,	\
537f00e46bSMark Johnston 	VM_SET_CAPABILITY,	\
547f00e46bSMark Johnston 	VM_GET_CAPABILITY,	\
557f00e46bSMark Johnston 	VM_STATS,		\
567f00e46bSMark Johnston 	VM_STAT_DESC,		\
577f00e46bSMark Johnston 	VM_GET_GPA_PMAP,	\
587f00e46bSMark Johnston 	VM_GLA2GPA,		\
597f00e46bSMark Johnston 	VM_GLA2GPA_NOFAULT,	\
607f00e46bSMark Johnston 	VM_ACTIVATE_CPU,	\
617f00e46bSMark Johnston 	VM_GET_CPUS,		\
627f00e46bSMark Johnston 	VM_SUSPEND_CPU,		\
637f00e46bSMark Johnston 	VM_RESUME_CPU,		\
647f00e46bSMark Johnston 	VM_SET_INTINFO,		\
657f00e46bSMark Johnston 	VM_GET_INTINFO,		\
667f00e46bSMark Johnston 	VM_RESTART_INSTRUCTION,	\
677f00e46bSMark Johnston 	VM_SET_TOPOLOGY,	\
687f00e46bSMark Johnston 	VM_GET_TOPOLOGY,	\
697f00e46bSMark Johnston 	VM_SNAPSHOT_REQ,	\
707f00e46bSMark Johnston 	VM_RESTORE_TIME
717f00e46bSMark Johnston 
727f00e46bSMark Johnston #define	VM_PPT_IOCTLS		\
737f00e46bSMark Johnston 	VM_BIND_PPTDEV,		\
747f00e46bSMark Johnston 	VM_UNBIND_PPTDEV,	\
757f00e46bSMark Johnston 	VM_MAP_PPTDEV_MMIO,	\
767f00e46bSMark Johnston 	VM_PPTDEV_MSI,		\
777f00e46bSMark Johnston 	VM_PPTDEV_MSIX,		\
787f00e46bSMark Johnston 	VM_UNMAP_PPTDEV_MMIO,	\
797f00e46bSMark Johnston 	VM_PPTDEV_DISABLE_MSIX
807f00e46bSMark Johnston 
817f00e46bSMark Johnston extern const cap_ioctl_t vm_ioctl_cmds[];
827f00e46bSMark Johnston extern size_t vm_ioctl_ncmds;
837f00e46bSMark Johnston 
847d9ef309SJohn Baldwin #endif /* !__VMMAPI_INTERNAL_H__ */
85