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