/* AllocVmbusChannel - Allocate and initialize a vmbus channel object  */
struct vmbus_channel* AllocVmbusChannel(void)
/* AllocVmbusChannel - Allocate and initialize a vmbus channel object  */
struct vmbus_channel* AllocVmbusChannel(void)
{
	struct vmbus_channel *channel;
	channel = kzalloc(sizeof(*channel), GFP_ATOMIC);
	if (!channel)
		return NULL;
	spin_lock_init(&channel->inbound_lock);
	init_timer(&channel->poll_timer);
	channel->poll_timer.data = (unsigned long)channel;
	channel->poll_timer.function = VmbusChannelOnTimer;
	channel->ControlWQ = create_workqueue("hv_vmbus_ctl");
	if (!channel->ControlWQ) {
		kfree(channel);
		return NULL;
	}
	return channel;
}