[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.