usr/src/uts/sun4v/io/vdc.c
1003
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1007
vdc_create_device_nodes_efi(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1009
ddi_remove_minor_node(vdc->dip, "h");
usr/src/uts/sun4v/io/vdc.c
1010
ddi_remove_minor_node(vdc->dip, "h,raw");
usr/src/uts/sun4v/io/vdc.c
1012
if (ddi_create_minor_node(vdc->dip, "wd", S_IFBLK,
usr/src/uts/sun4v/io/vdc.c
1013
VD_MAKE_DEV(vdc->instance, VD_EFI_WD_SLICE),
usr/src/uts/sun4v/io/vdc.c
1016
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1021
vdc->initialized |= VDC_MINOR;
usr/src/uts/sun4v/io/vdc.c
1023
if (ddi_create_minor_node(vdc->dip, "wd,raw", S_IFCHR,
usr/src/uts/sun4v/io/vdc.c
1024
VD_MAKE_DEV(vdc->instance, VD_EFI_WD_SLICE),
usr/src/uts/sun4v/io/vdc.c
1027
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1035
vdc_create_device_nodes_vtoc(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1037
ddi_remove_minor_node(vdc->dip, "wd");
usr/src/uts/sun4v/io/vdc.c
1038
ddi_remove_minor_node(vdc->dip, "wd,raw");
usr/src/uts/sun4v/io/vdc.c
1040
if (ddi_create_minor_node(vdc->dip, "h", S_IFBLK,
usr/src/uts/sun4v/io/vdc.c
1041
VD_MAKE_DEV(vdc->instance, VD_EFI_WD_SLICE),
usr/src/uts/sun4v/io/vdc.c
1044
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1049
vdc->initialized |= VDC_MINOR;
usr/src/uts/sun4v/io/vdc.c
1051
if (ddi_create_minor_node(vdc->dip, "h,raw", S_IFCHR,
usr/src/uts/sun4v/io/vdc.c
1052
VD_MAKE_DEV(vdc->instance, VD_EFI_WD_SLICE),
usr/src/uts/sun4v/io/vdc.c
1055
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1084
vdc_create_device_nodes(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1092
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
1094
instance = vdc->instance;
usr/src/uts/sun4v/io/vdc.c
1095
dip = vdc->dip;
usr/src/uts/sun4v/io/vdc.c
1097
switch (vdc->vdisk_type) {
usr/src/uts/sun4v/io/vdc.c
1118
if (vdc->vdisk_label == VD_DISK_LABEL_EFI)
usr/src/uts/sun4v/io/vdc.c
1119
status = vdc_create_device_nodes_efi(vdc);
usr/src/uts/sun4v/io/vdc.c
1121
status = vdc_create_device_nodes_vtoc(vdc);
usr/src/uts/sun4v/io/vdc.c
1136
vdc->initialized |= VDC_MINOR;
usr/src/uts/sun4v/io/vdc.c
1160
vdc_t *vdc;
usr/src/uts/sun4v/io/vdc.c
1164
vdc = ddi_get_soft_state(vdc_state, instance);
usr/src/uts/sun4v/io/vdc.c
1166
if (dev == DDI_DEV_T_ANY || vdc == NULL) {
usr/src/uts/sun4v/io/vdc.c
1171
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1172
(void) vdc_validate_geometry(vdc);
usr/src/uts/sun4v/io/vdc.c
1173
if (vdc->vdisk_label == VD_DISK_LABEL_UNK) {
usr/src/uts/sun4v/io/vdc.c
1174
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1178
nblocks = vdc->slice[VDCPART(dev)].nblocks;
usr/src/uts/sun4v/io/vdc.c
1179
blksize = vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
1180
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1202
vdc_is_opened(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1208
if (vdc->open_lyr[i] > 0)
usr/src/uts/sun4v/io/vdc.c
1214
if (vdc->open[i] != 0)
usr/src/uts/sun4v/io/vdc.c
1222
vdc_mark_opened(vdc_t *vdc, int slice, int flag, int otyp)
usr/src/uts/sun4v/io/vdc.c
1229
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
1239
if (vdc->vdisk_type == VD_DISK_TYPE_SLICE && slice != 0)
usr/src/uts/sun4v/io/vdc.c
1243
if (vdc->open_excl & slicemask)
usr/src/uts/sun4v/io/vdc.c
1248
if (vdc->open_lyr[slice] > 0)
usr/src/uts/sun4v/io/vdc.c
1251
if (vdc->open[i] & slicemask)
usr/src/uts/sun4v/io/vdc.c
1254
vdc->open_excl |= slicemask;
usr/src/uts/sun4v/io/vdc.c
1259
vdc->open_lyr[slice]++;
usr/src/uts/sun4v/io/vdc.c
1261
vdc->open[otyp] |= slicemask;
usr/src/uts/sun4v/io/vdc.c
1268
vdc_mark_closed(vdc_t *vdc, int slice, int flag, int otyp)
usr/src/uts/sun4v/io/vdc.c
1274
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
1279
ASSERT(vdc->open_lyr[slice] > 0);
usr/src/uts/sun4v/io/vdc.c
1280
vdc->open_lyr[slice]--;
usr/src/uts/sun4v/io/vdc.c
1282
vdc->open[otyp] &= ~slicemask;
usr/src/uts/sun4v/io/vdc.c
1286
vdc->open_excl &= ~slicemask;
usr/src/uts/sun4v/io/vdc.c
129
static int vdc_send(vdc_t *vdc, caddr_t pkt, size_t *msglen);
usr/src/uts/sun4v/io/vdc.c
1296
vdc_t *vdc;
usr/src/uts/sun4v/io/vdc.c
130
static int vdc_do_ldc_init(vdc_t *vdc, vdc_server_t *srvr);
usr/src/uts/sun4v/io/vdc.c
1304
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
1309
DMSG(vdc, 0, "minor = %d flag = %x, otyp = %x\n",
usr/src/uts/sun4v/io/vdc.c
131
static int vdc_start_ldc_connection(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1317
!(VD_OP_SUPPORTED(vdc->operations, VD_OP_BWRITE))) {
usr/src/uts/sun4v/io/vdc.c
132
static int vdc_create_device_nodes(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1321
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1323
status = vdc_mark_opened(vdc, slice, flag, otyp);
usr/src/uts/sun4v/io/vdc.c
1326
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
133
static int vdc_create_device_nodes_efi(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1335
if (vdc->vdisk_type != VD_DISK_TYPE_UNK && nodelay) {
usr/src/uts/sun4v/io/vdc.c
1338
if (vdc->validate_pending > 0) {
usr/src/uts/sun4v/io/vdc.c
1339
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
134
static int vdc_create_device_nodes_vtoc(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1345
(void *)vdc, TQ_NOSLEEP) == TASKQID_INVALID) {
usr/src/uts/sun4v/io/vdc.c
1346
vdc_mark_closed(vdc, slice, flag, otyp);
usr/src/uts/sun4v/io/vdc.c
1347
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
135
static void vdc_create_io_kstats(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1351
vdc->validate_pending++;
usr/src/uts/sun4v/io/vdc.c
1352
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1356
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1358
vdc_validate(vdc);
usr/src/uts/sun4v/io/vdc.c
136
static void vdc_create_err_kstats(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1360
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1362
if (vdc->vdisk_type == VD_DISK_TYPE_UNK ||
usr/src/uts/sun4v/io/vdc.c
1363
(vdc->vdisk_type == VD_DISK_TYPE_SLICE && slice != 0) ||
usr/src/uts/sun4v/io/vdc.c
1364
(!nodelay && (vdc->vdisk_label == VD_DISK_LABEL_UNK ||
usr/src/uts/sun4v/io/vdc.c
1365
vdc->slice[slice].nblocks == 0))) {
usr/src/uts/sun4v/io/vdc.c
1366
vdc_mark_closed(vdc, slice, flag, otyp);
usr/src/uts/sun4v/io/vdc.c
137
static void vdc_set_err_kstats(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1370
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1383
vdc_t *vdc;
usr/src/uts/sun4v/io/vdc.c
1390
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
1395
DMSG(vdc, 0, "[%d] flag = %x, otyp = %x\n", instance, flag, otyp);
usr/src/uts/sun4v/io/vdc.c
140
static int vdc_init_ports(vdc_t *vdc, md_t *mdp, mde_cookie_t vd_nodep);
usr/src/uts/sun4v/io/vdc.c
1407
DMSG(vdc, 0, "[%d] flush failed with error %d on close\n",
usr/src/uts/sun4v/io/vdc.c
141
static void vdc_fini_ports(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1412
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
1413
vdc_mark_closed(vdc, slice, flag, otyp);
usr/src/uts/sun4v/io/vdc.c
1414
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
143
static int vdc_do_ldc_up(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
144
static void vdc_terminate_ldc(vdc_t *vdc, vdc_server_t *srvr);
usr/src/uts/sun4v/io/vdc.c
1440
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
1443
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
1448
DMSG(vdc, 2, "[%d] dump %ld bytes at block 0x%lx : addr=0x%p\n",
usr/src/uts/sun4v/io/vdc.c
145
static int vdc_init_descriptor_ring(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1452
if ((blkno & vdc->vio_bmask) != 0) {
usr/src/uts/sun4v/io/vdc.c
1453
DMSG(vdc, 0, "Misaligned block number (%lu)\n", blkno);
usr/src/uts/sun4v/io/vdc.c
1456
vio_blkno = blkno >> vdc->vio_bshift;
usr/src/uts/sun4v/io/vdc.c
146
static void vdc_destroy_descriptor_ring(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1464
rv = vdc_do_op(vdc, VD_OP_BWRITE, addr, nbytes, VDCPART(dev),
usr/src/uts/sun4v/io/vdc.c
1468
DMSG(vdc, 0, "Failed to do a disk dump (err=%d)\n", rv);
usr/src/uts/sun4v/io/vdc.c
147
static int vdc_setup_devid(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1472
DMSG(vdc, 0, "[%d] End\n", instance);
usr/src/uts/sun4v/io/vdc.c
1495
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
1500
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
1507
DMSG(vdc, 2, "[%d] %s %ld bytes at block %llx : b_addr=0x%p\n",
usr/src/uts/sun4v/io/vdc.c
151
static void vdc_store_label_unk(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
152
static boolean_t vdc_is_opened(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1526
if ((buf->b_lblkno & vdc->vio_bmask) != 0) {
usr/src/uts/sun4v/io/vdc.c
153
static void vdc_update_size(vdc_t *vdc, size_t, size_t, size_t);
usr/src/uts/sun4v/io/vdc.c
1531
vio_blkno = buf->b_lblkno >> vdc->vio_bshift;
usr/src/uts/sun4v/io/vdc.c
1534
(void) vdc_do_op(vdc, op, (caddr_t)buf->b_un.b_addr,
usr/src/uts/sun4v/io/vdc.c
154
static int vdc_update_vio_bsize(vdc_t *vdc, uint32_t);
usr/src/uts/sun4v/io/vdc.c
1557
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
1560
vdc = ddi_get_soft_state(vdc_state, instance);
usr/src/uts/sun4v/io/vdc.c
1561
VERIFY(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
1563
if (bufp->b_bcount > (vdc->max_xfer_sz * vdc->vdisk_bsize)) {
usr/src/uts/sun4v/io/vdc.c
1564
bufp->b_bcount = vdc->max_xfer_sz * vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
157
static int vdc_init_ver_negotiation(vdc_t *vdc, vio_ver_t ver);
usr/src/uts/sun4v/io/vdc.c
159
static int vdc_init_attr_negotiation(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
161
static int vdc_init_dring_negotiate(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
1625
vdc_init_ver_negotiation(vdc_t *vdc, vio_ver_t ver)
usr/src/uts/sun4v/io/vdc.c
1631
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
1632
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
1634
DMSG(vdc, 0, "[%d] Entered.\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1640
vdc->session_id = ((uint32_t)gettick() & 0xffffffff);
usr/src/uts/sun4v/io/vdc.c
1641
DMSG(vdc, 0, "[%d] Set SID to 0x%lx\n", vdc->instance, vdc->session_id);
usr/src/uts/sun4v/io/vdc.c
1646
pkt.tag.vio_sid = vdc->session_id;
usr/src/uts/sun4v/io/vdc.c
1651
status = vdc_send(vdc, (caddr_t)&pkt, &msglen);
usr/src/uts/sun4v/io/vdc.c
1652
DMSG(vdc, 0, "[%d] Ver info sent (status = %d)\n",
usr/src/uts/sun4v/io/vdc.c
1653
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
1655
DMSG(vdc, 0, "[%d] Failed to send Ver negotiation info: "
usr/src/uts/sun4v/io/vdc.c
1656
"id(%lx) rv(%d) size(%ld)", vdc->instance,
usr/src/uts/sun4v/io/vdc.c
1657
vdc->curr_server->ldc_handle, status, msglen);
usr/src/uts/sun4v/io/vdc.c
168
static void vdc_process_msg_thread(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
169
static int vdc_recv(vdc_t *vdc, vio_msg_t *msgp, size_t *nbytesp);
usr/src/uts/sun4v/io/vdc.c
172
static int vdc_process_data_msg(vdc_t *vdc, vio_msg_t *msg);
usr/src/uts/sun4v/io/vdc.c
1721
vdc_init_attr_negotiation(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1727
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
1728
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
173
static int vdc_handle_ver_msg(vdc_t *vdc, vio_ver_msg_t *ver_msg);
usr/src/uts/sun4v/io/vdc.c
1730
DMSG(vdc, 0, "[%d] entered\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
1736
pkt.tag.vio_sid = vdc->session_id;
usr/src/uts/sun4v/io/vdc.c
1738
pkt.max_xfer_sz = vdc->max_xfer_sz;
usr/src/uts/sun4v/io/vdc.c
1739
pkt.vdisk_block_size = vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
174
static int vdc_handle_attr_msg(vdc_t *vdc, vd_attr_msg_t *attr_msg);
usr/src/uts/sun4v/io/vdc.c
1746
status = vdc_send(vdc, (caddr_t)&pkt, &msglen);
usr/src/uts/sun4v/io/vdc.c
1747
DMSG(vdc, 0, "Attr info sent (status = %d)\n", status);
usr/src/uts/sun4v/io/vdc.c
175
static int vdc_handle_dring_reg_msg(vdc_t *vdc, vio_dring_reg_msg_t *msg);
usr/src/uts/sun4v/io/vdc.c
1750
DMSG(vdc, 0, "[%d] Failed to send Attr negotiation info: "
usr/src/uts/sun4v/io/vdc.c
1751
"id(%lx) rv(%d) size(%ld)", vdc->instance,
usr/src/uts/sun4v/io/vdc.c
1752
vdc->curr_server->ldc_handle, status, msglen);
usr/src/uts/sun4v/io/vdc.c
1817
vdc_init_dring_negotiate(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
1825
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
1826
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
1829
status = vdc_init_descriptor_ring(vdc);
usr/src/uts/sun4v/io/vdc.c
1836
DMSG(vdc, 0, "[%d] Failed to init DRing (status = %d)\n",
usr/src/uts/sun4v/io/vdc.c
1837
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
1841
DMSG(vdc, 0, "[%d] Init of descriptor ring completed (status = %d)\n",
usr/src/uts/sun4v/io/vdc.c
1842
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
1848
pkt.tag.vio_sid = vdc->session_id;
usr/src/uts/sun4v/io/vdc.c
1851
pkt.num_descriptors = vdc->dring_len;
usr/src/uts/sun4v/io/vdc.c
1852
pkt.descriptor_size = vdc->dring_entry_size;
usr/src/uts/sun4v/io/vdc.c
1854
pkt.ncookies = vdc->dring_cookie_count;
usr/src/uts/sun4v/io/vdc.c
1855
pkt.cookie[0] = vdc->dring_cookie[0]; /* for now just one cookie */
usr/src/uts/sun4v/io/vdc.c
1857
status = vdc_send(vdc, (caddr_t)&pkt, &msglen);
usr/src/uts/sun4v/io/vdc.c
1859
DMSG(vdc, 0, "[%d] Failed to register DRing (err = %d)",
usr/src/uts/sun4v/io/vdc.c
186
static int vdc_do_op(vdc_t *vdc, int op, caddr_t addr, size_t nbytes,
usr/src/uts/sun4v/io/vdc.c
1860
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
192
static int vdc_depopulate_descriptor(vdc_t *vdc, uint_t idx);
usr/src/uts/sun4v/io/vdc.c
194
static int vdc_verify_seq_num(vdc_t *vdc, vio_dring_msg_t *dring_msg);
usr/src/uts/sun4v/io/vdc.c
200
static void vdc_create_fake_geometry(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
201
static int vdc_validate_geometry(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
202
static void vdc_validate(vdc_t *vdc);
usr/src/uts/sun4v/io/vdc.c
2025
vdc_recv(vdc_t *vdc, vio_msg_t *msgp, size_t *nbytesp)
usr/src/uts/sun4v/io/vdc.c
204
static int vdc_null_copy_func(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2052
status = ldc_read(vdc->curr_server->ldc_handle,
usr/src/uts/sun4v/io/vdc.c
206
static int vdc_get_wce_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2064
DMSG(vdc, 0, "ldc_read returned %d\n", status);
usr/src/uts/sun4v/io/vdc.c
2073
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
2075
while (vdc->read_state != VDC_READ_PENDING) {
usr/src/uts/sun4v/io/vdc.c
2078
if (vdc->read_state == VDC_READ_RESET) {
usr/src/uts/sun4v/io/vdc.c
2079
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
208
static int vdc_set_wce_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2083
vdc->read_state = VDC_READ_WAITING;
usr/src/uts/sun4v/io/vdc.c
2084
cv_wait(&vdc->read_cv, &vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
2087
vdc->read_state = VDC_READ_IDLE;
usr/src/uts/sun4v/io/vdc.c
2088
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
210
static int vdc_get_vtoc_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
212
static int vdc_set_vtoc_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
214
static int vdc_get_extvtoc_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
216
static int vdc_set_extvtoc_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2164
vdc_send(vdc_t *vdc, caddr_t pkt, size_t *msglen)
usr/src/uts/sun4v/io/vdc.c
2170
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
2171
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
2176
vdc_decode_tag(vdc, (vio_msg_t *)(uintptr_t)pkt);
usr/src/uts/sun4v/io/vdc.c
218
static int vdc_get_geom_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2186
status = ldc_write(vdc->curr_server->ldc_handle, pkt, &size);
usr/src/uts/sun4v/io/vdc.c
2199
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
220
static int vdc_set_geom_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
2200
if ((vdc->read_state == VDC_READ_WAITING) ||
usr/src/uts/sun4v/io/vdc.c
2201
(vdc->read_state == VDC_READ_RESET))
usr/src/uts/sun4v/io/vdc.c
2202
cv_signal(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
2203
vdc->read_state = VDC_READ_RESET;
usr/src/uts/sun4v/io/vdc.c
2204
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
2207
if (vdc->state == VDC_STATE_INIT_WAITING) {
usr/src/uts/sun4v/io/vdc.c
2208
DMSG(vdc, 0, "[%d] write reset - "
usr/src/uts/sun4v/io/vdc.c
2209
"vdc is resetting ..\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2210
vdc->state = VDC_STATE_RESETTING;
usr/src/uts/sun4v/io/vdc.c
2211
cv_signal(&vdc->initwait_cv);
usr/src/uts/sun4v/io/vdc.c
222
static int vdc_get_efi_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
224
static int vdc_set_efi_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
227
static void vdc_ownership_update(vdc_t *vdc, int ownership_flags);
usr/src/uts/sun4v/io/vdc.c
228
static int vdc_access_set(vdc_t *vdc, uint64_t flags);
usr/src/uts/sun4v/io/vdc.c
229
static vdc_io_t *vdc_eio_queue(vdc_t *vdc, int index);
usr/src/uts/sun4v/io/vdc.c
230
static void vdc_eio_unqueue(vdc_t *vdc, clock_t deadline,
usr/src/uts/sun4v/io/vdc.c
232
static int vdc_eio_check(vdc_t *vdc, int flags);
usr/src/uts/sun4v/io/vdc.c
2365
vdc_init_ports(vdc_t *vdc, md_t *mdp, mde_cookie_t vd_nodep)
usr/src/uts/sun4v/io/vdc.c
2404
vdc->num_servers = 0;
usr/src/uts/sun4v/io/vdc.c
2410
srvr->vdcp = vdc;
usr/src/uts/sun4v/io/vdc.c
2461
if (vdc_do_ldc_init(vdc, srvr) != 0) {
usr/src/uts/sun4v/io/vdc.c
2470
vdc->server_list = srvr;
usr/src/uts/sun4v/io/vdc.c
2475
vdc->num_servers++;
usr/src/uts/sun4v/io/vdc.c
2479
if (vdc->server_list != NULL) {
usr/src/uts/sun4v/io/vdc.c
2480
vdc->curr_server = vdc->server_list;
usr/src/uts/sun4v/io/vdc.c
2509
vdc_do_ldc_up(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
2514
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
2516
DMSG(vdc, 0, "[%d] Bringing up channel %lx\n",
usr/src/uts/sun4v/io/vdc.c
2517
vdc->instance, vdc->curr_server->ldc_id);
usr/src/uts/sun4v/io/vdc.c
2519
if (vdc->lifecycle == VDC_LC_DETACHING)
usr/src/uts/sun4v/io/vdc.c
2522
if ((status = ldc_up(vdc->curr_server->ldc_handle)) != 0) {
usr/src/uts/sun4v/io/vdc.c
2525
DMSG(vdc, 0, "[%d] ldc_up(%lx,...) return %d\n",
usr/src/uts/sun4v/io/vdc.c
2526
vdc->instance, vdc->curr_server->ldc_id, status);
usr/src/uts/sun4v/io/vdc.c
2530
DMSG(vdc, 0, "[%d] Failed to bring up LDC: "
usr/src/uts/sun4v/io/vdc.c
2531
"channel=%ld, err=%d", vdc->instance,
usr/src/uts/sun4v/io/vdc.c
2532
vdc->curr_server->ldc_id, status);
usr/src/uts/sun4v/io/vdc.c
2537
if (ldc_status(vdc->curr_server->ldc_handle, &ldc_state) == 0) {
usr/src/uts/sun4v/io/vdc.c
2538
vdc->curr_server->ldc_state = ldc_state;
usr/src/uts/sun4v/io/vdc.c
2540
DMSG(vdc, 0, "[%d] LDC channel already up\n",
usr/src/uts/sun4v/io/vdc.c
2541
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2542
vdc->seq_num = 1;
usr/src/uts/sun4v/io/vdc.c
2543
vdc->seq_num_reply = 0;
usr/src/uts/sun4v/io/vdc.c
2564
vdc_terminate_ldc(vdc_t *vdc, vdc_server_t *srvr)
usr/src/uts/sun4v/io/vdc.c
2566
int instance = ddi_get_instance(vdc->dip);
usr/src/uts/sun4v/io/vdc.c
2569
DMSG(vdc, 0, "[%d] ldc_close()\n", instance);
usr/src/uts/sun4v/io/vdc.c
2573
DMSG(vdc, 0, "[%d] ldc_unreg_callback()\n", instance);
usr/src/uts/sun4v/io/vdc.c
2577
DMSG(vdc, 0, "[%d] ldc_fini()\n", instance);
usr/src/uts/sun4v/io/vdc.c
2600
vdc_fini_ports(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
2602
int instance = ddi_get_instance(vdc->dip);
usr/src/uts/sun4v/io/vdc.c
2605
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
2606
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
2608
DMSG(vdc, 0, "[%d] initialized=%x\n", instance, vdc->initialized);
usr/src/uts/sun4v/io/vdc.c
2610
srvr = vdc->server_list;
usr/src/uts/sun4v/io/vdc.c
2614
vdc_terminate_ldc(vdc, srvr);
usr/src/uts/sun4v/io/vdc.c
2624
vdc->server_list = NULL;
usr/src/uts/sun4v/io/vdc.c
2625
vdc->num_servers = 0;
usr/src/uts/sun4v/io/vdc.c
2647
vdc_init_descriptor_ring(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
2653
DMSG(vdc, 0, "[%d] initialized=%x\n", vdc->instance, vdc->initialized);
usr/src/uts/sun4v/io/vdc.c
2655
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
2656
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
2661
if ((vdc->initialized & VDC_DRING_INIT) == 0) {
usr/src/uts/sun4v/io/vdc.c
2662
DMSG(vdc, 0, "[%d] ldc_mem_dring_create\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2670
if ((vdc->max_xfer_sz * vdc->vdisk_bsize) < maxphys) {
usr/src/uts/sun4v/io/vdc.c
2671
DMSG(vdc, 0, "[%d] using minimum DRing size\n",
usr/src/uts/sun4v/io/vdc.c
2672
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2673
vdc->dring_max_cookies = maxphys / PAGESIZE;
usr/src/uts/sun4v/io/vdc.c
2675
vdc->dring_max_cookies =
usr/src/uts/sun4v/io/vdc.c
2676
(vdc->max_xfer_sz * vdc->vdisk_bsize) / PAGESIZE;
usr/src/uts/sun4v/io/vdc.c
2678
vdc->dring_entry_size = (sizeof (vd_dring_entry_t) +
usr/src/uts/sun4v/io/vdc.c
2680
(vdc->dring_max_cookies - 1)));
usr/src/uts/sun4v/io/vdc.c
2681
vdc->dring_len = VD_DRING_LEN;
usr/src/uts/sun4v/io/vdc.c
2683
status = ldc_mem_dring_create(vdc->dring_len,
usr/src/uts/sun4v/io/vdc.c
2684
vdc->dring_entry_size, &vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
2685
if ((vdc->dring_hdl == 0) || (status != 0)) {
usr/src/uts/sun4v/io/vdc.c
2686
DMSG(vdc, 0, "[%d] Descriptor ring creation failed",
usr/src/uts/sun4v/io/vdc.c
2687
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2690
vdc->initialized |= VDC_DRING_INIT;
usr/src/uts/sun4v/io/vdc.c
2693
if ((vdc->initialized & VDC_DRING_BOUND) == 0) {
usr/src/uts/sun4v/io/vdc.c
2694
DMSG(vdc, 0, "[%d] ldc_mem_dring_bind\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2695
vdc->dring_cookie =
usr/src/uts/sun4v/io/vdc.c
2698
status = ldc_mem_dring_bind(vdc->curr_server->ldc_handle,
usr/src/uts/sun4v/io/vdc.c
2699
vdc->dring_hdl,
usr/src/uts/sun4v/io/vdc.c
2701
&vdc->dring_cookie[0],
usr/src/uts/sun4v/io/vdc.c
2702
&vdc->dring_cookie_count);
usr/src/uts/sun4v/io/vdc.c
2704
DMSG(vdc, 0, "[%d] Failed to bind descriptor ring "
usr/src/uts/sun4v/io/vdc.c
2706
vdc->instance, vdc->dring_hdl,
usr/src/uts/sun4v/io/vdc.c
2707
vdc->curr_server->ldc_handle, status);
usr/src/uts/sun4v/io/vdc.c
2710
ASSERT(vdc->dring_cookie_count == 1);
usr/src/uts/sun4v/io/vdc.c
2711
vdc->initialized |= VDC_DRING_BOUND;
usr/src/uts/sun4v/io/vdc.c
2714
status = ldc_mem_dring_info(vdc->dring_hdl, &vdc->dring_mem_info);
usr/src/uts/sun4v/io/vdc.c
2716
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
2718
vdc->instance, vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
2722
if ((vdc->initialized & VDC_DRING_LOCAL) == 0) {
usr/src/uts/sun4v/io/vdc.c
2723
DMSG(vdc, 0, "[%d] local dring\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2726
vdc->local_dring =
usr/src/uts/sun4v/io/vdc.c
2727
kmem_zalloc(vdc->dring_len * sizeof (vdc_local_desc_t),
usr/src/uts/sun4v/io/vdc.c
2729
vdc->initialized |= VDC_DRING_LOCAL;
usr/src/uts/sun4v/io/vdc.c
2738
vdc->initialized |= VDC_DRING_ENTRY;
usr/src/uts/sun4v/io/vdc.c
2739
for (i = 0; i < vdc->dring_len; i++) {
usr/src/uts/sun4v/io/vdc.c
2740
dep = VDC_GET_DRING_ENTRY_PTR(vdc, i);
usr/src/uts/sun4v/io/vdc.c
2743
status = ldc_mem_alloc_handle(vdc->curr_server->ldc_handle,
usr/src/uts/sun4v/io/vdc.c
2744
&vdc->local_dring[i].desc_mhdl);
usr/src/uts/sun4v/io/vdc.c
2746
DMSG(vdc, 0, "![%d] Failed to alloc mem handle for"
usr/src/uts/sun4v/io/vdc.c
2747
" descriptor %d", vdc->instance, i);
usr/src/uts/sun4v/io/vdc.c
2750
vdc->local_dring[i].is_free = B_TRUE;
usr/src/uts/sun4v/io/vdc.c
2751
vdc->local_dring[i].dep = dep;
usr/src/uts/sun4v/io/vdc.c
2755
vdc->dring_curr_idx = VDC_DRING_FIRST_ENTRY;
usr/src/uts/sun4v/io/vdc.c
2773
vdc_destroy_descriptor_ring(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
2781
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
2782
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
2784
DMSG(vdc, 0, "[%d] Entered\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2786
if (vdc->initialized & VDC_DRING_ENTRY) {
usr/src/uts/sun4v/io/vdc.c
2787
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
2788
"[%d] Removing Local DRing entries\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2789
for (i = 0; i < vdc->dring_len; i++) {
usr/src/uts/sun4v/io/vdc.c
2790
ldep = &vdc->local_dring[i];
usr/src/uts/sun4v/io/vdc.c
2797
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
2818
vdc->initialized &= ~VDC_DRING_ENTRY;
usr/src/uts/sun4v/io/vdc.c
2821
if (vdc->initialized & VDC_DRING_LOCAL) {
usr/src/uts/sun4v/io/vdc.c
2822
DMSG(vdc, 0, "[%d] Freeing Local DRing\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2823
kmem_free(vdc->local_dring,
usr/src/uts/sun4v/io/vdc.c
2824
vdc->dring_len * sizeof (vdc_local_desc_t));
usr/src/uts/sun4v/io/vdc.c
2825
vdc->initialized &= ~VDC_DRING_LOCAL;
usr/src/uts/sun4v/io/vdc.c
2828
if (vdc->initialized & VDC_DRING_BOUND) {
usr/src/uts/sun4v/io/vdc.c
2829
DMSG(vdc, 0, "[%d] Unbinding DRing\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2830
status = ldc_mem_dring_unbind(vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
2832
vdc->initialized &= ~VDC_DRING_BOUND;
usr/src/uts/sun4v/io/vdc.c
2834
DMSG(vdc, 0, "[%d] Error %d unbinding DRing %lx",
usr/src/uts/sun4v/io/vdc.c
2835
vdc->instance, status, vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
2837
kmem_free(vdc->dring_cookie, sizeof (ldc_mem_cookie_t));
usr/src/uts/sun4v/io/vdc.c
2840
if (vdc->initialized & VDC_DRING_INIT) {
usr/src/uts/sun4v/io/vdc.c
2841
DMSG(vdc, 0, "[%d] Destroying DRing\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
2842
status = ldc_mem_dring_destroy(vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
2844
vdc->dring_hdl = 0;
usr/src/uts/sun4v/io/vdc.c
2845
bzero(&vdc->dring_mem_info, sizeof (ldc_mem_info_t));
usr/src/uts/sun4v/io/vdc.c
2846
vdc->initialized &= ~VDC_DRING_INIT;
usr/src/uts/sun4v/io/vdc.c
2848
DMSG(vdc, 0, "[%d] Error %d destroying DRing (%lx)",
usr/src/uts/sun4v/io/vdc.c
2849
vdc->instance, status, vdc->dring_hdl);
usr/src/uts/sun4v/io/vdc.c
3237
vdc_do_op(vdc_t *vdc, int op, caddr_t addr, size_t nbytes, int slice,
usr/src/uts/sun4v/io/vdc.c
3256
rv = vdc_send_request(vdc, op, addr, nbytes, slice, offset, bufp,
usr/src/uts/sun4v/io/vdc.c
3271
rv = vdc_drain_response(vdc, bufp);
usr/src/uts/sun4v/io/vdc.c
3277
rv = vdc_wait_for_response(vdc, &vio_msg);
usr/src/uts/sun4v/io/vdc.c
3280
rv = vdc_process_data_msg(vdc, &vio_msg);
usr/src/uts/sun4v/io/vdc.c
3290
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3293
VD_KSTAT_RUNQ_BACK_TO_WAITQ(vdc);
usr/src/uts/sun4v/io/vdc.c
3295
VD_KSTAT_RUNQ_EXIT(vdc);
usr/src/uts/sun4v/io/vdc.c
3299
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3432
vdc_drain_response(vdc_t *vdc, struct buf *buf)
usr/src/uts/sun4v/io/vdc.c
3441
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3446
rv = ldc_read(vdc->curr_server->ldc_handle, (caddr_t)&dmsg,
usr/src/uts/sun4v/io/vdc.c
3472
DMSG(vdc, 0, "discard pkt: type=%d sub=%d env=%d\n",
usr/src/uts/sun4v/io/vdc.c
3496
if (idx >= vdc->dring_len) {
usr/src/uts/sun4v/io/vdc.c
3497
DMSG(vdc, 0, "[%d] Bogus ack data : start %d\n",
usr/src/uts/sun4v/io/vdc.c
3498
vdc->instance, idx);
usr/src/uts/sun4v/io/vdc.c
3501
ldep = &vdc->local_dring[idx];
usr/src/uts/sun4v/io/vdc.c
3503
DMSG(vdc, 0, "[%d] Entry @ %d - state !DONE %d\n",
usr/src/uts/sun4v/io/vdc.c
3504
vdc->instance, idx, ldep->dep->hdr.dstate);
usr/src/uts/sun4v/io/vdc.c
3514
rv = vdc_depopulate_descriptor(vdc, idx);
usr/src/uts/sun4v/io/vdc.c
3521
if ((idx + 1) % vdc->dring_len == vdc->dring_curr_idx) {
usr/src/uts/sun4v/io/vdc.c
3533
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3534
DMSG(vdc, 0, "End idx=%d\n", idx);
usr/src/uts/sun4v/io/vdc.c
3554
vdc_depopulate_descriptor(vdc_t *vdc, uint_t idx)
usr/src/uts/sun4v/io/vdc.c
3561
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
3562
ASSERT(idx < vdc->dring_len);
usr/src/uts/sun4v/io/vdc.c
3563
ldep = &vdc->local_dring[idx];
usr/src/uts/sun4v/io/vdc.c
3565
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
3567
DTRACE_PROBE2(depopulate, int, vdc->instance, vdc_local_desc_t *, ldep);
usr/src/uts/sun4v/io/vdc.c
3568
DMSG(vdc, 2, ": idx = %d\n", idx);
usr/src/uts/sun4v/io/vdc.c
3575
VDC_MARK_DRING_ENTRY_FREE(vdc, idx);
usr/src/uts/sun4v/io/vdc.c
3579
DMSG(vdc, 2, ": is_free = %d : status = %d\n", ldep->is_free, status);
usr/src/uts/sun4v/io/vdc.c
3587
cv_signal(&vdc->dring_free_cv);
usr/src/uts/sun4v/io/vdc.c
3609
DMSG(vdc, 0, "?[%d] unbind mhdl 0x%lx @ idx %d failed (%d)",
usr/src/uts/sun4v/io/vdc.c
3610
vdc->instance, ldep->desc_mhdl, idx, rv);
usr/src/uts/sun4v/io/vdc.c
3620
cv_signal(&vdc->membind_cv);
usr/src/uts/sun4v/io/vdc.c
3621
cv_signal(&vdc->dring_free_cv);
usr/src/uts/sun4v/io/vdc.c
3760
vdc_t *vdc = srvr->vdcp;
usr/src/uts/sun4v/io/vdc.c
3762
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
3764
DMSG(vdc, 1, "evt=%lx seqID=%ld\n", event, vdc->seq_num);
usr/src/uts/sun4v/io/vdc.c
3767
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3769
if (vdc->curr_server != srvr) {
usr/src/uts/sun4v/io/vdc.c
3770
DMSG(vdc, 0, "[%d] Ignoring event 0x%lx for port@%ld\n",
usr/src/uts/sun4v/io/vdc.c
3771
vdc->instance, event, srvr->id);
usr/src/uts/sun4v/io/vdc.c
3772
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3785
DMSG(vdc, 0, "[%d] Received LDC_EVT_UP\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
3790
DMSG(vdc, 0, "[%d] Couldn't get LDC status %d",
usr/src/uts/sun4v/io/vdc.c
3791
vdc->instance, rv);
usr/src/uts/sun4v/io/vdc.c
3792
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3802
vdc->seq_num = 1;
usr/src/uts/sun4v/io/vdc.c
3803
vdc->seq_num_reply = 0;
usr/src/uts/sun4v/io/vdc.c
3804
vdc->io_pending = B_TRUE;
usr/src/uts/sun4v/io/vdc.c
3806
cv_signal(&vdc->initwait_cv);
usr/src/uts/sun4v/io/vdc.c
3807
cv_signal(&vdc->io_pending_cv);
usr/src/uts/sun4v/io/vdc.c
3812
DMSG(vdc, 1, "[%d] Received LDC_EVT_READ\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
3813
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
3814
cv_signal(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
3815
vdc->read_state = VDC_READ_PENDING;
usr/src/uts/sun4v/io/vdc.c
3816
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
3817
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3825
DMSG(vdc, 0, "[%d] Received LDC RESET event\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
3831
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
3832
if ((vdc->read_state == VDC_READ_WAITING) ||
usr/src/uts/sun4v/io/vdc.c
3833
(vdc->read_state == VDC_READ_RESET))
usr/src/uts/sun4v/io/vdc.c
3834
cv_signal(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
3835
vdc->read_state = VDC_READ_RESET;
usr/src/uts/sun4v/io/vdc.c
3836
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
3839
if (vdc->state == VDC_STATE_INIT_WAITING) {
usr/src/uts/sun4v/io/vdc.c
3840
vdc->state = VDC_STATE_RESETTING;
usr/src/uts/sun4v/io/vdc.c
3841
cv_signal(&vdc->initwait_cv);
usr/src/uts/sun4v/io/vdc.c
3842
} else if (vdc->state == VDC_STATE_FAILED) {
usr/src/uts/sun4v/io/vdc.c
3843
vdc->io_pending = B_TRUE;
usr/src/uts/sun4v/io/vdc.c
3844
cv_signal(&vdc->io_pending_cv);
usr/src/uts/sun4v/io/vdc.c
3849
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
3852
DMSG(vdc, 0, "![%d] Unexpected LDC event (%lx) received",
usr/src/uts/sun4v/io/vdc.c
3853
vdc->instance, event);
usr/src/uts/sun4v/io/vdc.c
420
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
424
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
428
*resultp = vdc->dip;
usr/src/uts/sun4v/io/vdc.c
446
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
463
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
468
if (vdc_is_opened(vdc)) {
usr/src/uts/sun4v/io/vdc.c
469
DMSG(vdc, 0, "[%d] Cannot detach: device is open", instance);
usr/src/uts/sun4v/io/vdc.c
473
if (vdc->dkio_flush_pending) {
usr/src/uts/sun4v/io/vdc.c
474
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
476
instance, vdc->dkio_flush_pending);
usr/src/uts/sun4v/io/vdc.c
480
if (vdc->validate_pending) {
usr/src/uts/sun4v/io/vdc.c
481
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
483
instance, vdc->validate_pending);
usr/src/uts/sun4v/io/vdc.c
487
DMSG(vdc, 0, "[%d] proceeding...\n", instance);
usr/src/uts/sun4v/io/vdc.c
490
mutex_enter(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
491
if (vdc->ownership & VDC_OWNERSHIP_GRANTED) {
usr/src/uts/sun4v/io/vdc.c
492
rv = vdc_access_set(vdc, VD_ACCESS_SET_CLEAR);
usr/src/uts/sun4v/io/vdc.c
494
vdc_ownership_update(vdc, VDC_OWNERSHIP_NONE);
usr/src/uts/sun4v/io/vdc.c
497
mutex_exit(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
500
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
501
vdc->lifecycle = VDC_LC_DETACHING;
usr/src/uts/sun4v/io/vdc.c
502
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
508
for (srvr = vdc->server_list; srvr != NULL; srvr = srvr->next) {
usr/src/uts/sun4v/io/vdc.c
510
DMSG(vdc, 0, "callback disabled (ldc=%lu, rv=%d)\n",
usr/src/uts/sun4v/io/vdc.c
5108
vdc_handle_ver_msg(vdc_t *vdc, vio_ver_msg_t *ver_msg)
usr/src/uts/sun4v/io/vdc.c
5112
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
5113
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
5131
vdc->ver.major = ver_msg->ver_major;
usr/src/uts/sun4v/io/vdc.c
5132
vdc->ver.minor = ver_msg->ver_minor;
usr/src/uts/sun4v/io/vdc.c
5133
ASSERT(vdc->ver.major > 0);
usr/src/uts/sun4v/io/vdc.c
514
if (vdc->initialized & VDC_THREAD) {
usr/src/uts/sun4v/io/vdc.c
5148
ASSERT(vdc->ver.major > 0);
usr/src/uts/sun4v/io/vdc.c
515
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
5154
status = vdc_send(vdc, (caddr_t)ver_msg, &len);
usr/src/uts/sun4v/io/vdc.c
5155
DMSG(vdc, 0, "[%d] Resend VER info (LDC status = %d)\n",
usr/src/uts/sun4v/io/vdc.c
5156
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
516
if ((vdc->read_state == VDC_READ_WAITING) ||
usr/src/uts/sun4v/io/vdc.c
5160
DMSG(vdc, 0, "[%d] No common version with vDisk server",
usr/src/uts/sun4v/io/vdc.c
5161
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
517
(vdc->read_state == VDC_READ_RESET)) {
usr/src/uts/sun4v/io/vdc.c
518
vdc->read_state = VDC_READ_RESET;
usr/src/uts/sun4v/io/vdc.c
519
cv_signal(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
5196
vdc_handle_attr_msg(vdc_t *vdc, vd_attr_msg_t *attr_msg)
usr/src/uts/sun4v/io/vdc.c
5201
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
5202
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
5214
DMSG(vdc, 0, "[%d] Invalid disk size from vds",
usr/src/uts/sun4v/io/vdc.c
5215
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
522
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
5221
DMSG(vdc, 0, "[%d] Invalid transfer size from vds",
usr/src/uts/sun4v/io/vdc.c
5222
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
5228
DMSG(vdc, 0, "[%d] Unknown disk size from vds",
usr/src/uts/sun4v/io/vdc.c
5229
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
5235
vdc_update_vio_bsize(vdc,
usr/src/uts/sun4v/io/vdc.c
5237
DMSG(vdc, 0, "[%d] Invalid block size (%u) from vds",
usr/src/uts/sun4v/io/vdc.c
5238
vdc->instance, attr_msg->vdisk_block_size);
usr/src/uts/sun4v/io/vdc.c
5244
old_type = vdc->vdisk_type;
usr/src/uts/sun4v/io/vdc.c
5245
vdc_update_size(vdc, attr_msg->vdisk_size,
usr/src/uts/sun4v/io/vdc.c
5247
vdc->vdisk_type = attr_msg->vdisk_type;
usr/src/uts/sun4v/io/vdc.c
5248
vdc->operations = attr_msg->operations;
usr/src/uts/sun4v/io/vdc.c
5249
if (vio_ver_is_supported(vdc->ver, 1, 1))
usr/src/uts/sun4v/io/vdc.c
525
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5250
vdc->vdisk_media = attr_msg->vdisk_media;
usr/src/uts/sun4v/io/vdc.c
5252
vdc->vdisk_media = 0;
usr/src/uts/sun4v/io/vdc.c
5254
DMSG(vdc, 0, "[%d] max_xfer_sz: sent %lx acked %lx\n",
usr/src/uts/sun4v/io/vdc.c
5255
vdc->instance, vdc->max_xfer_sz, attr_msg->max_xfer_sz);
usr/src/uts/sun4v/io/vdc.c
5256
DMSG(vdc, 0, "[%d] vdisk_block_size: sent %lx acked %x\n",
usr/src/uts/sun4v/io/vdc.c
5257
vdc->instance, vdc->vdisk_bsize,
usr/src/uts/sun4v/io/vdc.c
526
if (vdc->state == VDC_STATE_INIT_WAITING) {
usr/src/uts/sun4v/io/vdc.c
5264
DMSG(vdc, 0, "[%d] Invalid attributes from vds",
usr/src/uts/sun4v/io/vdc.c
5265
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
527
DMSG(vdc, 0,
usr/src/uts/sun4v/io/vdc.c
5274
vdc_create_fake_geometry(vdc);
usr/src/uts/sun4v/io/vdc.c
5283
(vdc->initialized & VDC_MINOR) &&
usr/src/uts/sun4v/io/vdc.c
5284
vdc->vdisk_type == VD_DISK_TYPE_SLICE) {
usr/src/uts/sun4v/io/vdc.c
5285
ddi_remove_minor_node(vdc->dip, NULL);
usr/src/uts/sun4v/io/vdc.c
5286
(void) devfs_clean(ddi_get_parent(vdc->dip),
usr/src/uts/sun4v/io/vdc.c
5288
if (vdc_create_device_nodes(vdc) != 0) {
usr/src/uts/sun4v/io/vdc.c
5289
DMSG(vdc, 0, "![%d] Failed to update "
usr/src/uts/sun4v/io/vdc.c
5290
"device nodes", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
530
vdc->state = VDC_STATE_RESETTING;
usr/src/uts/sun4v/io/vdc.c
531
cv_signal(&vdc->initwait_cv);
usr/src/uts/sun4v/io/vdc.c
532
} else if (vdc->state == VDC_STATE_FAILED) {
usr/src/uts/sun4v/io/vdc.c
533
vdc->io_pending = B_TRUE;
usr/src/uts/sun4v/io/vdc.c
5334
vdc_handle_dring_reg_msg(vdc_t *vdc, vio_dring_reg_msg_t *dring_msg)
usr/src/uts/sun4v/io/vdc.c
5338
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
5339
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
534
cv_signal(&vdc->io_pending_cv);
usr/src/uts/sun4v/io/vdc.c
5348
vdc->dring_ident = dring_msg->dring_ident;
usr/src/uts/sun4v/io/vdc.c
5349
DMSG(vdc, 0, "[%d] Received dring ident=0x%lx\n",
usr/src/uts/sun4v/io/vdc.c
5350
vdc->instance, vdc->dring_ident);
usr/src/uts/sun4v/io/vdc.c
5358
DMSG(vdc, 0, "[%d] server could not register DRing\n",
usr/src/uts/sun4v/io/vdc.c
5359
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
536
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
539
thread_join(vdc->msg_proc_thr->t_did);
usr/src/uts/sun4v/io/vdc.c
540
ASSERT(vdc->state == VDC_STATE_DETACH);
usr/src/uts/sun4v/io/vdc.c
5401
vdc_verify_seq_num(vdc_t *vdc, vio_dring_msg_t *dring_msg)
usr/src/uts/sun4v/io/vdc.c
5403
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
5405
ASSERT(mutex_owned(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
541
DMSG(vdc, 0, "[%d] Reset thread exit and join ..\n",
usr/src/uts/sun4v/io/vdc.c
5411
if ((dring_msg->seq_num <= vdc->seq_num_reply) ||
usr/src/uts/sun4v/io/vdc.c
5412
(dring_msg->seq_num > vdc->seq_num)) {
usr/src/uts/sun4v/io/vdc.c
5413
DMSG(vdc, 0, "?[%d] Bogus sequence_number %lu: "
usr/src/uts/sun4v/io/vdc.c
5415
vdc->instance, dring_msg->seq_num,
usr/src/uts/sun4v/io/vdc.c
5416
vdc->seq_num_reply, vdc->seq_num,
usr/src/uts/sun4v/io/vdc.c
5417
vdc->req_id_proc, vdc->req_id);
usr/src/uts/sun4v/io/vdc.c
542
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
5420
vdc->seq_num_reply = dring_msg->seq_num;
usr/src/uts/sun4v/io/vdc.c
5422
if (vdc->req_id_proc < vdc->req_id)
usr/src/uts/sun4v/io/vdc.c
545
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
547
if (vdc->initialized & VDC_DRING)
usr/src/uts/sun4v/io/vdc.c
548
vdc_destroy_descriptor_ring(vdc);
usr/src/uts/sun4v/io/vdc.c
550
vdc_fini_ports(vdc);
usr/src/uts/sun4v/io/vdc.c
5514
vdc_t *vdc;
usr/src/uts/sun4v/io/vdc.c
552
if (vdc->eio_thread) {
usr/src/uts/sun4v/io/vdc.c
553
eio_tid = vdc->eio_thread->t_did;
usr/src/uts/sun4v/io/vdc.c
5533
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
554
vdc->failfast_interval = 0;
usr/src/uts/sun4v/io/vdc.c
5541
vdc = dk_arg->vdc;
usr/src/uts/sun4v/io/vdc.c
5542
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
5544
rv = vdc_do_sync_op(vdc, VD_OP_FLUSH, NULL, 0,
usr/src/uts/sun4v/io/vdc.c
5547
DMSG(vdc, 0, "[%d] DKIOCFLUSHWRITECACHE failed %d : model %x\n",
usr/src/uts/sun4v/io/vdc.c
5548
vdc->instance, rv,
usr/src/uts/sun4v/io/vdc.c
555
ASSERT(vdc->num_servers == 0);
usr/src/uts/sun4v/io/vdc.c
556
cv_signal(&vdc->eio_cv);
usr/src/uts/sun4v/io/vdc.c
5564
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5565
vdc->dkio_flush_pending--;
usr/src/uts/sun4v/io/vdc.c
5566
ASSERT(vdc->dkio_flush_pending >= 0);
usr/src/uts/sun4v/io/vdc.c
5567
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5586
vdc_dkio_gapart(vdc_t *vdc, caddr_t arg, int flag)
usr/src/uts/sun4v/io/vdc.c
5596
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5598
if ((rv = vdc_validate_geometry(vdc)) != 0) {
usr/src/uts/sun4v/io/vdc.c
5599
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5603
if (vdc->vdisk_size > VD_OLDVTOC_LIMIT) {
usr/src/uts/sun4v/io/vdc.c
5604
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5608
vtoc = vdc->vtoc;
usr/src/uts/sun4v/io/vdc.c
5609
geom = vdc->geom;
usr/src/uts/sun4v/io/vdc.c
561
if (vdc->ownership & VDC_OWNERSHIP_WANTED) {
usr/src/uts/sun4v/io/vdc.c
562
ownership_tid = vdc->ownership_thread->t_did;
usr/src/uts/sun4v/io/vdc.c
563
vdc->ownership = VDC_OWNERSHIP_NONE;
usr/src/uts/sun4v/io/vdc.c
5631
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
564
cv_signal(&vdc->ownership_cv);
usr/src/uts/sun4v/io/vdc.c
5652
vdc_dkio_partition(vdc_t *vdc, caddr_t arg, int flag)
usr/src/uts/sun4v/io/vdc.c
5665
VDC_EFI_DEV_SET(edev, vdc, vd_process_efi_ioctl);
usr/src/uts/sun4v/io/vdc.c
569
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
5706
vdc_dioctl_rwcmd(vdc_t *vdc, caddr_t arg, int flag)
usr/src/uts/sun4v/io/vdc.c
5750
auio.uio_loffset = rwcmd.blkaddr * vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
5762
status = physio(vdc_strategy, buf, VD_MAKE_DEV(vdc->instance, 0),
usr/src/uts/sun4v/io/vdc.c
577
if (vdc->initialized & VDC_MINOR)
usr/src/uts/sun4v/io/vdc.c
580
if (vdc->io_stats) {
usr/src/uts/sun4v/io/vdc.c
581
kstat_delete(vdc->io_stats);
usr/src/uts/sun4v/io/vdc.c
582
vdc->io_stats = NULL;
usr/src/uts/sun4v/io/vdc.c
5820
vdc_scsi_status(vdc_t *vdc, vd_scsi_t *vd_scsi, boolean_t log_error)
usr/src/uts/sun4v/io/vdc.c
5838
ddi_pathname(vdc->dip, path_str), vdc->instance,
usr/src/uts/sun4v/io/vdc.c
585
if (vdc->err_stats) {
usr/src/uts/sun4v/io/vdc.c
586
kstat_delete(vdc->err_stats);
usr/src/uts/sun4v/io/vdc.c
587
vdc->err_stats = NULL;
usr/src/uts/sun4v/io/vdc.c
5887
if (vdc->failfast_interval != 0 &&
usr/src/uts/sun4v/io/vdc.c
5893
ddi_pathname(vdc->dip, path_str));
usr/src/uts/sun4v/io/vdc.c
590
if (vdc->initialized & VDC_LOCKS) {
usr/src/uts/sun4v/io/vdc.c
591
mutex_destroy(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
592
mutex_destroy(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
593
mutex_destroy(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
5935
vdc_uscsi_cmd(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
594
cv_destroy(&vdc->initwait_cv);
usr/src/uts/sun4v/io/vdc.c
595
cv_destroy(&vdc->dring_free_cv);
usr/src/uts/sun4v/io/vdc.c
596
cv_destroy(&vdc->membind_cv);
usr/src/uts/sun4v/io/vdc.c
5961
rv = vdc_do_sync_op(vdc, VD_OP_RESET, NULL, 0, 0, 0,
usr/src/uts/sun4v/io/vdc.c
597
cv_destroy(&vdc->sync_blocked_cv);
usr/src/uts/sun4v/io/vdc.c
598
cv_destroy(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
599
cv_destroy(&vdc->running_cv);
usr/src/uts/sun4v/io/vdc.c
600
cv_destroy(&vdc->io_pending_cv);
usr/src/uts/sun4v/io/vdc.c
601
cv_destroy(&vdc->ownership_cv);
usr/src/uts/sun4v/io/vdc.c
602
cv_destroy(&vdc->eio_cv);
usr/src/uts/sun4v/io/vdc.c
6038
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
605
if (vdc->minfo)
usr/src/uts/sun4v/io/vdc.c
606
kmem_free(vdc->minfo, sizeof (struct dk_minfo));
usr/src/uts/sun4v/io/vdc.c
608
if (vdc->cinfo)
usr/src/uts/sun4v/io/vdc.c
609
kmem_free(vdc->cinfo, sizeof (struct dk_cinfo));
usr/src/uts/sun4v/io/vdc.c
6098
rv = vdc_scsi_status(vdc, vd_scsi,
usr/src/uts/sun4v/io/vdc.c
611
if (vdc->vtoc)
usr/src/uts/sun4v/io/vdc.c
612
kmem_free(vdc->vtoc, sizeof (struct extvtoc));
usr/src/uts/sun4v/io/vdc.c
614
if (vdc->geom)
usr/src/uts/sun4v/io/vdc.c
615
kmem_free(vdc->geom, sizeof (struct dk_geom));
usr/src/uts/sun4v/io/vdc.c
617
if (vdc->devid) {
usr/src/uts/sun4v/io/vdc.c
6188
vdc_mhd_inkeys(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
619
ddi_devid_free(vdc->devid);
usr/src/uts/sun4v/io/vdc.c
622
if (vdc->initialized & VDC_SOFT_STATE)
usr/src/uts/sun4v/io/vdc.c
6232
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
625
DMSG(vdc, 0, "[%d] End %p\n", instance, (void *)vdc);
usr/src/uts/sun4v/io/vdc.c
6286
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6300
vdc_mhd_inresv(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
6346
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
635
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
6415
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6428
vdc_mhd_register(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
6451
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
6455
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6467
vdc_mhd_reserve(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
649
if ((vdc = ddi_get_soft_state(vdc_state, instance)) == NULL) {
usr/src/uts/sun4v/io/vdc.c
6492
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
6496
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6508
vdc_mhd_preemptabort(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
6537
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
6541
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6553
vdc_mhd_registerignore(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
6576
rv = vdc_do_sync_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
658
vdc->initialized = VDC_SOFT_STATE;
usr/src/uts/sun4v/io/vdc.c
6580
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
6590
vdc_eio_scsi_cmd(vdc_t *vdc, uchar_t scmd, int flags)
usr/src/uts/sun4v/io/vdc.c
6621
rv = vdc_do_op(vdc, VD_OP_SCSICMD, (caddr_t)vd_scsi, vd_scsi_len,
usr/src/uts/sun4v/io/vdc.c
6625
rv = vdc_scsi_status(vdc, vd_scsi, B_FALSE);
usr/src/uts/sun4v/io/vdc.c
663
vdc->dip = dip;
usr/src/uts/sun4v/io/vdc.c
664
vdc->instance = instance;
usr/src/uts/sun4v/io/vdc.c
6641
vdc_eio_scsi_check(vdc_t *vdc, int flags)
usr/src/uts/sun4v/io/vdc.c
665
vdc->vdisk_type = VD_DISK_TYPE_UNK;
usr/src/uts/sun4v/io/vdc.c
6654
rv = vdc_eio_scsi_cmd(vdc, SCMD_TEST_UNIT_READY, flags);
usr/src/uts/sun4v/io/vdc.c
6659
if (vdc->failfast_interval == 0)
usr/src/uts/sun4v/io/vdc.c
666
vdc->vdisk_label = VD_DISK_LABEL_UNK;
usr/src/uts/sun4v/io/vdc.c
6668
if (vdc_eio_scsi_cmd(vdc, SCMD_WRITE_G1, flags) != 0)
usr/src/uts/sun4v/io/vdc.c
667
vdc->state = VDC_STATE_INIT;
usr/src/uts/sun4v/io/vdc.c
668
vdc->lifecycle = VDC_LC_ATTACHING;
usr/src/uts/sun4v/io/vdc.c
6682
vdc_eio_check(vdc_t *vdc, int flags)
usr/src/uts/sun4v/io/vdc.c
669
vdc->session_id = 0;
usr/src/uts/sun4v/io/vdc.c
6692
if (VD_OP_SUPPORTED(vdc->operations, VD_OP_SCSICMD))
usr/src/uts/sun4v/io/vdc.c
6693
return (vdc_eio_scsi_check(vdc, flags));
usr/src/uts/sun4v/io/vdc.c
6695
ASSERT(vdc->failfast_interval == 0);
usr/src/uts/sun4v/io/vdc.c
670
vdc->vdisk_bsize = DEV_BSIZE;
usr/src/uts/sun4v/io/vdc.c
6706
buffer = kmem_alloc(vdc->vdisk_bsize, KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
6708
if (vdc->vdisk_size > 0) {
usr/src/uts/sun4v/io/vdc.c
671
vdc->vio_bmask = 0;
usr/src/uts/sun4v/io/vdc.c
6713
blkno = blkno % vdc->vdisk_size;
usr/src/uts/sun4v/io/vdc.c
6714
rv = vdc_do_op(vdc, VD_OP_BREAD, (caddr_t)buffer,
usr/src/uts/sun4v/io/vdc.c
6715
vdc->vdisk_bsize, VD_SLICE_NONE, blkno, NULL,
usr/src/uts/sun4v/io/vdc.c
672
vdc->vio_bshift = 0;
usr/src/uts/sun4v/io/vdc.c
6722
blkno = vdc->vdisk_size - 1;
usr/src/uts/sun4v/io/vdc.c
6723
rv = vdc_do_op(vdc, VD_OP_BREAD, (caddr_t)buffer,
usr/src/uts/sun4v/io/vdc.c
6724
vdc->vdisk_bsize, VD_SLICE_NONE, blkno, NULL,
usr/src/uts/sun4v/io/vdc.c
673
vdc->max_xfer_sz = maxphys / vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
6733
rv = vdc_do_op(vdc, VD_OP_BREAD, (caddr_t)buffer, vdc->vdisk_bsize,
usr/src/uts/sun4v/io/vdc.c
6737
kmem_free(buffer, vdc->vdisk_bsize);
usr/src/uts/sun4v/io/vdc.c
6748
vdc_eio_queue(vdc_t *vdc, int index)
usr/src/uts/sun4v/io/vdc.c
6752
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
6755
vio->vio_next = vdc->eio_queue;
usr/src/uts/sun4v/io/vdc.c
6759
vdc->eio_queue = vio;
usr/src/uts/sun4v/io/vdc.c
6762
cv_signal(&vdc->eio_cv);
usr/src/uts/sun4v/io/vdc.c
6773
vdc_eio_unqueue(vdc_t *vdc, clock_t deadline, boolean_t complete_io)
usr/src/uts/sun4v/io/vdc.c
6779
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
6782
vio = vdc->eio_queue;
usr/src/uts/sun4v/io/vdc.c
6801
vdc->eio_queue = NULL;
usr/src/uts/sun4v/io/vdc.c
6815
op = vdc->local_dring[index].operation;
usr/src/uts/sun4v/io/vdc.c
6816
buf = vdc->local_dring[index].buf;
usr/src/uts/sun4v/io/vdc.c
6817
(void) vdc_depopulate_descriptor(vdc, index);
usr/src/uts/sun4v/io/vdc.c
6820
VD_UPDATE_ERR_STATS(vdc, vd_softerrs);
usr/src/uts/sun4v/io/vdc.c
6821
VD_KSTAT_RUNQ_EXIT(vdc);
usr/src/uts/sun4v/io/vdc.c
683
vdc->operations = VD_OP_MASK_READ;
usr/src/uts/sun4v/io/vdc.c
685
vdc->vtoc = NULL;
usr/src/uts/sun4v/io/vdc.c
6851
vdc_t *vdc = (vdc_t *)arg;
usr/src/uts/sun4v/io/vdc.c
6852
clock_t starttime, timeout = drv_usectohz(vdc->failfast_interval);
usr/src/uts/sun4v/io/vdc.c
6854
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
6856
while (vdc->failfast_interval != 0 || vdc->num_servers > 1) {
usr/src/uts/sun4v/io/vdc.c
686
vdc->geom = NULL;
usr/src/uts/sun4v/io/vdc.c
6861
if (vdc->eio_queue == NULL || vdc->state != VDC_STATE_RUNNING) {
usr/src/uts/sun4v/io/vdc.c
6862
if (vdc->failfast_interval != 0) {
usr/src/uts/sun4v/io/vdc.c
6864
drv_usectohz(vdc->failfast_interval);
usr/src/uts/sun4v/io/vdc.c
6865
(void) cv_timedwait(&vdc->eio_cv, &vdc->lock,
usr/src/uts/sun4v/io/vdc.c
6868
ASSERT(vdc->num_servers > 1);
usr/src/uts/sun4v/io/vdc.c
6869
(void) cv_wait(&vdc->eio_cv, &vdc->lock);
usr/src/uts/sun4v/io/vdc.c
687
vdc->cinfo = NULL;
usr/src/uts/sun4v/io/vdc.c
6872
if (vdc->state != VDC_STATE_RUNNING)
usr/src/uts/sun4v/io/vdc.c
6876
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
688
vdc->minfo = NULL;
usr/src/uts/sun4v/io/vdc.c
6881
status = vdc_eio_check(vdc, VDC_OP_STATE_RUNNING);
usr/src/uts/sun4v/io/vdc.c
6883
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
6888
if (vdc->failfast_interval == 0 && vdc->num_servers <= 1)
usr/src/uts/sun4v/io/vdc.c
6895
if (vdc->state != VDC_STATE_RUNNING || vdc->eio_queue == NULL)
usr/src/uts/sun4v/io/vdc.c
690
mutex_init(&vdc->lock, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6903
vdc_eio_unqueue(vdc, starttime, B_TRUE);
usr/src/uts/sun4v/io/vdc.c
6905
} else if (vdc->num_servers > 1) {
usr/src/uts/sun4v/io/vdc.c
691
cv_init(&vdc->initwait_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6912
mutex_enter(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
6913
vdc->read_state = VDC_READ_RESET;
usr/src/uts/sun4v/io/vdc.c
6914
cv_signal(&vdc->read_cv);
usr/src/uts/sun4v/io/vdc.c
6915
mutex_exit(&vdc->read_lock);
usr/src/uts/sun4v/io/vdc.c
692
cv_init(&vdc->dring_free_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6923
vdc_eio_unqueue(vdc, starttime, B_TRUE);
usr/src/uts/sun4v/io/vdc.c
693
cv_init(&vdc->membind_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6930
vdc_eio_unqueue(vdc, 0, B_TRUE);
usr/src/uts/sun4v/io/vdc.c
6931
vdc->eio_thread = NULL;
usr/src/uts/sun4v/io/vdc.c
6932
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
694
cv_init(&vdc->running_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6940
vdc_failfast(vdc_t *vdc, caddr_t arg, int mode)
usr/src/uts/sun4v/io/vdc.c
6947
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
6948
if (mh_time != 0 && vdc->eio_thread == NULL) {
usr/src/uts/sun4v/io/vdc.c
6949
vdc->eio_thread = thread_create(NULL, 0,
usr/src/uts/sun4v/io/vdc.c
695
cv_init(&vdc->io_pending_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
6950
vdc_eio_thread, vdc, 0, &p0, TS_RUN,
usr/src/uts/sun4v/io/vdc.c
6954
vdc->failfast_interval = ((long)mh_time) * MILLISEC;
usr/src/uts/sun4v/io/vdc.c
6955
cv_signal(&vdc->eio_cv);
usr/src/uts/sun4v/io/vdc.c
6956
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
6966
vdc_access_set(vdc_t *vdc, uint64_t flags)
usr/src/uts/sun4v/io/vdc.c
697
vdc->io_pending = B_FALSE;
usr/src/uts/sun4v/io/vdc.c
6971
rv = vdc_do_sync_op(vdc, VD_OP_SET_ACCESS, (caddr_t)&flags,
usr/src/uts/sun4v/io/vdc.c
698
vdc->threads_pending = 0;
usr/src/uts/sun4v/io/vdc.c
6982
vdc_access_get(vdc_t *vdc, uint64_t *status)
usr/src/uts/sun4v/io/vdc.c
6987
rv = vdc_do_sync_op(vdc, VD_OP_GET_ACCESS, (caddr_t)status,
usr/src/uts/sun4v/io/vdc.c
699
vdc->sync_op_blocked = B_FALSE;
usr/src/uts/sun4v/io/vdc.c
700
cv_init(&vdc->sync_blocked_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7007
vdc_t *vdc = (vdc_t *)arg;
usr/src/uts/sun4v/io/vdc.c
7011
mutex_enter(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7012
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7014
while (vdc->ownership & VDC_OWNERSHIP_WANTED) {
usr/src/uts/sun4v/io/vdc.c
7016
if ((vdc->ownership & VDC_OWNERSHIP_RESET) ||
usr/src/uts/sun4v/io/vdc.c
7017
!(vdc->ownership & VDC_OWNERSHIP_GRANTED)) {
usr/src/uts/sun4v/io/vdc.c
702
mutex_init(&vdc->ownership_lock, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7024
DMSG(vdc, 0, "[%d] Ownership lost, recovering",
usr/src/uts/sun4v/io/vdc.c
7025
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
7027
vdc->ownership &= ~(VDC_OWNERSHIP_RESET |
usr/src/uts/sun4v/io/vdc.c
703
cv_init(&vdc->ownership_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7030
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7032
status = vdc_access_set(vdc, VD_ACCESS_SET_EXCLUSIVE |
usr/src/uts/sun4v/io/vdc.c
7035
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7038
DMSG(vdc, 0, "[%d] Ownership recovered",
usr/src/uts/sun4v/io/vdc.c
7039
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
704
cv_init(&vdc->eio_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7040
vdc->ownership |= VDC_OWNERSHIP_GRANTED;
usr/src/uts/sun4v/io/vdc.c
7042
DMSG(vdc, 0, "[%d] Fail to recover ownership",
usr/src/uts/sun4v/io/vdc.c
7043
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
7053
if (vdc->ownership & VDC_OWNERSHIP_GRANTED)
usr/src/uts/sun4v/io/vdc.c
7059
mutex_exit(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7062
(void) cv_wait(&vdc->ownership_cv, &vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7064
(void) cv_reltimedwait(&vdc->ownership_cv, &vdc->lock,
usr/src/uts/sun4v/io/vdc.c
7067
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7069
mutex_enter(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
707
mutex_init(&vdc->read_lock, NULL, MUTEX_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7070
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7073
vdc->ownership_thread = NULL;
usr/src/uts/sun4v/io/vdc.c
7074
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7075
mutex_exit(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
708
cv_init(&vdc->read_cv, NULL, CV_DRIVER, NULL);
usr/src/uts/sun4v/io/vdc.c
7081
vdc_ownership_update(vdc_t *vdc, int ownership_flags)
usr/src/uts/sun4v/io/vdc.c
7083
ASSERT(MUTEX_HELD(&vdc->ownership_lock));
usr/src/uts/sun4v/io/vdc.c
7085
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7086
vdc->ownership = ownership_flags;
usr/src/uts/sun4v/io/vdc.c
7087
if ((vdc->ownership & VDC_OWNERSHIP_WANTED) &&
usr/src/uts/sun4v/io/vdc.c
7088
vdc->ownership_thread == NULL) {
usr/src/uts/sun4v/io/vdc.c
709
vdc->read_state = VDC_READ_IDLE;
usr/src/uts/sun4v/io/vdc.c
7090
vdc->ownership_thread = thread_create(NULL, 0,
usr/src/uts/sun4v/io/vdc.c
7091
vdc_ownership_thread, vdc, 0, &p0, TS_RUN,
usr/src/uts/sun4v/io/vdc.c
7095
cv_signal(&vdc->ownership_cv);
usr/src/uts/sun4v/io/vdc.c
7097
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7104
vdc_get_capacity(vdc_t *vdc, size_t *dsk_size, size_t *blk_size)
usr/src/uts/sun4v/io/vdc.c
711
vdc->initialized |= VDC_LOCKS;
usr/src/uts/sun4v/io/vdc.c
7110
ASSERT(MUTEX_NOT_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
7116
rv = vdc_do_sync_op(vdc, VD_OP_GET_CAPACITY, (caddr_t)vd_cap, alloc_len,
usr/src/uts/sun4v/io/vdc.c
7133
vdc_check_capacity(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
7143
if (!VD_OP_SUPPORTED(vdc->operations, VD_OP_GET_CAPACITY))
usr/src/uts/sun4v/io/vdc.c
7146
if ((rv = vdc_get_capacity(vdc, &dsk_size, &blk_size)) != 0)
usr/src/uts/sun4v/io/vdc.c
7152
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7159
rv = vdc_update_vio_bsize(vdc, blk_size);
usr/src/uts/sun4v/io/vdc.c
7161
vdc_update_size(vdc, dsk_size, blk_size, vdc->max_xfer_sz);
usr/src/uts/sun4v/io/vdc.c
7163
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7177
int (*convert)(vdc_t *vdc, void *vd_buf, void *ioctl_arg,
usr/src/uts/sun4v/io/vdc.c
720
if (vdc_init_ports(vdc, mdp, vd_node) != 0) {
usr/src/uts/sun4v/io/vdc.c
7252
vdc_t *vdc = (vdc_t *)vdisk;
usr/src/uts/sun4v/io/vdc.c
7256
dev = makedevice(ddi_driver_major(vdc->dip),
usr/src/uts/sun4v/io/vdc.c
7257
VD_MAKE_DEV(vdc->instance, 0));
usr/src/uts/sun4v/io/vdc.c
728
vdc_create_io_kstats(vdc);
usr/src/uts/sun4v/io/vdc.c
7288
vdc_t *vdc = NULL;
usr/src/uts/sun4v/io/vdc.c
729
vdc_create_err_kstats(vdc);
usr/src/uts/sun4v/io/vdc.c
7297
vdc = ddi_get_soft_state(vdc_state, instance);
usr/src/uts/sun4v/io/vdc.c
7298
if (vdc == NULL) {
usr/src/uts/sun4v/io/vdc.c
7304
DMSG(vdc, 0, "[%d] Processing ioctl(%x) for dev %lx : model %x\n",
usr/src/uts/sun4v/io/vdc.c
732
vdc->vdisk_label = VD_DISK_LABEL_UNK;
usr/src/uts/sun4v/io/vdc.c
7324
DMSG(vdc, 0, "[%d] Unsupported ioctl (0x%x)\n",
usr/src/uts/sun4v/io/vdc.c
7325
vdc->instance, cmd);
usr/src/uts/sun4v/io/vdc.c
733
vdc->vtoc = kmem_zalloc(sizeof (struct extvtoc), KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
734
vdc->geom = kmem_zalloc(sizeof (struct dk_geom), KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
735
vdc->minfo = kmem_zalloc(sizeof (struct dk_minfo), KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
7362
if (vdc->cinfo == NULL)
usr/src/uts/sun4v/io/vdc.c
7364
if (vdc->cinfo->dki_ctype != DKC_SCSI_CCS)
usr/src/uts/sun4v/io/vdc.c
7369
if (vdc->cinfo == NULL)
usr/src/uts/sun4v/io/vdc.c
7371
if (vdc->cinfo->dki_ctype != DKC_DIRECT)
usr/src/uts/sun4v/io/vdc.c
7376
if (vdc->cinfo == NULL)
usr/src/uts/sun4v/io/vdc.c
738
vdc->msg_proc_thr = thread_create(NULL, 0, vdc_process_msg_thread,
usr/src/uts/sun4v/io/vdc.c
7381
if (vdc->minfo == NULL)
usr/src/uts/sun4v/io/vdc.c
7383
if (vdc_check_capacity(vdc) != 0)
usr/src/uts/sun4v/io/vdc.c
739
vdc, 0, &p0, TS_RUN, minclsyspri);
usr/src/uts/sun4v/io/vdc.c
7398
return (vdc_uscsi_cmd(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
740
if (vdc->msg_proc_thr == NULL) {
usr/src/uts/sun4v/io/vdc.c
7403
mutex_enter(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7409
vdc_ownership_update(vdc, VDC_OWNERSHIP_WANTED);
usr/src/uts/sun4v/io/vdc.c
7411
rv = vdc_access_set(vdc, VD_ACCESS_SET_EXCLUSIVE |
usr/src/uts/sun4v/io/vdc.c
7414
vdc_ownership_update(vdc, VDC_OWNERSHIP_WANTED |
usr/src/uts/sun4v/io/vdc.c
7417
vdc_ownership_update(vdc, VDC_OWNERSHIP_NONE);
usr/src/uts/sun4v/io/vdc.c
7419
mutex_exit(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7425
mutex_enter(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7426
rv = vdc_access_set(vdc, VD_ACCESS_SET_CLEAR);
usr/src/uts/sun4v/io/vdc.c
7428
vdc_ownership_update(vdc, VDC_OWNERSHIP_NONE);
usr/src/uts/sun4v/io/vdc.c
7430
mutex_exit(&vdc->ownership_lock);
usr/src/uts/sun4v/io/vdc.c
7438
rv = vdc_access_get(vdc, &status);
usr/src/uts/sun4v/io/vdc.c
7446
rv = vdc_access_set(vdc, VD_ACCESS_SET_EXCLUSIVE);
usr/src/uts/sun4v/io/vdc.c
7452
return (vdc_mhd_inkeys(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7457
return (vdc_mhd_inresv(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7462
return (vdc_mhd_register(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7467
return (vdc_mhd_reserve(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7472
return (vdc_mhd_preemptabort(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7477
return (vdc_mhd_registerignore(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7482
rv = vdc_failfast(vdc, arg, mode);
usr/src/uts/sun4v/io/vdc.c
7488
return (vdc_dioctl_rwcmd(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
749
if (vdc->num_servers > 1) {
usr/src/uts/sun4v/io/vdc.c
7493
return (vdc_dkio_gapart(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
7498
return (vdc_dkio_partition(vdc, arg, mode));
usr/src/uts/sun4v/io/vdc.c
750
vdc->eio_thread = thread_create(NULL, 0, vdc_eio_thread, vdc, 0,
usr/src/uts/sun4v/io/vdc.c
7505
bcopy(vdc->cinfo, &cinfo, sizeof (struct dk_cinfo));
usr/src/uts/sun4v/io/vdc.c
7518
ASSERT(vdc->vdisk_size != 0);
usr/src/uts/sun4v/io/vdc.c
7519
ASSERT(vdc->minfo->dki_capacity != 0);
usr/src/uts/sun4v/io/vdc.c
752
if (vdc->eio_thread == NULL) {
usr/src/uts/sun4v/io/vdc.c
7520
rv = ddi_copyout(vdc->minfo, (void *)arg,
usr/src/uts/sun4v/io/vdc.c
7534
DMSG(vdc, 1, "[%d] Flush W$: mode %x\n",
usr/src/uts/sun4v/io/vdc.c
7567
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7568
vdc->dkio_flush_pending++;
usr/src/uts/sun4v/io/vdc.c
7569
dkarg->vdc = vdc;
usr/src/uts/sun4v/io/vdc.c
7570
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7577
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7578
vdc->dkio_flush_pending--;
usr/src/uts/sun4v/io/vdc.c
7579
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
759
vdc->initialized |= VDC_THREAD;
usr/src/uts/sun4v/io/vdc.c
7592
if (VD_OP_SUPPORTED(vdc->operations, iop->op) == B_FALSE) {
usr/src/uts/sun4v/io/vdc.c
7593
DMSG(vdc, 0, "[%d] Unsupported VD_OP operation (0x%x)\n",
usr/src/uts/sun4v/io/vdc.c
7594
vdc->instance, iop->op);
usr/src/uts/sun4v/io/vdc.c
7600
DMSG(vdc, 1, "[%d] struct size %ld alloc %ld\n",
usr/src/uts/sun4v/io/vdc.c
7612
rv = (iop->convert)(vdc, arg, mem_p, mode, VD_COPYIN);
usr/src/uts/sun4v/io/vdc.c
7614
DMSG(vdc, 0, "[%d] convert func returned %d for ioctl 0x%x\n",
usr/src/uts/sun4v/io/vdc.c
7624
rv = vdc_do_sync_op(vdc, iop->op, mem_p, alloc_len,
usr/src/uts/sun4v/io/vdc.c
7633
DMSG(vdc, 0, "[%d] vds returned %d for ioctl 0x%x\n",
usr/src/uts/sun4v/io/vdc.c
7647
rv = (iop->convert)(vdc, mem_p, arg, mode, VD_COPYOUT);
usr/src/uts/sun4v/io/vdc.c
7649
DMSG(vdc, 0, "[%d] convert func returned %d for ioctl 0x%x\n",
usr/src/uts/sun4v/io/vdc.c
7670
vdc_null_copy_func(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7672
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
7682
vdc_get_wce_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
7685
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
7697
vdc_set_wce_convert(vdc_t *vdc, void *from, void *to,
usr/src/uts/sun4v/io/vdc.c
770
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7700
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
771
(void) vdc_validate_geometry(vdc);
usr/src/uts/sun4v/io/vdc.c
772
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
7737
vdc_get_vtoc_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7751
if (vdc->vdisk_size > VD_OLDVTOC_LIMIT)
usr/src/uts/sun4v/io/vdc.c
7758
evtoc.timestamp[i] = vdc->vtoc->timestamp[i];
usr/src/uts/sun4v/io/vdc.c
777
status = vdc_create_device_nodes(vdc);
usr/src/uts/sun4v/io/vdc.c
779
DMSG(vdc, 0, "[%d] Failed to create device nodes",
usr/src/uts/sun4v/io/vdc.c
7798
vdc_set_vtoc_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7809
if (vdc->vdisk_size > VD_OLDVTOC_LIMIT)
usr/src/uts/sun4v/io/vdc.c
7831
vdc_validate(vdc);
usr/src/uts/sun4v/io/vdc.c
7837
vdc->vtoc->timestamp[i] = evtoc.timestamp[i];
usr/src/uts/sun4v/io/vdc.c
7848
vdc_get_extvtoc_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7863
evtoc.timestamp[i] = vdc->vtoc->timestamp[i];
usr/src/uts/sun4v/io/vdc.c
7874
vdc_set_extvtoc_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
788
vdc_set_err_kstats(vdc);
usr/src/uts/sun4v/io/vdc.c
7894
vdc_validate(vdc);
usr/src/uts/sun4v/io/vdc.c
790
ASSERT(vdc->lifecycle == VDC_LC_ONLINE ||
usr/src/uts/sun4v/io/vdc.c
7900
vdc->vtoc->timestamp[i] = evtoc.timestamp[i];
usr/src/uts/sun4v/io/vdc.c
791
vdc->lifecycle == VDC_LC_ONLINE_PENDING);
usr/src/uts/sun4v/io/vdc.c
792
DMSG(vdc, 0, "[%d] Attach tasks successful\n", instance);
usr/src/uts/sun4v/io/vdc.c
7932
vdc_get_geom_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7934
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
795
DMSG(vdc, 0, "[%d] Attach completed\n", instance);
usr/src/uts/sun4v/io/vdc.c
7975
vdc_set_geom_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
7977
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
8005
vdc_get_efi_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
8007
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
8053
vdc_set_efi_convert(vdc_t *vdc, void *from, void *to, int mode, int dir)
usr/src/uts/sun4v/io/vdc.c
8055
_NOTE(ARGUNUSED(vdc))
usr/src/uts/sun4v/io/vdc.c
8065
vdc_validate(vdc);
usr/src/uts/sun4v/io/vdc.c
8110
vdc_create_fake_geometry(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
8112
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
8113
ASSERT(vdc->max_xfer_sz != 0);
usr/src/uts/sun4v/io/vdc.c
8118
if (vdc->cinfo == NULL)
usr/src/uts/sun4v/io/vdc.c
8119
vdc->cinfo = kmem_zalloc(sizeof (struct dk_cinfo), KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
8121
(void) strcpy(vdc->cinfo->dki_cname, VDC_DRIVER_NAME);
usr/src/uts/sun4v/io/vdc.c
8122
(void) strcpy(vdc->cinfo->dki_dname, VDC_DRIVER_NAME);
usr/src/uts/sun4v/io/vdc.c
8124
vdc->cinfo->dki_maxtransfer = vdc->max_xfer_sz;
usr/src/uts/sun4v/io/vdc.c
8135
switch (vdc->vdisk_media) {
usr/src/uts/sun4v/io/vdc.c
8138
vdc->cinfo->dki_ctype = DKC_CDROM;
usr/src/uts/sun4v/io/vdc.c
8141
if (VD_OP_SUPPORTED(vdc->operations, VD_OP_SCSICMD))
usr/src/uts/sun4v/io/vdc.c
8142
vdc->cinfo->dki_ctype = DKC_SCSI_CCS;
usr/src/uts/sun4v/io/vdc.c
8144
vdc->cinfo->dki_ctype = DKC_DIRECT;
usr/src/uts/sun4v/io/vdc.c
8148
vdc->cinfo->dki_ctype = DKC_DIRECT;
usr/src/uts/sun4v/io/vdc.c
8151
vdc->cinfo->dki_flags = DKI_FMTVOL;
usr/src/uts/sun4v/io/vdc.c
8152
vdc->cinfo->dki_cnum = 0;
usr/src/uts/sun4v/io/vdc.c
8153
vdc->cinfo->dki_addr = 0;
usr/src/uts/sun4v/io/vdc.c
8154
vdc->cinfo->dki_space = 0;
usr/src/uts/sun4v/io/vdc.c
8155
vdc->cinfo->dki_prio = 0;
usr/src/uts/sun4v/io/vdc.c
8156
vdc->cinfo->dki_vec = 0;
usr/src/uts/sun4v/io/vdc.c
8157
vdc->cinfo->dki_unit = vdc->instance;
usr/src/uts/sun4v/io/vdc.c
8158
vdc->cinfo->dki_slave = 0;
usr/src/uts/sun4v/io/vdc.c
8163
vdc->cinfo->dki_partition = 0;
usr/src/uts/sun4v/io/vdc.c
8168
if (vdc->minfo == NULL)
usr/src/uts/sun4v/io/vdc.c
8169
vdc->minfo = kmem_zalloc(sizeof (struct dk_minfo), KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
8171
if (vio_ver_is_supported(vdc->ver, 1, 1)) {
usr/src/uts/sun4v/io/vdc.c
8172
vdc->minfo->dki_media_type =
usr/src/uts/sun4v/io/vdc.c
8173
VD_MEDIATYPE2DK_MEDIATYPE(vdc->vdisk_media);
usr/src/uts/sun4v/io/vdc.c
8175
vdc->minfo->dki_media_type = DK_FIXED_DISK;
usr/src/uts/sun4v/io/vdc.c
8178
vdc->minfo->dki_capacity = vdc->vdisk_size;
usr/src/uts/sun4v/io/vdc.c
8179
vdc->minfo->dki_lbsize = vdc->vdisk_bsize;
usr/src/uts/sun4v/io/vdc.c
818
vdc_do_ldc_init(vdc_t *vdc, vdc_server_t *srvr)
usr/src/uts/sun4v/io/vdc.c
8199
vdc_update_size(vdc_t *vdc, size_t dsk_size, size_t blk_size, size_t xfr_size)
usr/src/uts/sun4v/io/vdc.c
8203
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
8211
(blk_size == vdc->vdisk_bsize && dsk_size == vdc->vdisk_size &&
usr/src/uts/sun4v/io/vdc.c
8212
xfr_size == vdc->max_xfer_sz))
usr/src/uts/sun4v/io/vdc.c
8223
DMSG(vdc, 0, "[%d] vds block transfer size too big;"
usr/src/uts/sun4v/io/vdc.c
8224
" using max supported by vdc", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8228
vdc->max_xfer_sz = xfr_size;
usr/src/uts/sun4v/io/vdc.c
8229
vdc->vdisk_bsize = blk_size;
usr/src/uts/sun4v/io/vdc.c
8230
vdc->vdisk_size = dsk_size;
usr/src/uts/sun4v/io/vdc.c
8232
stp = (vd_err_stats_t *)vdc->err_stats->ks_data;
usr/src/uts/sun4v/io/vdc.c
8235
vdc->minfo->dki_capacity = dsk_size;
usr/src/uts/sun4v/io/vdc.c
8236
vdc->minfo->dki_lbsize = (uint_t)blk_size;
usr/src/uts/sun4v/io/vdc.c
824
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
8254
vdc_update_vio_bsize(vdc_t *vdc, uint32_t blk_size)
usr/src/uts/sun4v/io/vdc.c
8259
vdc->vio_bmask = 0;
usr/src/uts/sun4v/io/vdc.c
8260
vdc->vio_bshift = 0;
usr/src/uts/sun4v/io/vdc.c
8277
vdc->vio_bshift = nshift;
usr/src/uts/sun4v/io/vdc.c
8278
vdc->vio_bmask = ratio - 1;
usr/src/uts/sun4v/io/vdc.c
828
ldc_attr.instance = vdc->instance;
usr/src/uts/sun4v/io/vdc.c
8303
vdc_validate_geometry(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
8314
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
8315
ASSERT(vdc->vtoc != NULL && vdc->geom != NULL);
usr/src/uts/sun4v/io/vdc.c
8316
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
8318
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8323
(void) vdc_check_capacity(vdc);
usr/src/uts/sun4v/io/vdc.c
8324
dev = makedevice(ddi_driver_major(vdc->dip),
usr/src/uts/sun4v/io/vdc.c
8325
VD_MAKE_DEV(vdc->instance, 0));
usr/src/uts/sun4v/io/vdc.c
8340
if (vdc->vdisk_size == 0) {
usr/src/uts/sun4v/io/vdc.c
8341
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8342
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8346
VDC_EFI_DEV_SET(edev, vdc, vd_process_efi_ioctl);
usr/src/uts/sun4v/io/vdc.c
8351
DMSG(vdc, 0, "[%d] Failed to get EFI (err=%d)",
usr/src/uts/sun4v/io/vdc.c
8352
vdc->instance, rv);
usr/src/uts/sun4v/io/vdc.c
8353
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8354
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8358
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8359
vdc_store_label_efi(vdc, gpt, gpe);
usr/src/uts/sun4v/io/vdc.c
836
DMSG(vdc, 0, "[%d] ldc_init(chan %ld) returned %d",
usr/src/uts/sun4v/io/vdc.c
8365
DMSG(vdc, 0, "[%d] Failed to get VTOC (err=%d)",
usr/src/uts/sun4v/io/vdc.c
8366
vdc->instance, rv);
usr/src/uts/sun4v/io/vdc.c
8367
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8368
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
837
vdc->instance, srvr->ldc_id, status);
usr/src/uts/sun4v/io/vdc.c
8377
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8378
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8399
if (vdc->vdisk_type == VD_DISK_TYPE_SLICE) {
usr/src/uts/sun4v/io/vdc.c
8400
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8402
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8405
vdc_store_label_vtoc(vdc, &geom, &vtoc);
usr/src/uts/sun4v/io/vdc.c
8410
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8411
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8420
if (vdc->vdisk_media == VD_MEDIA_CD ||
usr/src/uts/sun4v/io/vdc.c
8421
vdc->vdisk_media == VD_MEDIA_DVD) {
usr/src/uts/sun4v/io/vdc.c
8422
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8423
vdc_store_label_vtoc(vdc, &geom, &vtoc);
usr/src/uts/sun4v/io/vdc.c
8430
label = kmem_alloc(vdc->vdisk_bsize, KM_SLEEP);
usr/src/uts/sun4v/io/vdc.c
8432
rv = vdc_do_op(vdc, VD_OP_BREAD, (caddr_t)label, vdc->vdisk_bsize,
usr/src/uts/sun4v/io/vdc.c
8437
DMSG(vdc, 1, "[%d] Got VTOC with invalid label\n",
usr/src/uts/sun4v/io/vdc.c
8438
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8439
kmem_free(label, vdc->vdisk_bsize);
usr/src/uts/sun4v/io/vdc.c
844
DMSG(vdc, 0, "[%d] Cannot discover LDC status [err=%d]",
usr/src/uts/sun4v/io/vdc.c
8440
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8441
vdc_store_label_unk(vdc);
usr/src/uts/sun4v/io/vdc.c
8445
kmem_free(label, vdc->vdisk_bsize);
usr/src/uts/sun4v/io/vdc.c
8446
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8447
vdc_store_label_vtoc(vdc, &geom, &vtoc);
usr/src/uts/sun4v/io/vdc.c
845
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
8466
vdc_validate(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
8472
ASSERT(!MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
8474
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8477
old_label = vdc->vdisk_label;
usr/src/uts/sun4v/io/vdc.c
8478
bcopy(vdc->slice, &old_slice, sizeof (vd_slice_t) * V_NUMPAR);
usr/src/uts/sun4v/io/vdc.c
8481
(void) vdc_validate_geometry(vdc);
usr/src/uts/sun4v/io/vdc.c
8484
if (vdc->vdisk_type == VD_DISK_TYPE_DISK &&
usr/src/uts/sun4v/io/vdc.c
8485
vdc->vdisk_label != old_label) {
usr/src/uts/sun4v/io/vdc.c
8487
if (vdc->vdisk_label == VD_DISK_LABEL_EFI)
usr/src/uts/sun4v/io/vdc.c
8488
rv = vdc_create_device_nodes_efi(vdc);
usr/src/uts/sun4v/io/vdc.c
8490
rv = vdc_create_device_nodes_vtoc(vdc);
usr/src/uts/sun4v/io/vdc.c
8493
DMSG(vdc, 0, "![%d] Failed to update device nodes",
usr/src/uts/sun4v/io/vdc.c
8494
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8498
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8504
vdc_t *vdc = (vdc_t *)arg;
usr/src/uts/sun4v/io/vdc.c
8506
vdc_validate(vdc);
usr/src/uts/sun4v/io/vdc.c
8508
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8509
ASSERT(vdc->validate_pending > 0);
usr/src/uts/sun4v/io/vdc.c
8510
vdc->validate_pending--;
usr/src/uts/sun4v/io/vdc.c
8511
mutex_exit(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
8531
vdc_setup_devid(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
854
DMSG(vdc, 0, "[%d] LDC callback reg. failed (%d)",
usr/src/uts/sun4v/io/vdc.c
855
vdc->instance, status);
usr/src/uts/sun4v/io/vdc.c
8552
rv = vdc_do_op(vdc, VD_OP_GET_DEVID, (caddr_t)vd_devid,
usr/src/uts/sun4v/io/vdc.c
8555
DMSG(vdc, 2, "do_op returned %d\n", rv);
usr/src/uts/sun4v/io/vdc.c
8573
rv = vdc_do_sync_op(vdc, VD_OP_GET_DEVID, (caddr_t)vd_devid,
usr/src/uts/sun4v/io/vdc.c
8593
DMSG(vdc, 2, ": devid length = %d\n", vd_devid->length);
usr/src/uts/sun4v/io/vdc.c
8596
if (ddi_devid_init(vdc->dip, DEVID_ENCAP, vd_devid->length,
usr/src/uts/sun4v/io/vdc.c
8598
DMSG(vdc, 1, "[%d] Fail to created devid\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8609
if (vdc->devid != NULL) {
usr/src/uts/sun4v/io/vdc.c
8611
if (ddi_devid_compare(vdisk_devid, vdc->devid) == 0) {
usr/src/uts/sun4v/io/vdc.c
8617
vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8619
devid_str = ddi_devid_str_encode(vdc->devid, NULL);
usr/src/uts/sun4v/io/vdc.c
8622
vdc->instance,
usr/src/uts/sun4v/io/vdc.c
8631
vdc->instance,
usr/src/uts/sun4v/io/vdc.c
8641
if (ddi_devid_register(vdc->dip, vdisk_devid) != DDI_SUCCESS) {
usr/src/uts/sun4v/io/vdc.c
8642
DMSG(vdc, 1, "[%d] Fail to register devid\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
8647
vdc->devid = vdisk_devid;
usr/src/uts/sun4v/io/vdc.c
8653
vdc_store_label_efi(vdc_t *vdc, efi_gpt_t *gpt, efi_gpe_t *gpe)
usr/src/uts/sun4v/io/vdc.c
8657
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
8659
vdc->vdisk_label = VD_DISK_LABEL_EFI;
usr/src/uts/sun4v/io/vdc.c
8660
bzero(vdc->vtoc, sizeof (struct extvtoc));
usr/src/uts/sun4v/io/vdc.c
8661
bzero(vdc->geom, sizeof (struct dk_geom));
usr/src/uts/sun4v/io/vdc.c
8662
bzero(vdc->slice, sizeof (vd_slice_t) * V_NUMPAR);
usr/src/uts/sun4v/io/vdc.c
8673
vdc->slice[i].start = gpe[i].efi_gpe_StartingLBA;
usr/src/uts/sun4v/io/vdc.c
8674
vdc->slice[i].nblocks = gpe[i].efi_gpe_EndingLBA -
usr/src/uts/sun4v/io/vdc.c
8678
ASSERT(vdc->vdisk_size != 0);
usr/src/uts/sun4v/io/vdc.c
8679
vdc->slice[VD_EFI_WD_SLICE].start = 0;
usr/src/uts/sun4v/io/vdc.c
868
DMSG(vdc, 0, "[%d] ldc_open(chan %ld) returned %d",
usr/src/uts/sun4v/io/vdc.c
8680
vdc->slice[VD_EFI_WD_SLICE].nblocks = vdc->vdisk_size;
usr/src/uts/sun4v/io/vdc.c
8685
vdc_store_label_vtoc(vdc_t *vdc, struct dk_geom *geom, struct extvtoc *vtoc)
usr/src/uts/sun4v/io/vdc.c
8689
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
869
vdc->instance, srvr->ldc_id, status);
usr/src/uts/sun4v/io/vdc.c
8690
ASSERT(vdc->vdisk_bsize == vtoc->v_sectorsz);
usr/src/uts/sun4v/io/vdc.c
8692
vdc->vdisk_label = VD_DISK_LABEL_VTOC;
usr/src/uts/sun4v/io/vdc.c
8693
bcopy(vtoc, vdc->vtoc, sizeof (struct extvtoc));
usr/src/uts/sun4v/io/vdc.c
8694
bcopy(geom, vdc->geom, sizeof (struct dk_geom));
usr/src/uts/sun4v/io/vdc.c
8695
bzero(vdc->slice, sizeof (vd_slice_t) * V_NUMPAR);
usr/src/uts/sun4v/io/vdc.c
8698
vdc->slice[i].start = vtoc->v_part[i].p_start;
usr/src/uts/sun4v/io/vdc.c
8699
vdc->slice[i].nblocks = vtoc->v_part[i].p_size;
usr/src/uts/sun4v/io/vdc.c
8704
vdc_store_label_unk(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
8706
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
8708
vdc->vdisk_label = VD_DISK_LABEL_UNK;
usr/src/uts/sun4v/io/vdc.c
8709
bzero(vdc->vtoc, sizeof (struct extvtoc));
usr/src/uts/sun4v/io/vdc.c
8710
bzero(vdc->geom, sizeof (struct dk_geom));
usr/src/uts/sun4v/io/vdc.c
8711
bzero(vdc->slice, sizeof (vd_slice_t) * V_NUMPAR);
usr/src/uts/sun4v/io/vdc.c
877
vdc_terminate_ldc(vdc, srvr);
usr/src/uts/sun4v/io/vdc.c
884
vdc_start_ldc_connection(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
888
ASSERT(vdc != NULL);
usr/src/uts/sun4v/io/vdc.c
890
ASSERT(MUTEX_HELD(&vdc->lock));
usr/src/uts/sun4v/io/vdc.c
892
status = vdc_do_ldc_up(vdc);
usr/src/uts/sun4v/io/vdc.c
894
DMSG(vdc, 0, "[%d] Finished bringing up LDC\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
921
vdc_create_io_kstats(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
923
if (vdc->io_stats != NULL) {
usr/src/uts/sun4v/io/vdc.c
924
DMSG(vdc, 0, "[%d] I/O kstat already exists\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
928
vdc->io_stats = kstat_create(VDC_DRIVER_NAME, vdc->instance, NULL,
usr/src/uts/sun4v/io/vdc.c
930
if (vdc->io_stats != NULL) {
usr/src/uts/sun4v/io/vdc.c
931
vdc->io_stats->ks_lock = &vdc->lock;
usr/src/uts/sun4v/io/vdc.c
932
kstat_install(vdc->io_stats);
usr/src/uts/sun4v/io/vdc.c
935
" will not be gathered", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
940
vdc_create_err_kstats(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
946
int instance = vdc->instance;
usr/src/uts/sun4v/io/vdc.c
948
if (vdc->err_stats != NULL) {
usr/src/uts/sun4v/io/vdc.c
949
DMSG(vdc, 0, "[%d] ERR kstat already exists\n", vdc->instance);
usr/src/uts/sun4v/io/vdc.c
958
vdc->err_stats = kstat_create(kstatmodule_err, instance, kstatname,
usr/src/uts/sun4v/io/vdc.c
961
if (vdc->err_stats == NULL) {
usr/src/uts/sun4v/io/vdc.c
967
stp = (vd_err_stats_t *)vdc->err_stats->ks_data;
usr/src/uts/sun4v/io/vdc.c
981
vdc->err_stats->ks_update = nulldev;
usr/src/uts/sun4v/io/vdc.c
983
kstat_install(vdc->err_stats);
usr/src/uts/sun4v/io/vdc.c
987
vdc_set_err_kstats(vdc_t *vdc)
usr/src/uts/sun4v/io/vdc.c
991
if (vdc->err_stats == NULL)
usr/src/uts/sun4v/io/vdc.c
994
mutex_enter(&vdc->lock);
usr/src/uts/sun4v/io/vdc.c
996
stp = (vd_err_stats_t *)vdc->err_stats->ks_data;
usr/src/uts/sun4v/io/vdc.c
999
stp->vd_capacity.value.ui64 = vdc->vdisk_size * vdc->vdisk_bsize;
usr/src/uts/sun4v/sys/vdc.h
148
#define VDC_GET_NEXT_REQ_ID(vdc) ((vdc)->req_id++)
usr/src/uts/sun4v/sys/vdc.h
150
#define VDC_GET_DRING_ENTRY_PTR(vdc, idx) \
usr/src/uts/sun4v/sys/vdc.h
151
(vd_dring_entry_t *)(uintptr_t)((vdc)->dring_mem_info.vaddr + \
usr/src/uts/sun4v/sys/vdc.h
152
(idx * (vdc)->dring_entry_size))
usr/src/uts/sun4v/sys/vdc.h
154
#define VDC_MARK_DRING_ENTRY_FREE(vdc, idx) \
usr/src/uts/sun4v/sys/vdc.h
157
ASSERT(vdc != NULL); \
usr/src/uts/sun4v/sys/vdc.h
158
ASSERT(idx < vdc->dring_len); \
usr/src/uts/sun4v/sys/vdc.h
159
ASSERT(vdc->dring_mem_info.vaddr != NULL); \
usr/src/uts/sun4v/sys/vdc.h
161
(vdc->dring_mem_info.vaddr + \
usr/src/uts/sun4v/sys/vdc.h
162
(idx * vdc->dring_entry_size)); \
usr/src/uts/sun4v/sys/vdc.h
168
#define VDC_INIT_DRING_DATA_MSG_IDS(dmsg, vdc) \
usr/src/uts/sun4v/sys/vdc.h
169
ASSERT(vdc != NULL); \
usr/src/uts/sun4v/sys/vdc.h
170
dmsg.tag.vio_sid = vdc->session_id; \
usr/src/uts/sun4v/sys/vdc.h
171
dmsg.seq_num = vdc->seq_num;
usr/src/uts/sun4v/sys/vdc.h
273
struct vdc *vdcp; /* Ptr to vdc struct */