diff options
Diffstat (limited to 'drivers/hv/channel_mgmt.c')
| -rw-r--r-- | drivers/hv/channel_mgmt.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 7bf59177aaf..f4d990285d9 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -282,6 +282,26 @@ static void vmbus_onoffer(struct vmbus_channel_message_header *hdr)  	 */  	newchannel->batched_reading = true; +	/* +	 * Setup state for signalling the host. +	 */ +	newchannel->sig_event = (struct hv_input_signal_event *) +				(ALIGN((unsigned long) +				&newchannel->sig_buf, +				HV_HYPERCALL_PARAM_ALIGN)); + +	newchannel->sig_event->connectionid.asu32 = 0; +	newchannel->sig_event->connectionid.u.id = VMBUS_EVENT_CONNECTION_ID; +	newchannel->sig_event->flag_number = 0; +	newchannel->sig_event->rsvdz = 0; + +	if (vmbus_proto_version != VERSION_WS2008) { +		newchannel->is_dedicated_interrupt = +				(offer->is_dedicated_interrupt != 0); +		newchannel->sig_event->connectionid.u.id = +				offer->connection_id; +	} +  	memcpy(&newchannel->offermsg, offer,  	       sizeof(struct vmbus_channel_offer_channel));  	newchannel->monitor_grp = (u8)offer->monitorid / 32;  |