Lines Matching defs:fedata
56 struct pvcalls_fedata *fedata;
77 struct pvcalls_fedata *fedata;
89 struct pvcalls_fedata *fedata,
264 struct pvcalls_fedata *fedata;
268 fedata = dev_get_drvdata(&dev->dev);
280 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
317 struct pvcalls_fedata *fedata,
333 map->fedata = fedata;
338 ret = xenbus_map_ring_valloc(fedata->dev, &ref, 1, &page);
350 ret = xenbus_map_ring_valloc(fedata->dev, map->ring->ref,
357 fedata->dev, evtchn,
372 down(&fedata->socket_lock);
373 list_add_tail(&map->list, &fedata->socket_mappings);
374 up(&fedata->socket_lock);
385 down(&fedata->socket_lock);
387 pvcalls_back_release_active(fedata->dev, fedata, map);
388 up(&fedata->socket_lock);
395 struct pvcalls_fedata *fedata;
402 fedata = dev_get_drvdata(&dev->dev);
418 map = pvcalls_new_active_socket(fedata,
427 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
437 struct pvcalls_fedata *fedata,
462 struct pvcalls_fedata *fedata,
481 struct pvcalls_fedata *fedata;
487 fedata = dev_get_drvdata(&dev->dev);
489 down(&fedata->socket_lock);
490 list_for_each_entry_safe(map, n, &fedata->socket_mappings, list) {
493 up(&fedata->socket_lock);
494 ret = pvcalls_back_release_active(dev, fedata, map);
498 mappass = radix_tree_lookup(&fedata->socketpass_mappings,
501 radix_tree_delete(&fedata->socketpass_mappings, mappass->id);
502 up(&fedata->socket_lock);
503 ret = pvcalls_back_release_passive(dev, fedata, mappass);
505 up(&fedata->socket_lock);
508 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
522 struct pvcalls_fedata *fedata;
530 fedata = mappass->fedata;
557 map = pvcalls_new_active_socket(fedata,
574 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
579 RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&fedata->ring, notify);
581 notify_remote_via_irq(fedata->irq);
589 struct pvcalls_fedata *fedata;
599 fedata = mappass->fedata;
602 rsp = RING_GET_RESPONSE(&fedata->ring,
603 fedata->ring.rsp_prod_pvt++);
612 RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&fedata->ring, notify);
614 notify_remote_via_irq(mappass->fedata->irq);
624 struct pvcalls_fedata *fedata;
629 fedata = dev_get_drvdata(&dev->dev);
654 map->fedata = fedata;
657 down(&fedata->socket_lock);
658 ret = radix_tree_insert(&fedata->socketpass_mappings, map->id,
660 up(&fedata->socket_lock);
678 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
689 struct pvcalls_fedata *fedata;
694 fedata = dev_get_drvdata(&dev->dev);
696 down(&fedata->socket_lock);
697 map = radix_tree_lookup(&fedata->socketpass_mappings, req->u.listen.id);
698 up(&fedata->socket_lock);
705 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
716 struct pvcalls_fedata *fedata;
722 fedata = dev_get_drvdata(&dev->dev);
724 down(&fedata->socket_lock);
725 mappass = radix_tree_lookup(&fedata->socketpass_mappings,
727 up(&fedata->socket_lock);
750 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
761 struct pvcalls_fedata *fedata;
770 fedata = dev_get_drvdata(&dev->dev);
772 down(&fedata->socket_lock);
773 mappass = radix_tree_lookup(&fedata->socketpass_mappings,
775 up(&fedata->socket_lock);
806 rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
843 struct pvcalls_fedata *fedata;
846 fedata = dev_get_drvdata(&dev->dev);
848 &fedata->ring, fedata->ring.rsp_prod_pvt++);
858 static void pvcalls_back_work(struct pvcalls_fedata *fedata)
862 struct xenbus_device *dev = fedata->dev;
865 while (RING_HAS_UNCONSUMED_REQUESTS(&fedata->ring)) {
866 RING_COPY_REQUEST(&fedata->ring,
867 fedata->ring.req_cons++,
872 &fedata->ring, notify);
878 notify_remote_via_irq(fedata->irq);
882 RING_FINAL_CHECK_FOR_REQUESTS(&fedata->ring, more);
889 struct pvcalls_fedata *fedata = NULL;
893 fedata = dev_get_drvdata(&dev->dev);
894 if (fedata) {
895 pvcalls_back_work(fedata);
931 struct pvcalls_fedata *fedata = NULL;
933 fedata = kzalloc(sizeof(struct pvcalls_fedata), GFP_KERNEL);
934 if (!fedata)
937 fedata->irq = -1;
958 fedata->irq = err;
960 err = request_threaded_irq(fedata->irq, NULL, pvcalls_back_event,
966 (void **)&fedata->sring);
970 BACK_RING_INIT(&fedata->ring, fedata->sring, XEN_PAGE_SIZE * 1);
971 fedata->dev = dev;
973 INIT_LIST_HEAD(&fedata->socket_mappings);
974 INIT_RADIX_TREE(&fedata->socketpass_mappings, GFP_KERNEL);
975 sema_init(&fedata->socket_lock, 1);
976 dev_set_drvdata(&dev->dev, fedata);
979 list_add_tail(&fedata->list, &pvcalls_back_global.frontends);
985 if (fedata->irq >= 0)
986 unbind_from_irqhandler(fedata->irq, dev);
987 if (fedata->sring != NULL)
988 xenbus_unmap_ring_vfree(dev, fedata->sring);
989 kfree(fedata);
995 struct pvcalls_fedata *fedata;
1002 fedata = dev_get_drvdata(&dev->dev);
1004 down(&fedata->socket_lock);
1005 list_for_each_entry_safe(map, n, &fedata->socket_mappings, list) {
1007 pvcalls_back_release_active(dev, fedata, map);
1010 radix_tree_for_each_slot(slot, &fedata->socketpass_mappings, &iter, 0) {
1018 radix_tree_delete(&fedata->socketpass_mappings,
1020 pvcalls_back_release_passive(dev, fedata, mappass);
1023 up(&fedata->socket_lock);
1025 unbind_from_irqhandler(fedata->irq, dev);
1026 xenbus_unmap_ring_vfree(dev, fedata->sring);
1028 list_del(&fedata->list);
1029 kfree(fedata);
1231 struct pvcalls_fedata *fedata, *nfedata;
1234 list_for_each_entry_safe(fedata, nfedata,
1236 backend_disconnect(fedata->dev);