newchannel 86 drivers/hv/channel.c int vmbus_alloc_ring(struct vmbus_channel *newchannel, newchannel 97 drivers/hv/channel.c page = alloc_pages_node(cpu_to_node(newchannel->target_cpu), newchannel 106 drivers/hv/channel.c newchannel->ringbuffer_page = page; newchannel 107 drivers/hv/channel.c newchannel->ringbuffer_pagecount = (send_size + recv_size) >> PAGE_SHIFT; newchannel 108 drivers/hv/channel.c newchannel->ringbuffer_send_offset = send_size >> PAGE_SHIFT; newchannel 114 drivers/hv/channel.c static int __vmbus_open(struct vmbus_channel *newchannel, newchannel 120 drivers/hv/channel.c struct page *page = newchannel->ringbuffer_page; newchannel 128 drivers/hv/channel.c send_pages = newchannel->ringbuffer_send_offset; newchannel 129 drivers/hv/channel.c recv_pages = newchannel->ringbuffer_pagecount - send_pages; newchannel 131 drivers/hv/channel.c spin_lock_irqsave(&newchannel->lock, flags); newchannel 132 drivers/hv/channel.c if (newchannel->state != CHANNEL_OPEN_STATE) { newchannel 133 drivers/hv/channel.c spin_unlock_irqrestore(&newchannel->lock, flags); newchannel 136 drivers/hv/channel.c spin_unlock_irqrestore(&newchannel->lock, flags); newchannel 138 drivers/hv/channel.c newchannel->state = CHANNEL_OPENING_STATE; newchannel 139 drivers/hv/channel.c newchannel->onchannel_callback = onchannelcallback; newchannel 140 drivers/hv/channel.c newchannel->channel_callback_context = context; newchannel 142 drivers/hv/channel.c err = hv_ringbuffer_init(&newchannel->outbound, page, send_pages); newchannel 146 drivers/hv/channel.c err = hv_ringbuffer_init(&newchannel->inbound, newchannel 152 drivers/hv/channel.c newchannel->ringbuffer_gpadlhandle = 0; newchannel 154 drivers/hv/channel.c err = vmbus_establish_gpadl(newchannel, newchannel 155 drivers/hv/channel.c page_address(newchannel->ringbuffer_page), newchannel 157 drivers/hv/channel.c &newchannel->ringbuffer_gpadlhandle); newchannel 171 drivers/hv/channel.c open_info->waiting_channel = newchannel; newchannel 175 drivers/hv/channel.c open_msg->openid = newchannel->offermsg.child_relid; newchannel 176 drivers/hv/channel.c open_msg->child_relid = newchannel->offermsg.child_relid; newchannel 177 drivers/hv/channel.c open_msg->ringbuffer_gpadlhandle = newchannel->ringbuffer_gpadlhandle; newchannel 178 drivers/hv/channel.c open_msg->downstream_ringbuffer_pageoffset = newchannel->ringbuffer_send_offset; newchannel 179 drivers/hv/channel.c open_msg->target_vp = newchannel->target_vp; newchannel 189 drivers/hv/channel.c if (newchannel->rescind) { newchannel 208 drivers/hv/channel.c if (newchannel->rescind) { newchannel 218 drivers/hv/channel.c newchannel->state = CHANNEL_OPENED_STATE; newchannel 229 drivers/hv/channel.c vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle); newchannel 230 drivers/hv/channel.c newchannel->ringbuffer_gpadlhandle = 0; newchannel 232 drivers/hv/channel.c hv_ringbuffer_cleanup(&newchannel->outbound); newchannel 233 drivers/hv/channel.c hv_ringbuffer_cleanup(&newchannel->inbound); newchannel 234 drivers/hv/channel.c newchannel->state = CHANNEL_OPEN_STATE; newchannel 241 drivers/hv/channel.c int vmbus_connect_ring(struct vmbus_channel *newchannel, newchannel 244 drivers/hv/channel.c return __vmbus_open(newchannel, NULL, 0, onchannelcallback, context); newchannel 251 drivers/hv/channel.c int vmbus_open(struct vmbus_channel *newchannel, newchannel 258 drivers/hv/channel.c err = vmbus_alloc_ring(newchannel, send_ringbuffer_size, newchannel 263 drivers/hv/channel.c err = __vmbus_open(newchannel, userdata, userdatalen, newchannel 266 drivers/hv/channel.c vmbus_free_ring(newchannel); newchannel 439 drivers/hv/channel_mgmt.c struct vmbus_channel *newchannel = newchannel 441 drivers/hv/channel_mgmt.c struct vmbus_channel *primary_channel = newchannel->primary_channel; newchannel 446 drivers/hv/channel_mgmt.c dev_type = hv_get_dev_type(newchannel); newchannel 448 drivers/hv/channel_mgmt.c init_vp_index(newchannel, dev_type); newchannel 450 drivers/hv/channel_mgmt.c if (newchannel->target_cpu != get_cpu()) { newchannel 452 drivers/hv/channel_mgmt.c smp_call_function_single(newchannel->target_cpu, newchannel 454 drivers/hv/channel_mgmt.c newchannel, true); newchannel 456 drivers/hv/channel_mgmt.c percpu_channel_enq(newchannel); newchannel 465 drivers/hv/channel_mgmt.c newchannel->state = CHANNEL_OPEN_STATE; newchannel 471 drivers/hv/channel_mgmt.c if (vmbus_add_channel_kobj(dev, newchannel)) newchannel 475 drivers/hv/channel_mgmt.c primary_channel->sc_creation_callback(newchannel); newchannel 477 drivers/hv/channel_mgmt.c newchannel->probe_done = true; newchannel 484 drivers/hv/channel_mgmt.c newchannel->device_obj = vmbus_device_create( newchannel 485 drivers/hv/channel_mgmt.c &newchannel->offermsg.offer.if_type, newchannel 486 drivers/hv/channel_mgmt.c &newchannel->offermsg.offer.if_instance, newchannel 487 drivers/hv/channel_mgmt.c newchannel); newchannel 488 drivers/hv/channel_mgmt.c if (!newchannel->device_obj) newchannel 491 drivers/hv/channel_mgmt.c newchannel->device_obj->device_id = dev_type; newchannel 497 drivers/hv/channel_mgmt.c ret = vmbus_device_register(newchannel->device_obj); newchannel 501 drivers/hv/channel_mgmt.c newchannel->offermsg.child_relid); newchannel 502 drivers/hv/channel_mgmt.c kfree(newchannel->device_obj); newchannel 506 drivers/hv/channel_mgmt.c newchannel->probe_done = true; newchannel 516 drivers/hv/channel_mgmt.c newchannel->probe_done = true; newchannel 519 drivers/hv/channel_mgmt.c list_del(&newchannel->listentry); newchannel 522 drivers/hv/channel_mgmt.c list_del(&newchannel->sc_list); newchannel 528 drivers/hv/channel_mgmt.c if (newchannel->target_cpu != get_cpu()) { newchannel 530 drivers/hv/channel_mgmt.c smp_call_function_single(newchannel->target_cpu, newchannel 532 drivers/hv/channel_mgmt.c newchannel, true); newchannel 534 drivers/hv/channel_mgmt.c percpu_channel_deq(newchannel); newchannel 538 drivers/hv/channel_mgmt.c vmbus_release_relid(newchannel->offermsg.child_relid); newchannel 540 drivers/hv/channel_mgmt.c free_channel(newchannel); newchannel 547 drivers/hv/channel_mgmt.c static void vmbus_process_offer(struct vmbus_channel *newchannel) newchannel 557 drivers/hv/channel_mgmt.c if (is_hvsock_channel(newchannel) || is_sub_channel(newchannel)) newchannel 568 drivers/hv/channel_mgmt.c &newchannel->offermsg.offer.if_type) && newchannel 570 drivers/hv/channel_mgmt.c &newchannel->offermsg.offer.if_instance)) { newchannel 577 drivers/hv/channel_mgmt.c list_add_tail(&newchannel->listentry, newchannel 583 drivers/hv/channel_mgmt.c if (newchannel->offermsg.offer.sub_channel_index == 0) { newchannel 589 drivers/hv/channel_mgmt.c kfree(newchannel); newchannel 596 drivers/hv/channel_mgmt.c newchannel->primary_channel = channel; newchannel 598 drivers/hv/channel_mgmt.c list_add_tail(&newchannel->sc_list, &channel->sc_list); newchannel 625 drivers/hv/channel_mgmt.c INIT_WORK(&newchannel->add_channel_work, vmbus_add_channel_work); newchannel 628 drivers/hv/channel_mgmt.c queue_work(wq, &newchannel->add_channel_work); newchannel 933 drivers/hv/channel_mgmt.c struct vmbus_channel *oldchannel, *newchannel; newchannel 986 drivers/hv/channel_mgmt.c newchannel = alloc_channel(); newchannel 987 drivers/hv/channel_mgmt.c if (!newchannel) { newchannel 994 drivers/hv/channel_mgmt.c vmbus_setup_channel_state(newchannel, offer); newchannel 996 drivers/hv/channel_mgmt.c vmbus_process_offer(newchannel);