Lines Matching refs:pdata

80 	struct hv_uio_private_data *pdata = info->priv;
81 struct hv_device *dev = pdata->device;
99 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev);
104 uio_event_notify(&pdata->info);
113 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev);
119 pdata->info.irq = 0;
122 uio_event_notify(&pdata->info);
182 hv_uio_cleanup(struct hv_device *dev, struct hv_uio_private_data *pdata)
184 if (pdata->send_gpadl.gpadl_handle) {
185 vmbus_teardown_gpadl(dev->channel, &pdata->send_gpadl);
186 if (!pdata->send_gpadl.decrypted)
187 vfree(pdata->send_buf);
190 if (pdata->recv_gpadl.gpadl_handle) {
191 vmbus_teardown_gpadl(dev->channel, &pdata->recv_gpadl);
192 if (!pdata->recv_gpadl.decrypted)
193 vfree(pdata->recv_buf);
201 struct hv_uio_private_data *pdata
203 struct hv_device *dev = pdata->device;
206 if (atomic_inc_return(&pdata->refcnt) != 1)
217 atomic_dec(&pdata->refcnt);
226 struct hv_uio_private_data *pdata
228 struct hv_device *dev = pdata->device;
231 if (atomic_dec_and_test(&pdata->refcnt))
242 struct hv_uio_private_data *pdata;
250 pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL);
251 if (!pdata)
261 pdata->info.name = "uio_hv_generic";
262 pdata->info.version = DRIVER_VERSION;
263 pdata->info.irqcontrol = hv_uio_irqcontrol;
264 pdata->info.open = hv_uio_open;
265 pdata->info.release = hv_uio_release;
266 pdata->info.irq = UIO_IRQ_CUSTOM;
267 atomic_set(&pdata->refcnt, 0);
270 pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings";
272 pdata->info.mem[TXRX_RING_MAP].addr
274 pdata->info.mem[TXRX_RING_MAP].size
276 pdata->info.mem[TXRX_RING_MAP].memtype = UIO_MEM_IOVA;
278 pdata->info.mem[INT_PAGE_MAP].name = "int_page";
279 pdata->info.mem[INT_PAGE_MAP].addr
281 pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE;
282 pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
284 pdata->info.mem[MON_PAGE_MAP].name = "monitor_page";
285 pdata->info.mem[MON_PAGE_MAP].addr
287 pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE;
288 pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
290 pdata->recv_buf = vzalloc(RECV_BUFFER_SIZE);
291 if (pdata->recv_buf == NULL) {
296 ret = vmbus_establish_gpadl(channel, pdata->recv_buf,
297 RECV_BUFFER_SIZE, &pdata->recv_gpadl);
299 if (!pdata->recv_gpadl.decrypted)
300 vfree(pdata->recv_buf);
305 snprintf(pdata->recv_name, sizeof(pdata->recv_name),
306 "recv:%u", pdata->recv_gpadl.gpadl_handle);
307 pdata->info.mem[RECV_BUF_MAP].name = pdata->recv_name;
308 pdata->info.mem[RECV_BUF_MAP].addr
309 = (uintptr_t)pdata->recv_buf;
310 pdata->info.mem[RECV_BUF_MAP].size = RECV_BUFFER_SIZE;
311 pdata->info.mem[RECV_BUF_MAP].memtype = UIO_MEM_VIRTUAL;
313 pdata->send_buf = vzalloc(SEND_BUFFER_SIZE);
314 if (pdata->send_buf == NULL) {
319 ret = vmbus_establish_gpadl(channel, pdata->send_buf,
320 SEND_BUFFER_SIZE, &pdata->send_gpadl);
322 if (!pdata->send_gpadl.decrypted)
323 vfree(pdata->send_buf);
327 snprintf(pdata->send_name, sizeof(pdata->send_name),
328 "send:%u", pdata->send_gpadl.gpadl_handle);
329 pdata->info.mem[SEND_BUF_MAP].name = pdata->send_name;
330 pdata->info.mem[SEND_BUF_MAP].addr
331 = (uintptr_t)pdata->send_buf;
332 pdata->info.mem[SEND_BUF_MAP].size = SEND_BUFFER_SIZE;
333 pdata->info.mem[SEND_BUF_MAP].memtype = UIO_MEM_VIRTUAL;
335 pdata->info.priv = pdata;
336 pdata->device = dev;
338 ret = uio_register_device(&dev->device, &pdata->info);
349 hv_set_drvdata(dev, pdata);
354 hv_uio_cleanup(dev, pdata);
364 struct hv_uio_private_data *pdata = hv_get_drvdata(dev);
366 if (!pdata)
370 uio_unregister_device(&pdata->info);
371 hv_uio_cleanup(dev, pdata);