Lines Matching refs:buf

106 	char *buf;  member
365 static void free_buf(struct port_buffer *buf, bool can_sleep) in free_buf() argument
369 for (i = 0; i < buf->sgpages; i++) { in free_buf()
370 struct page *page = sg_page(&buf->sg[i]); in free_buf()
376 if (!buf->dev) { in free_buf()
377 kfree(buf->buf); in free_buf()
385 list_add_tail(&buf->list, &pending_free_dma_bufs); in free_buf()
389 dma_free_coherent(buf->dev, buf->size, buf->buf, buf->dma); in free_buf()
392 put_device(buf->dev); in free_buf()
395 kfree(buf); in free_buf()
401 struct port_buffer *buf, *tmp; in reclaim_dma_bufs() local
414 list_for_each_entry_safe(buf, tmp, &tmp_list, list) { in reclaim_dma_bufs()
415 list_del(&buf->list); in reclaim_dma_bufs()
416 free_buf(buf, true); in reclaim_dma_bufs()
423 struct port_buffer *buf; in alloc_buf() local
431 buf = kmalloc(sizeof(*buf) + sizeof(struct scatterlist) * pages, in alloc_buf()
433 if (!buf) in alloc_buf()
436 buf->sgpages = pages; in alloc_buf()
438 buf->dev = NULL; in alloc_buf()
439 buf->buf = NULL; in alloc_buf()
440 return buf; in alloc_buf()
455 buf->dev = vq->vdev->dev.parent->parent; in alloc_buf()
458 get_device(buf->dev); in alloc_buf()
459 buf->buf = dma_alloc_coherent(buf->dev, buf_size, &buf->dma, in alloc_buf()
462 buf->dev = NULL; in alloc_buf()
463 buf->buf = kmalloc(buf_size, GFP_KERNEL); in alloc_buf()
466 if (!buf->buf) in alloc_buf()
468 buf->len = 0; in alloc_buf()
469 buf->offset = 0; in alloc_buf()
470 buf->size = buf_size; in alloc_buf()
471 return buf; in alloc_buf()
474 kfree(buf); in alloc_buf()
482 struct port_buffer *buf; in get_inbuf() local
488 buf = virtqueue_get_buf(port->in_vq, &len); in get_inbuf()
489 if (buf) { in get_inbuf()
490 buf->len = len; in get_inbuf()
491 buf->offset = 0; in get_inbuf()
494 return buf; in get_inbuf()
503 static int add_inbuf(struct virtqueue *vq, struct port_buffer *buf) in add_inbuf() argument
508 sg_init_one(sg, buf->buf, buf->size); in add_inbuf()
510 ret = virtqueue_add_inbuf(vq, sg, 1, buf, GFP_ATOMIC); in add_inbuf()
520 struct port_buffer *buf; in discard_port_data() local
527 buf = get_inbuf(port); in discard_port_data()
530 while (buf) { in discard_port_data()
531 port->stats.bytes_discarded += buf->len - buf->offset; in discard_port_data()
532 if (add_inbuf(port->in_vq, buf) < 0) { in discard_port_data()
534 free_buf(buf, false); in discard_port_data()
537 buf = get_inbuf(port); in discard_port_data()
602 struct port_buffer *buf; in reclaim_consumed_buffers() local
609 while ((buf = virtqueue_get_buf(port->out_vq, &len))) { in reclaim_consumed_buffers()
610 free_buf(buf, false); in reclaim_consumed_buffers()
676 struct port_buffer *buf; in fill_readbuf() local
682 buf = port->inbuf; in fill_readbuf()
683 out_count = min(out_count, buf->len - buf->offset); in fill_readbuf()
688 ret = copy_to_user(out_buf, buf->buf + buf->offset, out_count); in fill_readbuf()
692 memcpy((__force char *)out_buf, buf->buf + buf->offset, in fill_readbuf()
696 buf->offset += out_count; in fill_readbuf()
698 if (buf->offset == buf->len) { in fill_readbuf()
706 if (add_inbuf(port->in_vq, buf) < 0) in fill_readbuf()
819 struct port_buffer *buf; in port_fops_write() local
838 buf = alloc_buf(port->out_vq, count, 0); in port_fops_write()
839 if (!buf) in port_fops_write()
842 ret = copy_from_user(buf->buf, ubuf, count); in port_fops_write()
856 sg_init_one(sg, buf->buf, count); in port_fops_write()
857 ret = __send_to_port(port, sg, 1, count, buf, nonblock); in port_fops_write()
863 free_buf(buf, true); in port_fops_write()
875 static int pipe_to_sg(struct pipe_inode_info *pipe, struct pipe_buffer *buf, in pipe_to_sg() argument
885 if (buf->ops->steal(pipe, buf) == 0) { in pipe_to_sg()
887 get_page(buf->page); in pipe_to_sg()
888 unlock_page(buf->page); in pipe_to_sg()
890 len = min(buf->len, sd->len); in pipe_to_sg()
891 sg_set_page(&(sgl->sg[sgl->n]), buf->page, len, buf->offset); in pipe_to_sg()
906 src = kmap_atomic(buf->page); in pipe_to_sg()
907 memcpy(page_address(page) + offset, src + buf->offset, len); in pipe_to_sg()
926 struct port_buffer *buf; in port_fops_splice_write() local
957 buf = alloc_buf(port->out_vq, 0, pipe->nrbufs); in port_fops_splice_write()
958 if (!buf) { in port_fops_splice_write()
966 sgl.sg = buf->sg; in port_fops_splice_write()
971 ret = __send_to_port(port, buf->sg, sgl.n, sgl.len, buf, true); in port_fops_splice_write()
974 free_buf(buf, true); in port_fops_splice_write()
1129 static int put_chars(u32 vtermno, const char *buf, int count) in put_chars() argument
1135 return early_put_chars(vtermno, buf, count); in put_chars()
1141 sg_init_one(sg, buf, count); in put_chars()
1142 return __send_to_port(port, sg, 1, count, (void *)buf, false); in put_chars()
1152 static int get_chars(u32 vtermno, char *buf, int count) in get_chars() argument
1167 return fill_readbuf(port, (__force char __user *)buf, count, false); in get_chars()
1306 char *buf; in debugfs_read() local
1310 buf = kmalloc(out_count, GFP_KERNEL); in debugfs_read()
1311 if (!buf) in debugfs_read()
1316 out_offset += snprintf(buf + out_offset, out_count, in debugfs_read()
1318 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1320 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1322 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1324 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1326 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1329 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1332 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1335 out_offset += snprintf(buf + out_offset, out_count - out_offset, in debugfs_read()
1338 ret = simple_read_from_buffer(ubuf, count, offp, buf, out_offset); in debugfs_read()
1339 kfree(buf); in debugfs_read()
1360 struct port_buffer *buf; in fill_queue() local
1366 buf = alloc_buf(vq, PAGE_SIZE, 0); in fill_queue()
1367 if (!buf) in fill_queue()
1371 ret = add_inbuf(vq, buf); in fill_queue()
1374 free_buf(buf, true); in fill_queue()
1394 struct port_buffer *buf; in add_port() local
1505 while ((buf = virtqueue_detach_unused_buf(port->in_vq))) in add_port()
1506 free_buf(buf, true); in add_port()
1531 struct port_buffer *buf; in remove_port_data() local
1538 while ((buf = virtqueue_detach_unused_buf(port->in_vq))) in remove_port_data()
1539 free_buf(buf, true); in remove_port_data()
1546 while ((buf = virtqueue_detach_unused_buf(port->out_vq))) in remove_port_data()
1547 free_buf(buf, true); in remove_port_data()
1609 struct port_buffer *buf) in handle_control_message() argument
1616 cpkt = (struct virtio_console_control *)(buf->buf + buf->offset); in handle_control_message()
1670 memcpy(&size, buf->buf + buf->offset + sizeof(*cpkt), in handle_control_message()
1710 name_size = buf->len - buf->offset - sizeof(*cpkt) + 1; in handle_control_message()
1718 strncpy(port->name, buf->buf + buf->offset + sizeof(*cpkt), in handle_control_message()
1748 struct port_buffer *buf; in control_work_handler() local
1755 while ((buf = virtqueue_get_buf(vq, &len))) { in control_work_handler()
1758 buf->len = len; in control_work_handler()
1759 buf->offset = 0; in control_work_handler()
1761 handle_control_message(vq->vdev, portdev, buf); in control_work_handler()
1764 if (add_inbuf(portdev->c_ivq, buf) < 0) { in control_work_handler()
1767 free_buf(buf, false); in control_work_handler()
1973 struct port_buffer *buf; in remove_controlq_data() local
1979 while ((buf = virtqueue_get_buf(portdev->c_ivq, &len))) in remove_controlq_data()
1980 free_buf(buf, true); in remove_controlq_data()
1982 while ((buf = virtqueue_detach_unused_buf(portdev->c_ivq))) in remove_controlq_data()
1983 free_buf(buf, true); in remove_controlq_data()