Lines Matching refs:pdata

81 	struct hv_uio_private_data *pdata = info->priv;  in hv_uio_irqcontrol()  local
82 struct hv_device *dev = pdata->device; in hv_uio_irqcontrol()
97 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev); in hv_uio_channel_cb() local
102 uio_event_notify(&pdata->info); in hv_uio_channel_cb()
111 struct hv_uio_private_data *pdata = hv_get_drvdata(hv_dev); in hv_uio_rescind() local
117 pdata->info.irq = 0; in hv_uio_rescind()
120 uio_event_notify(&pdata->info); in hv_uio_rescind()
180 hv_uio_cleanup(struct hv_device *dev, struct hv_uio_private_data *pdata) in hv_uio_cleanup() argument
182 if (pdata->send_gpadl) { in hv_uio_cleanup()
183 vmbus_teardown_gpadl(dev->channel, pdata->send_gpadl); in hv_uio_cleanup()
184 pdata->send_gpadl = 0; in hv_uio_cleanup()
185 vfree(pdata->send_buf); in hv_uio_cleanup()
188 if (pdata->recv_gpadl) { in hv_uio_cleanup()
189 vmbus_teardown_gpadl(dev->channel, pdata->recv_gpadl); in hv_uio_cleanup()
190 pdata->recv_gpadl = 0; in hv_uio_cleanup()
191 vfree(pdata->recv_buf); in hv_uio_cleanup()
199 struct hv_uio_private_data *pdata in hv_uio_open() local
201 struct hv_device *dev = pdata->device; in hv_uio_open()
204 if (atomic_inc_return(&pdata->refcnt) != 1) in hv_uio_open()
215 atomic_dec(&pdata->refcnt); in hv_uio_open()
224 struct hv_uio_private_data *pdata in hv_uio_release() local
226 struct hv_device *dev = pdata->device; in hv_uio_release()
229 if (atomic_dec_and_test(&pdata->refcnt)) in hv_uio_release()
240 struct hv_uio_private_data *pdata; in hv_uio_probe() local
250 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL); in hv_uio_probe()
251 if (!pdata) in hv_uio_probe()
262 pdata->info.name = "uio_hv_generic"; in hv_uio_probe()
263 pdata->info.version = DRIVER_VERSION; in hv_uio_probe()
264 pdata->info.irqcontrol = hv_uio_irqcontrol; in hv_uio_probe()
265 pdata->info.open = hv_uio_open; in hv_uio_probe()
266 pdata->info.release = hv_uio_release; in hv_uio_probe()
267 pdata->info.irq = UIO_IRQ_CUSTOM; in hv_uio_probe()
268 atomic_set(&pdata->refcnt, 0); in hv_uio_probe()
271 pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings"; in hv_uio_probe()
273 pdata->info.mem[TXRX_RING_MAP].addr in hv_uio_probe()
275 pdata->info.mem[TXRX_RING_MAP].size in hv_uio_probe()
277 pdata->info.mem[TXRX_RING_MAP].memtype = UIO_MEM_IOVA; in hv_uio_probe()
279 pdata->info.mem[INT_PAGE_MAP].name = "int_page"; in hv_uio_probe()
280 pdata->info.mem[INT_PAGE_MAP].addr in hv_uio_probe()
282 pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE; in hv_uio_probe()
283 pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL; in hv_uio_probe()
285 pdata->info.mem[MON_PAGE_MAP].name = "monitor_page"; in hv_uio_probe()
286 pdata->info.mem[MON_PAGE_MAP].addr in hv_uio_probe()
288 pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE; in hv_uio_probe()
289 pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL; in hv_uio_probe()
291 pdata->recv_buf = vzalloc(RECV_BUFFER_SIZE); in hv_uio_probe()
292 if (pdata->recv_buf == NULL) { in hv_uio_probe()
297 ret = vmbus_establish_gpadl(channel, pdata->recv_buf, in hv_uio_probe()
298 RECV_BUFFER_SIZE, &pdata->recv_gpadl); in hv_uio_probe()
300 vfree(pdata->recv_buf); in hv_uio_probe()
305 snprintf(pdata->recv_name, sizeof(pdata->recv_name), in hv_uio_probe()
306 "recv:%u", pdata->recv_gpadl); in hv_uio_probe()
307 pdata->info.mem[RECV_BUF_MAP].name = pdata->recv_name; in hv_uio_probe()
308 pdata->info.mem[RECV_BUF_MAP].addr in hv_uio_probe()
309 = (uintptr_t)pdata->recv_buf; in hv_uio_probe()
310 pdata->info.mem[RECV_BUF_MAP].size = RECV_BUFFER_SIZE; in hv_uio_probe()
311 pdata->info.mem[RECV_BUF_MAP].memtype = UIO_MEM_VIRTUAL; in hv_uio_probe()
313 pdata->send_buf = vzalloc(SEND_BUFFER_SIZE); in hv_uio_probe()
314 if (pdata->send_buf == NULL) { in hv_uio_probe()
319 ret = vmbus_establish_gpadl(channel, pdata->send_buf, in hv_uio_probe()
320 SEND_BUFFER_SIZE, &pdata->send_gpadl); in hv_uio_probe()
322 vfree(pdata->send_buf); in hv_uio_probe()
326 snprintf(pdata->send_name, sizeof(pdata->send_name), in hv_uio_probe()
327 "send:%u", pdata->send_gpadl); in hv_uio_probe()
328 pdata->info.mem[SEND_BUF_MAP].name = pdata->send_name; in hv_uio_probe()
329 pdata->info.mem[SEND_BUF_MAP].addr in hv_uio_probe()
330 = (uintptr_t)pdata->send_buf; in hv_uio_probe()
331 pdata->info.mem[SEND_BUF_MAP].size = SEND_BUFFER_SIZE; in hv_uio_probe()
332 pdata->info.mem[SEND_BUF_MAP].memtype = UIO_MEM_VIRTUAL; in hv_uio_probe()
334 pdata->info.priv = pdata; in hv_uio_probe()
335 pdata->device = dev; in hv_uio_probe()
337 ret = uio_register_device(&dev->device, &pdata->info); in hv_uio_probe()
348 hv_set_drvdata(dev, pdata); in hv_uio_probe()
353 hv_uio_cleanup(dev, pdata); in hv_uio_probe()
355 kfree(pdata); in hv_uio_probe()
363 struct hv_uio_private_data *pdata = hv_get_drvdata(dev); in hv_uio_remove() local
365 if (!pdata) in hv_uio_remove()
369 uio_unregister_device(&pdata->info); in hv_uio_remove()
370 hv_uio_cleanup(dev, pdata); in hv_uio_remove()
374 kfree(pdata); in hv_uio_remove()