[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 05/10] vmport: Add VMware provided include files.
On Thu, Dec 12, 2013 at 02:15:13PM -0500, Don Slutz wrote: > From: Don Slutz <dslutz@xxxxxxxxxxx> > > These 2 files: backdoor_def.h and guest_msg_def.h come from: > > http://packages.vmware.com/tools/esx/3.5latest/rhel4/SRPMS/index.html > open-vm-tools-kmod-7.4.8-396269.423167.src.rpm > open-vm-tools-kmod-7.4.8.tar.gz > vmhgfs/backdoor_def.h > vmhgfs/guest_msg_def.h > > and are unchanged. > > Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> > --- > xen/arch/x86/hvm/vmport/backdoor_def.h | 167 > ++++++++++++++++++++++++++++++++ > xen/arch/x86/hvm/vmport/guest_msg_def.h | 87 +++++++++++++++++ > 2 files changed, 254 insertions(+) > create mode 100644 xen/arch/x86/hvm/vmport/backdoor_def.h > create mode 100644 xen/arch/x86/hvm/vmport/guest_msg_def.h > > diff --git a/xen/arch/x86/hvm/vmport/backdoor_def.h > b/xen/arch/x86/hvm/vmport/backdoor_def.h > new file mode 100644 > index 0000000..e76795f > --- /dev/null > +++ b/xen/arch/x86/hvm/vmport/backdoor_def.h > @@ -0,0 +1,167 @@ > +/* ********************************************************** > + * Copyright 1998 VMware, Inc. All rights reserved. > + * ********************************************************** > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation version 2 and no later version. > + * > + * This program is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * for more details. > + * > + * You should have received a copy of the GNU General Public License along > + * with this program; if not, write to the Free Software Foundation, Inc., > + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Please don't include the address. It should be: You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +/* > + * backdoor_def.h -- > + * > + * This contains backdoor defines that can be included from > + * an assembly language file. > + */ > + > + > + > +#ifndef _BACKDOOR_DEF_H_ > +#define _BACKDOOR_DEF_H_ > + > +#define INCLUDE_ALLOW_MODULE > +#define INCLUDE_ALLOW_USERLEVEL > +#define INCLUDE_ALLOW_VMMEXT > +#define INCLUDE_ALLOW_VMCORE > +#define INCLUDE_ALLOW_VMKERNEL > +#include "includeCheck.h" > + > +/* > + * If you want to add a new low-level backdoor call for a guest userland > + * application, please consider using the GuestRpc mechanism instead. --hpreg > + */ > + > +#define BDOOR_MAGIC 0x564D5868 > + > +/* Low-bandwidth backdoor port. --hpreg */ > + > +#define BDOOR_PORT 0x5658 > + > +#define BDOOR_CMD_GETMHZ 1 > +/* > + * BDOOR_CMD_APMFUNCTION is used by: > + * > + * o The FrobOS code, which instead should either program the virtual chipset > + * (like the new BIOS code does, matthias offered to implement that), or > not > + * use any VM-specific code (which requires that we correctly implement > + * "power off on CLI HLT" for SMP VMs, boris offered to implement that) > + * > + * o The old BIOS code, which will soon be jettisoned > + * > + * --hpreg > + */ > +#define BDOOR_CMD_APMFUNCTION 2 > +#define BDOOR_CMD_GETDISKGEO 3 > +#define BDOOR_CMD_GETPTRLOCATION 4 > +#define BDOOR_CMD_SETPTRLOCATION 5 > +#define BDOOR_CMD_GETSELLENGTH 6 > +#define BDOOR_CMD_GETNEXTPIECE 7 > +#define BDOOR_CMD_SETSELLENGTH 8 > +#define BDOOR_CMD_SETNEXTPIECE 9 > +#define BDOOR_CMD_GETVERSION 10 > +#define BDOOR_CMD_GETDEVICELISTELEMENT 11 > +#define BDOOR_CMD_TOGGLEDEVICE 12 > +#define BDOOR_CMD_GETGUIOPTIONS 13 > +#define BDOOR_CMD_SETGUIOPTIONS 14 > +#define BDOOR_CMD_GETSCREENSIZE 15 > +#define BDOOR_CMD_MONITOR_CONTROL 16 > +#define BDOOR_CMD_GETHWVERSION 17 > +#define BDOOR_CMD_OSNOTFOUND 18 > +#define BDOOR_CMD_GETUUID 19 > +#define BDOOR_CMD_GETMEMSIZE 20 > +#define BDOOR_CMD_HOSTCOPY 21 /* Devel only */ > +/* BDOOR_CMD_GETOS2INTCURSOR, 22, is very old and defunct. Reuse. */ > +#define BDOOR_CMD_GETTIME 23 /* Deprecated. Use GETTIMEFULL. */ > +#define BDOOR_CMD_STOPCATCHUP 24 > +#define BDOOR_CMD_PUTCHR 25 /* Devel only */ > +#define BDOOR_CMD_ENABLE_MSG 26 /* Devel only */ > +#define BDOOR_CMD_GOTO_TCL 27 /* Devel only */ > +#define BDOOR_CMD_INITPCIOPROM 28 > +#define BDOOR_CMD_INT13 29 > +#define BDOOR_CMD_MESSAGE 30 > +#define BDOOR_CMD_RSVD0 31 > +#define BDOOR_CMD_RSVD1 32 > +#define BDOOR_CMD_RSVD2 33 > +#define BDOOR_CMD_ISACPIDISABLED 34 > +#define BDOOR_CMD_TOE 35 /* Not in use */ > +/* BDOOR_CMD_INITLSIOPROM, 36, was merged with 28. Reuse. */ > +#define BDOOR_CMD_PATCH_SMBIOS_STRUCTS 37 > +#define BDOOR_CMD_MAPMEM 38 /* Devel only */ > +#define BDOOR_CMD_ABSPOINTER_DATA 39 > +#define BDOOR_CMD_ABSPOINTER_STATUS 40 > +#define BDOOR_CMD_ABSPOINTER_COMMAND 41 > +#define BDOOR_CMD_TIMER_SPONGE 42 > +#define BDOOR_CMD_PATCH_ACPI_TABLES 43 > +/* Catch-all to allow synchronous tests */ > +#define BDOOR_CMD_DEVEL_FAKEHARDWARE 44 /* Debug only - needed in beta */ > +#define BDOOR_CMD_GETHZ 45 > +#define BDOOR_CMD_GETTIMEFULL 46 > +#define BDOOR_CMD_STATELOGGER 47 > +#define BDOOR_CMD_CHECKFORCEBIOSSETUP 48 > +#define BDOOR_CMD_LAZYTIMEREMULATION 49 > +#define BDOOR_CMD_BIOSBBS 50 > +#define BDOOR_CMD_MAX 51 > + > +/* > + * IMPORTANT NOTE: When modifying the behavior of an existing backdoor > command, > + * you must adhere to the semantics expected by the oldest Tools who use that > + * command. Specifically, do not alter the way in which the command modifies > + * the registers. Otherwise backwards compatibility will suffer. > + */ > + > +/* High-bandwidth backdoor port. --hpreg */ > + > +#define BDOORHB_PORT 0x5659 > + > +#define BDOORHB_CMD_MESSAGE 0 > +#define BDOORHB_CMD_MAX 1 > + > +/* > + * There is another backdoor which allows access to certain TSC-related > + * values using otherwise illegal PMC indices when the pseudo_perfctr > + * control flag is set. > + */ > + > +#define BDOOR_PMC_HW_TSC 0x10000 > +#define BDOOR_PMC_REAL_NS 0x10001 > +#define BDOOR_PMC_APPARENT_NS 0x10002 > + > +#define IS_BDOOR_PMC(index) (((index) | 3) == 0x10003) > +#define BDOOR_CMD(ecx) ((ecx) & 0xffff) > + > + > +#ifdef VMM > +/* > + *---------------------------------------------------------------------- > + * > + * Backdoor_CmdRequiresFullyValidVCPU -- > + * > + * A few backdoor commands require the full VCPU to be valid > + * (including GDTR, IDTR, TR and LDTR). The rest get read/write > + * access to GPRs and read access to Segment registers (selectors). > + * > + * Result: > + * True iff VECX contains a command that require the full VCPU to > + * be valid. > + * > + *---------------------------------------------------------------------- > + */ > +static INLINE Bool > +Backdoor_CmdRequiresFullyValidVCPU(unsigned cmd) > +{ > + return cmd == BDOOR_CMD_RSVD0 || > + cmd == BDOOR_CMD_RSVD1 || > + cmd == BDOOR_CMD_RSVD2; > +} > +#endif > + > +#endif > diff --git a/xen/arch/x86/hvm/vmport/guest_msg_def.h > b/xen/arch/x86/hvm/vmport/guest_msg_def.h > new file mode 100644 > index 0000000..44ae0fa > --- /dev/null > +++ b/xen/arch/x86/hvm/vmport/guest_msg_def.h > @@ -0,0 +1,87 @@ > +/* ********************************************************** > + * Copyright 1998 VMware, Inc. All rights reserved. > + * ********************************************************** > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation version 2 and no later version. > + * > + * This program is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * for more details. > + * > + * You should have received a copy of the GNU General Public License along > + * with this program; if not, write to the Free Software Foundation, Inc., > + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Ditto: You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +/* > + * guest_msg_def.h -- > + * > + * Second layer of the internal communication channel between guest > + * applications and vmware > + * > + */ > + > +#ifndef _GUEST_MSG_DEF_H_ > +#define _GUEST_MSG_DEF_H_ > + > +#define INCLUDE_ALLOW_MODULE > +#define INCLUDE_ALLOW_USERLEVEL > +#define INCLUDE_ALLOW_VMMEXT > +#include "includeCheck.h" > + > + > +/* Basic request types */ > +typedef enum { > + MESSAGE_TYPE_OPEN, > + MESSAGE_TYPE_SENDSIZE, > + MESSAGE_TYPE_SENDPAYLOAD, > + MESSAGE_TYPE_RECVSIZE, > + MESSAGE_TYPE_RECVPAYLOAD, > + MESSAGE_TYPE_RECVSTATUS, > + MESSAGE_TYPE_CLOSE, > +} MessageType; > + > + > +/* Reply statuses */ > +/* The basic request succeeded */ > +#define MESSAGE_STATUS_SUCCESS 0x0001 > +/* vmware has a message available for its party */ > +#define MESSAGE_STATUS_DORECV 0x0002 > +/* The channel has been closed */ > +#define MESSAGE_STATUS_CLOSED 0x0004 > +/* vmware removed the message before the party fetched it */ > +#define MESSAGE_STATUS_UNSENT 0x0008 > +/* A checkpoint occurred */ > +#define MESSAGE_STATUS_CPT 0x0010 > +/* An underlying device is powering off */ > +#define MESSAGE_STATUS_POWEROFF 0x0020 > +/* vmware has detected a timeout on the channel */ > +#define MESSAGE_STATUS_TIMEOUT 0x0040 > +/* vmware supports high-bandwidth for sending and receiving the payload */ > +#define MESSAGE_STATUS_HB 0x0080 > + > +/* > + * This mask defines the status bits that the guest is allowed to set; > + * we use this to mask out all other bits when receiving the status > + * from the guest. Otherwise, the guest can manipulate VMX state by > + * setting status bits that are only supposed to be changed by the > + * VMX. See bug 45385. > + */ > +#define MESSAGE_STATUS_GUEST_MASK MESSAGE_STATUS_SUCCESS > + > +/* > + * Max number of channels. > + * Unfortunately this has to be public because the monitor part > + * of the backdoor needs it for its trivial-case optimization. [greg] > + */ > +#define GUESTMSG_MAX_CHANNEL 8 > + > +/* Flags to open a channel. --hpreg */ > +#define GUESTMSG_FLAG_COOKIE 0x80000000 > +#define GUESTMSG_FLAG_ALL GUESTMSG_FLAG_COOKIE > + > + > +#endif /* _GUEST_MSG_DEF_H_ */ > -- > 1.8.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |