aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorSepherosa Ziehau <sephe@FreeBSD.org>2016-04-26 05:00:40 +0000
committerSepherosa Ziehau <sephe@FreeBSD.org>2016-04-26 05:00:40 +0000
commit232ab086dc6356b6b8745cc1db4df611e878ab1d (patch)
treecdca52a480de6cfaf2da0a5635eb1bbb34f5cb0f /sys/dev
parentf4ffb60d105846fa32a6aa2b48e9c32e43d96b5f (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
index 26dc381c1767..7477acfafa4a 100644
--- a/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
+++ b/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
@@ -357,6 +357,7 @@ storvsc_handle_sc_creation(void *context)
static void
storvsc_send_multichannel_request(struct hv_device *dev, int max_chans)
{
+ struct hv_vmbus_channel **subchan;
struct storvsc_softc *sc;
struct hv_storvsc_request *request;
struct vstor_packet *vstor_packet;
@@ -413,6 +414,12 @@ storvsc_send_multichannel_request(struct hv_device *dev, int max_chans)
return;
}
+ /*
+ * Wait for sub-channels setup to complete.
+ */
+ subchan = vmbus_get_subchan(dev->channel, request_channels_cnt);
+ vmbus_rel_subchan(subchan, request_channels_cnt);
+
if (bootverbose)
printf("Storvsc create multi-channel success!\n");
}