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