1 1.1 ryo /* $NetBSD: vmtreg.h,v 1.1 2020/10/27 08:57:11 ryo Exp $ */ 2 1.1 ryo /* NetBSD: vmt.c,v 1.15 2016/11/10 03:32:04 ozaki-r Exp */ 3 1.1 ryo /* $OpenBSD: vmt.c,v 1.11 2011/01/27 21:29:25 dtucker Exp $ */ 4 1.1 ryo 5 1.1 ryo /* 6 1.1 ryo * Copyright (c) 2007 David Crawshaw <david (at) zentus.com> 7 1.1 ryo * Copyright (c) 2008 David Gwynne <dlg (at) openbsd.org> 8 1.1 ryo * 9 1.1 ryo * Permission to use, copy, modify, and distribute this software for any 10 1.1 ryo * purpose with or without fee is hereby granted, provided that the above 11 1.1 ryo * copyright notice and this permission notice appear in all copies. 12 1.1 ryo * 13 1.1 ryo * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14 1.1 ryo * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15 1.1 ryo * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16 1.1 ryo * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 1.1 ryo * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18 1.1 ryo * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 1.1 ryo * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 1.1 ryo */ 21 1.1 ryo 22 1.1 ryo #ifndef _DEV_VMT_VMTREG_H_ 23 1.1 ryo #define _DEV_VMT_VMTREG_H_ 24 1.1 ryo 25 1.1 ryo /* OS name to report to host */ 26 1.1 ryo #ifdef __i386__ 27 1.1 ryo #define VM_OS_NAME "other" 28 1.1 ryo #else 29 1.1 ryo #define VM_OS_NAME "other-64" 30 1.1 ryo #endif 31 1.1 ryo 32 1.1 ryo /* "The" magic number, always occupies the EAX register. */ 33 1.1 ryo #define VM_MAGIC 0x564D5868 34 1.1 ryo 35 1.1 ryo /* Port numbers, passed on EDX.LOW . */ 36 1.1 ryo #define VM_PORT_CMD 0x5658 37 1.1 ryo #define VM_PORT_RPC 0x5659 38 1.1 ryo 39 1.1 ryo /* Commands, passed on ECX.LOW. */ 40 1.1 ryo #define VM_CMD_GET_SPEED 0x01 41 1.1 ryo #define VM_CMD_APM 0x02 42 1.1 ryo #define VM_CMD_GET_MOUSEPOS 0x04 43 1.1 ryo #define VM_CMD_SET_MOUSEPOS 0x05 44 1.1 ryo #define VM_CMD_GET_CLIPBOARD_LEN 0x06 45 1.1 ryo #define VM_CMD_GET_CLIPBOARD 0x07 46 1.1 ryo #define VM_CMD_SET_CLIPBOARD_LEN 0x08 47 1.1 ryo #define VM_CMD_SET_CLIPBOARD 0x09 48 1.1 ryo #define VM_CMD_GET_VERSION 0x0a 49 1.1 ryo #define VM_VERSION_UNMANAGED 0x7fffffff 50 1.1 ryo #define VM_CMD_GET_DEVINFO 0x0b 51 1.1 ryo #define VM_CMD_DEV_ADDREMOVE 0x0c 52 1.1 ryo #define VM_CMD_GET_GUI_OPTIONS 0x0d 53 1.1 ryo #define VM_CMD_SET_GUI_OPTIONS 0x0e 54 1.1 ryo #define VM_CMD_GET_SCREEN_SIZE 0x0f 55 1.1 ryo #define VM_CMD_GET_HWVER 0x11 56 1.1 ryo #define VM_CMD_POPUP_OSNOTFOUND 0x12 57 1.1 ryo #define VM_CMD_GET_BIOS_UUID 0x13 58 1.1 ryo #define VM_CMD_GET_MEM_SIZE 0x14 59 1.1 ryo /*#define VM_CMD_GET_TIME 0x17 */ /* deprecated */ 60 1.1 ryo #define VM_CMD_RPC 0x1e 61 1.1 ryo #define VM_CMD_GET_HZ 0x2d 62 1.1 ryo #define VM_CMD_GET_TIME_FULL 0x2e 63 1.1 ryo #define VM_CMD_GET_VCPU_INFO 0x44 64 1.1 ryo #define VCPUINFO_LEGACY_X2APIC __BIT(3) 65 1.1 ryo #define VCPUINFO_VCPU_RESERVED __BIT(31) 66 1.1 ryo 67 1.1 ryo /* RPC sub-commands, passed on ECX.HIGH. */ 68 1.1 ryo #define VM_RPC_OPEN 0x00 69 1.1 ryo #define VM_RPC_SET_LENGTH 0x01 70 1.1 ryo #define VM_RPC_SET_DATA 0x02 71 1.1 ryo #define VM_RPC_GET_LENGTH 0x03 72 1.1 ryo #define VM_RPC_GET_DATA 0x04 73 1.1 ryo #define VM_RPC_GET_END 0x05 74 1.1 ryo #define VM_RPC_CLOSE 0x06 75 1.1 ryo 76 1.1 ryo /* RPC magic numbers, passed on EBX. */ 77 1.1 ryo #define VM_RPC_OPEN_RPCI 0x49435052UL /* with VM_RPC_OPEN. */ 78 1.1 ryo #define VM_RPC_OPEN_TCLO 0x4F4C4354UL /* with VP_RPC_OPEN. */ 79 1.1 ryo #define VM_RPC_ENH_DATA 0x00010000UL /* with enhanced RPC data calls. */ 80 1.1 ryo 81 1.1 ryo #define VM_RPC_FLAG_COOKIE 0x80000000UL 82 1.1 ryo 83 1.1 ryo /* RPC reply flags */ 84 1.1 ryo #define VM_RPC_REPLY_SUCCESS 0x0001 85 1.1 ryo #define VM_RPC_REPLY_DORECV 0x0002 /* incoming message available */ 86 1.1 ryo #define VM_RPC_REPLY_CLOSED 0x0004 /* RPC channel is closed */ 87 1.1 ryo #define VM_RPC_REPLY_UNSENT 0x0008 /* incoming message was removed? */ 88 1.1 ryo #define VM_RPC_REPLY_CHECKPOINT 0x0010 /* checkpoint occurred -> retry */ 89 1.1 ryo #define VM_RPC_REPLY_POWEROFF 0x0020 /* underlying device is powering off */ 90 1.1 ryo #define VM_RPC_REPLY_TIMEOUT 0x0040 91 1.1 ryo #define VM_RPC_REPLY_HB 0x0080 /* high-bandwidth tx/rx available */ 92 1.1 ryo 93 1.1 ryo /* VM state change IDs */ 94 1.1 ryo #define VM_STATE_CHANGE_HALT 1 95 1.1 ryo #define VM_STATE_CHANGE_REBOOT 2 96 1.1 ryo #define VM_STATE_CHANGE_POWERON 3 97 1.1 ryo #define VM_STATE_CHANGE_RESUME 4 98 1.1 ryo #define VM_STATE_CHANGE_SUSPEND 5 99 1.1 ryo 100 1.1 ryo /* VM guest info keys */ 101 1.1 ryo #define VM_GUEST_INFO_DNS_NAME 1 102 1.1 ryo #define VM_GUEST_INFO_IP_ADDRESS 2 103 1.1 ryo #define VM_GUEST_INFO_DISK_FREE_SPACE 3 104 1.1 ryo #define VM_GUEST_INFO_BUILD_NUMBER 4 105 1.1 ryo #define VM_GUEST_INFO_OS_NAME_FULL 5 106 1.1 ryo #define VM_GUEST_INFO_OS_NAME 6 107 1.1 ryo #define VM_GUEST_INFO_UPTIME 7 108 1.1 ryo #define VM_GUEST_INFO_MEMORY 8 109 1.1 ryo #define VM_GUEST_INFO_IP_ADDRESS_V2 9 110 1.1 ryo 111 1.1 ryo /* RPC responses */ 112 1.1 ryo #define VM_RPC_REPLY_OK "OK " 113 1.1 ryo #define VM_RPC_RESET_REPLY "OK ATR toolbox" 114 1.1 ryo #define VM_RPC_REPLY_ERROR "ERROR Unknown command" 115 1.1 ryo #define VM_RPC_REPLY_ERROR_IP_ADDR "ERROR Unable to find guest IP address" 116 1.1 ryo 117 1.1 ryo #endif /* _DEV_VMT_VMTREG_H_ */ 118