annotate usr/src/uts/sun4v/sys/vdc.h @ 2793:a30c4090b49f

6458676 memory leak with 12 hours all_solaris_tests. 6460802 vdc does not handle ldc_write failures appropriately 6462669 VDC bind failure messages under stress in an ldom. 6463753 panic[cpu0]/thread=2a100207cc0: kernel heap corruption detected 6469548 Domain Services module should not claim every DS port in the MD 6469890 LDC clients fail to handshake reliably following a channel reset 6469900 LDOM domain0 runs out of freemem during extended runs. 6470870 pcp_init() returns error right after boot 6471712 vntsd cannot be disabled via svcadm unless issued twice.
author lm66018
date Fri, 22 Sep 2006 21:06:19 -0700
parents 65c5d20aa275
children aa37b7e3c5c7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
1 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
2 * CDDL HEADER START
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
3 *
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
5 * Common Development and Distribution License (the "License").
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
6 * You may not use this file except in compliance with the License.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
7 *
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
10 * See the License for the specific language governing permissions
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
11 * and limitations under the License.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
12 *
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
18 *
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
19 * CDDL HEADER END
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
20 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
21
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
22 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
24 * Use is subject to license terms.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
25 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
26
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
27 #ifndef _VDC_H
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
28 #define _VDC_H
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
29
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
30 #pragma ident "%Z%%M% %I% %E% SMI"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
31
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
32 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
33 * Virtual disk client implementation definitions
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
34 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
35
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
36 #include <sys/sysmacros.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
37 #include <sys/note.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
38
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
39 #include <sys/ldc.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
40 #include <sys/vio_mailbox.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
41 #include <sys/vdsk_mailbox.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
42 #include <sys/vdsk_common.h>
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
43
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
44 #ifdef __cplusplus
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
45 extern "C" {
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
46 #endif
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
47
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
48 #define VDC_DRIVER_NAME "vdc"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
49
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
50 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
51 * Bit-field values to indicate if parts of the vdc driver are initialised.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
52 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
53 #define VDC_SOFT_STATE 0x0001
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
54 #define VDC_LOCKS 0x0002
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
55 #define VDC_MINOR 0x0004
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
56 #define VDC_THREAD 0x0008
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
57 #define VDC_LDC 0x0010
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
58 #define VDC_LDC_INIT 0x0020
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
59 #define VDC_LDC_CB 0x0040
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
60 #define VDC_LDC_OPEN 0x0080
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
61 #define VDC_DRING_INIT 0x0100 /* The DRing was created */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
62 #define VDC_DRING_BOUND 0x0200 /* The DRing was bound to an LDC channel */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
63 #define VDC_DRING_LOCAL 0x0400 /* The local private DRing was allocated */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
64 #define VDC_DRING_ENTRY 0x0800 /* At least one DRing entry was initialised */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
65 #define VDC_DRING (VDC_DRING_INIT | VDC_DRING_BOUND | \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
66 VDC_DRING_LOCAL | VDC_DRING_ENTRY)
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
67 #define VDC_HANDSHAKE 0x1000 /* Indicates if a handshake is in progress */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
68 #define VDC_HANDSHAKE_STOP 0x2000 /* stop further handshakes */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
69
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
70 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
71 * Definitions of strings to be used to create device node properties.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
72 * (vdc uses the capitalised versions of these properties as they are 64-bit)
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
73 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
74 #define VDC_NBLOCKS_PROP_NAME "Nblocks"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
75 #define VDC_SIZE_PROP_NAME "Size"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
76
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
77 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
78 * Definitions of MD nodes/properties.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
79 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
80 #define VDC_MD_CHAN_NAME "channel-endpoint"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
81 #define VDC_MD_VDEV_NAME "virtual-device"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
82 #define VDC_MD_DISK_NAME "disk"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
83 #define VDC_MD_CFG_HDL "cfg-handle"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
84 #define VDC_ID_PROP "id"
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
85
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
86 /*
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
87 * Definition of actions to be carried out when processing the sequence ID
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
88 * of a message received from the vDisk server. The function verifying the
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
89 * sequence number checks the 'seq_num_xxx' fields in the soft state and
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
90 * returns whether the message should be processed (VDC_SEQ_NUM_TODO) or
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
91 * whether it was it was previously processed (VDC_SEQ_NUM_SKIP).
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
92 */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
93 #define VDC_SEQ_NUM_INVALID -1 /* Error */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
94 #define VDC_SEQ_NUM_SKIP 0 /* Request already processed */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
95 #define VDC_SEQ_NUM_TODO 1 /* Request needs processing */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
96
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
97 /*
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
98 * Scheme to store the instance number and the slice number in the minor number.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
99 * (Uses the same format and definitions as the sd(7D) driver)
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
100 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
101 #define VD_MAKE_DEV(instance, minor) ((instance << SDUNIT_SHIFT) | minor)
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
102
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
103 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
104 * variables controlling how long to wait before timing out and how many
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
105 * retries to attempt before giving up when communicating with vds.
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
106 *
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
107 * These values need to be sufficiently large so that a guest can survive
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
108 * the reboot of the service domain.
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
109 */
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
110 #define VDC_RETRIES 10
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
111
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
112 #define VDC_USEC_TIMEOUT_MIN (30 * MICROSEC) /* 30 sec */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
113
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
114 /*
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
115 * This macro returns the number of Hz that the vdc driver should wait before
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
116 * a timeout is triggered. The 'timeout' parameter specifiecs the wait
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
117 * time in Hz. The 'mul' parameter allows for a multiplier to be
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
118 * specified allowing for a backoff to be implemented (e.g. using the
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
119 * retry number as a multiplier) where the wait time will get longer if
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
120 * there is no response on the previous retry.
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
121 */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
122 #define VD_GET_TIMEOUT_HZ(timeout, mul) \
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
123 (ddi_get_lbolt() + ((timeout) * MAX(1, (mul))))
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
124
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
125 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
126 * Macros to manipulate Descriptor Ring variables in the soft state
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
127 * structure.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
128 */
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
129 #define VDC_GET_NEXT_REQ_ID(vdc) ((vdc)->req_id++)
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
130
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
131 #define VDC_GET_DRING_ENTRY_PTR(vdc, idx) \
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
132 (vd_dring_entry_t *)((vdc)->dring_mem_info.vaddr + \
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
133 (idx * (vdc)->dring_entry_size))
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
134
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
135 #define VDC_MARK_DRING_ENTRY_FREE(vdc, idx) \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
136 { \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
137 vd_dring_entry_t *dep = NULL; \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
138 ASSERT(vdc != NULL); \
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
139 ASSERT((idx >= 0) && (idx < vdc->dring_len)); \
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
140 ASSERT(vdc->dring_mem_info.vaddr != NULL); \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
141 dep = (vd_dring_entry_t *)(vdc->dring_mem_info.vaddr + \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
142 (idx * vdc->dring_entry_size)); \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
143 ASSERT(dep != NULL); \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
144 dep->hdr.dstate = VIO_DESC_FREE; \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
145 }
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
146
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
147 /* Initialise the Session ID and Sequence Num in the DRing msg */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
148 #define VDC_INIT_DRING_DATA_MSG_IDS(dmsg, vdc) \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
149 ASSERT(vdc != NULL); \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
150 dmsg.tag.vio_sid = vdc->session_id; \
2032
b9ba1b330453 6422255 vdc could handle handshake restarts better
lm66018
parents: 1991
diff changeset
151 dmsg.seq_num = vdc->seq_num;
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
152
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
153 /*
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
154 * The states that the read thread can be in.
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
155 */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
156 typedef enum vdc_rd_state {
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
157 VDC_READ_IDLE, /* idling - conn is not up */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
158 VDC_READ_WAITING, /* waiting for data */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
159 VDC_READ_PENDING, /* pending data avail for read */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
160 VDC_READ_RESET /* channel was reset - stop reads */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
161 } vdc_rd_state_t;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
162
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
163 /*
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
164 * The states that the vdc-vds connection can be in.
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
165 */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
166 typedef enum vdc_state {
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
167 VDC_STATE_INIT, /* device is initialized */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
168 VDC_STATE_INIT_WAITING, /* waiting for ldc connection */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
169 VDC_STATE_NEGOTIATE, /* doing handshake negotiation */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
170 VDC_STATE_HANDLE_PENDING, /* handle requests in backup dring */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
171 VDC_STATE_RUNNING, /* running and accepting requests */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
172 VDC_STATE_DETACH, /* detaching */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
173 VDC_STATE_RESETTING /* resetting connection with vds */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
174 } vdc_state_t;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
175
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
176 /*
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
177 * The states that the vdc instance can be in.
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
178 */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
179 typedef enum vdc_lc_state {
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
180 VDC_LC_ATTACHING, /* driver is attaching */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
181 VDC_LC_ONLINE, /* driver is attached and online */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
182 VDC_LC_DETACHING /* driver is detaching */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
183 } vdc_lc_state_t;
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
184
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
185 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
186 * Local Descriptor Ring entry
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
187 *
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
188 * vdc creates a Local (private) descriptor ring the same size as the
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
189 * public descriptor ring it exports to vds.
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
190 */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
191
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
192 typedef enum {
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
193 VIO_read_dir, /* read data from server */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
194 VIO_write_dir, /* write data to server */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
195 VIO_both_dir /* transfer both in and out in same buffer */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
196 } vio_desc_direction_t;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
197
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
198 typedef enum {
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
199 CB_STRATEGY, /* non-blocking strategy call */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
200 CB_SYNC /* synchronous operation */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
201 } vio_cb_type_t;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
202
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
203 typedef struct vdc_local_desc {
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
204 boolean_t is_free; /* local state - inuse or not */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
205
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
206 int operation; /* VD_OP_xxx to be performed */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
207 caddr_t addr; /* addr passed in by consumer */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
208 int slice;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
209 diskaddr_t offset; /* disk offset */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
210 size_t nbytes;
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
211 vio_cb_type_t cb_type; /* operation type blk/nonblk */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
212 void *cb_arg; /* buf passed to strategy() */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
213 vio_desc_direction_t dir; /* direction of transfer */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
214
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
215 caddr_t align_addr; /* used if addr non-aligned */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
216 ldc_mem_handle_t desc_mhdl; /* Mem handle of buf */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
217 vd_dring_entry_t *dep; /* public Dring Entry Pointer */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
218
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
219 } vdc_local_desc_t;
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
220
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
221 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
222 * vdc soft state structure
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
223 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
224 typedef struct vdc {
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
225
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
226 kmutex_t lock; /* protects next 2 sections of vars */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
227 kcondvar_t running_cv; /* signal when upper layers can send */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
228 kcondvar_t initwait_cv; /* signal when ldc conn is up */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
229 kcondvar_t dring_free_cv; /* signal when desc is avail */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
230 kcondvar_t membind_cv; /* signal when mem can be bound */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
231 boolean_t self_reset;
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
232
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
233 int initialized; /* keeps track of what's init'ed */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
234 vdc_lc_state_t lifecycle; /* Current state of the vdc instance */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
235
2032
b9ba1b330453 6422255 vdc could handle handshake restarts better
lm66018
parents: 1991
diff changeset
236 int hshake_cnt; /* number of failed handshakes */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
237 int open_count; /* count of outstanding opens */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
238 int dkio_flush_pending; /* # outstanding DKIO flushes */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
239
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
240 kthread_t *msg_proc_thr; /* main msg processing thread */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
241
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
242 kmutex_t read_lock; /* lock to protect read */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
243 kcondvar_t read_cv; /* cv to wait for READ events */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
244 vdc_rd_state_t read_state; /* current read state */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
245
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
246 uint32_t sync_op_cnt; /* num of active sync operations */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
247 boolean_t sync_op_pending; /* sync operation is pending */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
248 boolean_t sync_op_blocked; /* blocked waiting to do sync op */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
249 uint32_t sync_op_status; /* status of sync operation */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
250 kcondvar_t sync_pending_cv; /* cv wait for sync op to finish */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
251 kcondvar_t sync_blocked_cv; /* cv wait for other syncs to finish */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
252
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
253 uint64_t session_id; /* common ID sent with all messages */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
254 uint64_t seq_num; /* most recent sequence num generated */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
255 uint64_t seq_num_reply; /* Last seq num ACK/NACK'ed by vds */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
256 uint64_t req_id; /* Most recent Request ID generated */
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
257 uint64_t req_id_proc; /* Last request ID processed by vdc */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
258 vdc_state_t state; /* Current disk client-server state */
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
259
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
260 dev_info_t *dip; /* device info pointer */
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
261 int instance; /* driver instance number */
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
262
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
263 vio_ver_t ver; /* version number agreed with server */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
264 vd_disk_type_t vdisk_type; /* type of device/disk being imported */
2531
65c5d20aa275 6419154 libpcp pcp_init routine should accept service names
narayan
parents: 2410
diff changeset
265 vd_disk_label_t vdisk_label; /* label type of device/disk imported */
65c5d20aa275 6419154 libpcp pcp_init routine should accept service names
narayan
parents: 2410
diff changeset
266 uint64_t vdisk_size; /* device size in blocks */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
267 uint64_t max_xfer_sz; /* maximum block size of a descriptor */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
268 uint64_t block_size; /* device block size used */
2032
b9ba1b330453 6422255 vdc could handle handshake restarts better
lm66018
parents: 1991
diff changeset
269 struct dk_label *label; /* structure to store disk label */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
270 struct dk_cinfo *cinfo; /* structure to store DKIOCINFO data */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
271 struct dk_minfo *minfo; /* structure for DKIOCGMEDIAINFO data */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
272 struct vtoc *vtoc; /* structure to store VTOC data */
2531
65c5d20aa275 6419154 libpcp pcp_init routine should accept service names
narayan
parents: 2410
diff changeset
273 ddi_devid_t devid; /* device id */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
274
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
275 ldc_mem_info_t dring_mem_info; /* dring information */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
276 uint_t dring_curr_idx; /* current index */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
277 uint32_t dring_len; /* dring length */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
278 uint32_t dring_max_cookies; /* dring max cookies */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
279 uint32_t dring_cookie_count; /* num cookies */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
280 uint32_t dring_entry_size; /* descriptor size */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
281 ldc_mem_cookie_t *dring_cookie; /* dring cookies */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
282 uint64_t dring_ident; /* dring ident */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
283
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
284 uint64_t threads_pending; /* num of threads */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
285
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
286 vdc_local_desc_t *local_dring; /* local dring */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
287 vdc_local_desc_t *local_dring_backup; /* local dring backup */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
288 int local_dring_backup_tail; /* backup dring tail */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
289 int local_dring_backup_len; /* backup dring len */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
290
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
291 uint64_t ldc_id; /* LDC channel id */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
292 ldc_status_t ldc_state; /* LDC channel state */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
293 ldc_handle_t ldc_handle; /* LDC handle */
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
294 ldc_dring_handle_t ldc_dring_hdl; /* LDC dring handle */
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
295 } vdc_t;
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
296
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
297 /*
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
298 * Debugging macros
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
299 */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
300 #ifdef DEBUG
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
301 extern int vdc_msglevel;
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
302 extern uint64_t vdc_matchinst;
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
303
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
304 #define DMSG(_vdc, err_level, format, ...) \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
305 do { \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
306 if (vdc_msglevel > err_level && \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
307 (vdc_matchinst & (1ull << (_vdc)->instance))) \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
308 cmn_err(CE_CONT, "?[%d,t@%p] %s: "format, \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
309 (_vdc)->instance, (void *)curthread, \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
310 __func__, __VA_ARGS__); \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
311 _NOTE(CONSTANTCONDITION) \
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
312 } while (0);
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
313
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
314 #define DMSGX(err_level, format, ...) \
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
315 do { \
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
316 if (vdc_msglevel > err_level) \
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
317 cmn_err(CE_CONT, "?%s: "format, __func__, __VA_ARGS__);\
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
318 _NOTE(CONSTANTCONDITION) \
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
319 } while (0);
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
320
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
321 #define VDC_DUMP_DRING_MSG(dmsgp) \
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
322 DMSGX(0, "sq:%lu start:%d end:%d ident:%lu\n", \
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
323 dmsgp->seq_num, dmsgp->start_idx, \
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
324 dmsgp->end_idx, dmsgp->dring_ident);
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
325
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
326 #else /* !DEBUG */
2410
0faef06c73cd 6432376 vds and vdc don't negotiate max transfer size supported correctly
lm66018
parents: 2032
diff changeset
327 #define DMSG(err_level, ...)
2793
a30c4090b49f 6458676 memory leak with 12 hours all_solaris_tests.
lm66018
parents: 2531
diff changeset
328 #define DMSGX(err_level, format, ...)
1991
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
329 #define VDC_DUMP_DRING_MSG(dmsgp)
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
330
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
331 #endif /* !DEBUG */
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
332
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
333 #ifdef __cplusplus
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
334 }
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
335 #endif
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
336
f29baf5bf770 FWARC 2005/633 Project Q Logial Domaining Umbrella
heppo
parents:
diff changeset
337 #endif /* _VDC_H */