vdsk_mailbox.h revision 17cadca83cc82e37ff517ea2783eb4bfcc07b950
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER START
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * The contents of this file are subject to the terms of the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Common Development and Distribution License (the "License").
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You may not use this file except in compliance with the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * or http://www.opensolaris.org/os/licensing.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * See the License for the specific language governing permissions
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * and limitations under the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * When distributing Covered Code, include this CDDL HEADER in each
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * If applicable, add the following below this CDDL HEADER, with the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * fields enclosed by brackets "[]" replaced with your own identifying
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * information: Portions Copyright [yyyy] [name of copyright owner]
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * CDDL HEADER END
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Use is subject to license terms.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifndef _VDSK_MAILBOX_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define _VDSK_MAILBOX_H
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#pragma ident "%Z%%M% %I% %E% SMI"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoextern "C" {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * This header file contains the private LDoms Virtual Disk (vDisk) mailbox
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * definitions common to both the server (vds) and the client (vdc)
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/vio_mailbox.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/vio_common.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/vdsk_common.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Definition of the various states the vDisk state machine can
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * be in during the handshake between vdc and vds.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef enum vd_state {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_INIT = 0,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_VER,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_ATTR,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_DRING,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_RDX,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo VD_STATE_DATA
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vd_state_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VD_VER_MAJOR 0x1
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#define VD_VER_MINOR 0x0
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm/*
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm * Definition of the various types of media that can be exported by
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm * the vDisk server. If we cannot work out what the media type is
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm * we default to calling it VD_MEDIA_FIXED.
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lmtypedef enum vd_media {
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm VD_MEDIA_FIXED = 1, /* default */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm VD_MEDIA_CD,
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm VD_MEDIA_DVD
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm} vd_media_t;
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * vDisk device attributes information message.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.msgtype == VIO_TYPE_CTRL
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.submsgtype = VIO_SUBTYPE_{INFO|ACK|NACK}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * tag.subtype_env == VIO_ATTR_INFO
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vd_attr_msg {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* Common tag */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vio_msg_tag_t tag;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo /* vdisk-attribute-specific payload */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t xfer_mode; /* data exchange method. */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint8_t vdisk_type; /* disk, slice, read-only, etc. */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm uint8_t vdisk_media; /* info about physical media */
17cadca83cc82e37ff517ea2783eb4bfcc07b950lm uint8_t resv1; /* padding */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint32_t vdisk_block_size; /* bytes per disk block */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t operations; /* bit-field of server supported ops */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t vdisk_size; /* size for Nblocks property. */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t max_xfer_sz; /* maximum block transfer size */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo uint64_t resv2[VIO_PAYLOAD_ELEMS - 4]; /* padding */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vd_attr_msg_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * vDisk inband descriptor message.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * For clients that do not use descriptor rings, the descriptor contents
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * are sent as part of an inband message.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppotypedef struct vd_dring_inband_msg {
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vio_inband_desc_msg_hdr_t hdr;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vd_dring_payload_t payload;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo} vd_dring_inband_msg_t;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#ifdef __cplusplus
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo}
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#endif /* _VDSK_MAILBOX_H */