Lines Matching refs:cfile
51 static void genwqe_add_file(struct genwqe_dev *cd, struct genwqe_file *cfile) in genwqe_add_file() argument
55 cfile->owner = current; in genwqe_add_file()
57 list_add(&cfile->list, &cd->file_list); in genwqe_add_file()
61 static int genwqe_del_file(struct genwqe_dev *cd, struct genwqe_file *cfile) in genwqe_del_file() argument
66 list_del(&cfile->list); in genwqe_del_file()
72 static void genwqe_add_pin(struct genwqe_file *cfile, struct dma_mapping *m) in genwqe_add_pin() argument
76 spin_lock_irqsave(&cfile->pin_lock, flags); in genwqe_add_pin()
77 list_add(&m->pin_list, &cfile->pin_list); in genwqe_add_pin()
78 spin_unlock_irqrestore(&cfile->pin_lock, flags); in genwqe_add_pin()
81 static int genwqe_del_pin(struct genwqe_file *cfile, struct dma_mapping *m) in genwqe_del_pin() argument
85 spin_lock_irqsave(&cfile->pin_lock, flags); in genwqe_del_pin()
87 spin_unlock_irqrestore(&cfile->pin_lock, flags); in genwqe_del_pin()
101 static struct dma_mapping *genwqe_search_pin(struct genwqe_file *cfile, in genwqe_search_pin() argument
109 spin_lock_irqsave(&cfile->pin_lock, flags); in genwqe_search_pin()
111 list_for_each_entry(m, &cfile->pin_list, pin_list) { in genwqe_search_pin()
119 spin_unlock_irqrestore(&cfile->pin_lock, flags); in genwqe_search_pin()
123 spin_unlock_irqrestore(&cfile->pin_lock, flags); in genwqe_search_pin()
127 static void __genwqe_add_mapping(struct genwqe_file *cfile, in __genwqe_add_mapping() argument
132 spin_lock_irqsave(&cfile->map_lock, flags); in __genwqe_add_mapping()
133 list_add(&dma_map->card_list, &cfile->map_list); in __genwqe_add_mapping()
134 spin_unlock_irqrestore(&cfile->map_lock, flags); in __genwqe_add_mapping()
137 static void __genwqe_del_mapping(struct genwqe_file *cfile, in __genwqe_del_mapping() argument
142 spin_lock_irqsave(&cfile->map_lock, flags); in __genwqe_del_mapping()
144 spin_unlock_irqrestore(&cfile->map_lock, flags); in __genwqe_del_mapping()
156 static struct dma_mapping *__genwqe_search_mapping(struct genwqe_file *cfile, in __genwqe_search_mapping() argument
164 struct pci_dev *pci_dev = cfile->cd->pci_dev; in __genwqe_search_mapping()
166 spin_lock_irqsave(&cfile->map_lock, flags); in __genwqe_search_mapping()
167 list_for_each_entry(m, &cfile->map_list, card_list) { in __genwqe_search_mapping()
182 spin_unlock_irqrestore(&cfile->map_lock, flags); in __genwqe_search_mapping()
186 spin_unlock_irqrestore(&cfile->map_lock, flags); in __genwqe_search_mapping()
195 static void genwqe_remove_mappings(struct genwqe_file *cfile) in genwqe_remove_mappings() argument
200 struct genwqe_dev *cd = cfile->cd; in genwqe_remove_mappings()
201 struct pci_dev *pci_dev = cfile->cd->pci_dev; in genwqe_remove_mappings()
203 list_for_each_safe(node, next, &cfile->map_list) { in genwqe_remove_mappings()
234 static void genwqe_remove_pinnings(struct genwqe_file *cfile) in genwqe_remove_pinnings() argument
238 struct genwqe_dev *cd = cfile->cd; in genwqe_remove_pinnings()
240 list_for_each_safe(node, next, &cfile->pin_list) { in genwqe_remove_pinnings()
266 struct genwqe_file *cfile; in genwqe_kill_fasync() local
269 list_for_each_entry(cfile, &cd->file_list, list) { in genwqe_kill_fasync()
270 if (cfile->async_queue) in genwqe_kill_fasync()
271 kill_fasync(&cfile->async_queue, sig, POLL_HUP); in genwqe_kill_fasync()
282 struct genwqe_file *cfile; in genwqe_force_sig() local
285 list_for_each_entry(cfile, &cd->file_list, list) { in genwqe_force_sig()
286 force_sig(sig, cfile->owner); in genwqe_force_sig()
306 struct genwqe_file *cfile; in genwqe_open() local
309 cfile = kzalloc(sizeof(*cfile), GFP_KERNEL); in genwqe_open()
310 if (cfile == NULL) in genwqe_open()
315 cfile->cd = cd; in genwqe_open()
316 cfile->filp = filp; in genwqe_open()
317 cfile->client = NULL; in genwqe_open()
319 spin_lock_init(&cfile->map_lock); /* list of raw memory allocations */ in genwqe_open()
320 INIT_LIST_HEAD(&cfile->map_list); in genwqe_open()
322 spin_lock_init(&cfile->pin_lock); /* list of user pinned memory */ in genwqe_open()
323 INIT_LIST_HEAD(&cfile->pin_list); in genwqe_open()
325 filp->private_data = cfile; in genwqe_open()
327 genwqe_add_file(cd, cfile); in genwqe_open()
365 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data; in genwqe_release() local
366 struct genwqe_dev *cd = cfile->cd; in genwqe_release()
369 genwqe_remove_mappings(cfile); in genwqe_release()
370 genwqe_remove_pinnings(cfile); in genwqe_release()
380 genwqe_del_file(cd, cfile); in genwqe_release()
381 kfree(cfile); in genwqe_release()
404 struct genwqe_file *cfile = vma->vm_private_data; in genwqe_vma_close() local
406 dma_map = __genwqe_search_mapping(cfile, vma->vm_start, vsize, in genwqe_vma_close()
415 __genwqe_del_mapping(cfile, dma_map); in genwqe_vma_close()
442 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data; in genwqe_mmap() local
443 struct genwqe_dev *cd = cfile->cd; in genwqe_mmap()
481 vma->vm_private_data = cfile; in genwqe_mmap()
483 __genwqe_add_mapping(cfile, dma_map); in genwqe_mmap()
506 static int do_flash_update(struct genwqe_file *cfile, in do_flash_update() argument
518 struct genwqe_dev *cd = cfile->cd; in do_flash_update()
519 struct file *filp = cfile->filp; in do_flash_update()
643 static int do_flash_read(struct genwqe_file *cfile, in do_flash_read() argument
653 struct genwqe_dev *cd = cfile->cd; in do_flash_read()
654 struct file *filp = cfile->filp; in do_flash_read()
773 static int genwqe_pin_mem(struct genwqe_file *cfile, struct genwqe_mem *m) in genwqe_pin_mem() argument
776 struct genwqe_dev *cd = cfile->cd; in genwqe_pin_mem()
777 struct pci_dev *pci_dev = cfile->cd->pci_dev; in genwqe_pin_mem()
801 genwqe_add_pin(cfile, dma_map); in genwqe_pin_mem()
805 static int genwqe_unpin_mem(struct genwqe_file *cfile, struct genwqe_mem *m) in genwqe_unpin_mem() argument
807 struct genwqe_dev *cd = cfile->cd; in genwqe_unpin_mem()
818 dma_map = genwqe_search_pin(cfile, map_addr, map_size, NULL); in genwqe_unpin_mem()
822 genwqe_del_pin(cfile, dma_map); in genwqe_unpin_mem()
833 static int ddcb_cmd_cleanup(struct genwqe_file *cfile, struct ddcb_requ *req) in ddcb_cmd_cleanup() argument
837 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_cleanup()
843 __genwqe_del_mapping(cfile, dma_map); in ddcb_cmd_cleanup()
860 static int ddcb_cmd_fixups(struct genwqe_file *cfile, struct ddcb_requ *req) in ddcb_cmd_fixups() argument
864 struct genwqe_dev *cd = cfile->cd; in ddcb_cmd_fixups()
902 m = __genwqe_search_mapping(cfile, u_addr, u_size, in ddcb_cmd_fixups()
934 m = genwqe_search_pin(cfile, u_addr, u_size, NULL); in ddcb_cmd_fixups()
950 __genwqe_add_mapping(cfile, m); in ddcb_cmd_fixups()
977 ddcb_cmd_cleanup(cfile, req); in ddcb_cmd_fixups()
988 static int genwqe_execute_ddcb(struct genwqe_file *cfile, in genwqe_execute_ddcb() argument
992 struct genwqe_dev *cd = cfile->cd; in genwqe_execute_ddcb()
993 struct file *filp = cfile->filp; in genwqe_execute_ddcb()
996 rc = ddcb_cmd_fixups(cfile, req); in genwqe_execute_ddcb()
1001 ddcb_cmd_cleanup(cfile, req); in genwqe_execute_ddcb()
1005 static int do_execute_ddcb(struct genwqe_file *cfile, in do_execute_ddcb() argument
1011 struct genwqe_dev *cd = cfile->cd; in do_execute_ddcb()
1012 struct file *filp = cfile->filp; in do_execute_ddcb()
1026 rc = genwqe_execute_ddcb(cfile, cmd); in do_execute_ddcb()
1054 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data; in genwqe_ioctl() local
1055 struct genwqe_dev *cd = cfile->cd; in genwqe_ioctl()
1161 rc = do_flash_update(cfile, &load); in genwqe_ioctl()
1181 rc = do_flash_read(cfile, &load); in genwqe_ioctl()
1196 return genwqe_pin_mem(cfile, &m); in genwqe_ioctl()
1205 return genwqe_unpin_mem(cfile, &m); in genwqe_ioctl()
1210 return do_execute_ddcb(cfile, arg, 0); in genwqe_ioctl()
1217 return do_execute_ddcb(cfile, arg, 1); in genwqe_ioctl()