Lines Matching defs:pdata

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