Lines Matching refs:buffer
250 * Ensure the command buffer is flushed to memory before handing it
270 * Returns a pointer to the buffer
276 void *buffer = kzalloc(size, GFP_ATOMIC);
278 if (!buffer) {
284 *dma_handle = dma_map_single(&vdev->dev, buffer, size,
289 kfree_sensitive(buffer);
293 return buffer;
326 struct ibmvmc_buffer *buffer;
333 buffer = hmcs[hmc_index].buffer;
336 if (buffer[i].valid && buffer[i].free &&
337 buffer[i].owner == VMC_BUF_OWNER_ALPHA) {
338 buffer[i].free = 0;
339 ret_buf = &buffer[i];
359 struct ibmvmc_buffer *buffer;
369 buffer = hmcs[hmc_index].buffer;
372 if (buffer[i].free &&
373 buffer[i].owner == VMC_BUF_OWNER_ALPHA) {
374 buffer[i].free = 0;
375 ret_buf = &buffer[i];
387 * @buffer: ibmvmc_buffer struct
391 struct ibmvmc_buffer *buffer)
396 buffer->free = 1;
411 struct ibmvmc_buffer *buffer;
423 buffer = hmcs[hmc_index].buffer;
427 if (buffer[i].valid) {
429 if (buffer[i].free)
480 struct ibmvmc_buffer *buffer;
506 buffer = hmc->buffer;
508 if (buffer[i].valid) {
511 buffer[i].real_addr_local,
512 buffer[i].dma_addr_local);
513 dev_dbg(adapter->dev, "Forgot buffer id 0x%lx\n", i);
515 memset(&buffer[i], 0, sizeof(struct ibmvmc_buffer));
527 * @buffer: Pointer to ibmvmc_buffer struct
543 static int ibmvmc_send_open(struct ibmvmc_buffer *buffer,
557 (unsigned long)buffer->size, (unsigned long)adapter->liobn,
558 (unsigned long)buffer->dma_addr_local,
560 (unsigned long)buffer->dma_addr_remote);
562 rc = h_copy_rdma(buffer->size,
564 buffer->dma_addr_local,
566 buffer->dma_addr_remote);
581 crq_msg.var2.buffer_id = cpu_to_be16(buffer->id);
727 * which buffer the management partition selected to remove. The Status
761 * @buffer: ibmvmc_buffer struct
778 struct ibmvmc_buffer *buffer,
788 buffer->dma_addr_local,
790 buffer->dma_addr_remote);
803 crq_msg.var2.buffer_id = cpu_to_be16(buffer->id);
808 buffer->owner = VMC_BUF_OWNER_HV;
895 * @buf: Character buffer
909 struct ibmvmc_buffer *buffer;
973 buffer = &(hmc->buffer[hmc->queue_outbound_msgs[hmc->queue_tail]]);
979 nbytes = min_t(size_t, nbytes, buffer->msg_len);
980 n = copy_to_user((void *)buf, buffer->real_addr_local, nbytes);
982 ibmvmc_free_hmc_buffer(hmc, buffer);
1031 * @buffer: Character buffer
1039 static ssize_t ibmvmc_write(struct file *file, const char *buffer,
1049 const char *p = buffer;
1075 dev_warn(adapter->dev, "invalid buffer size 0x%lx\n",
1097 /* No buffer available for the msg send, or we have not yet
1105 dev_err(adapter->dev, "no buffer storage assigned\n");
1122 if (p == buffer)
1132 ret = p - buffer;
1163 * have a generic buffer for each possible HMC connection.
1210 struct ibmvmc_buffer *buffer;
1242 buffer = ibmvmc_get_valid_hmc_buffer(hmc->index);
1245 if (!buffer || !buffer->real_addr_local) {
1246 pr_warn("ibmvmc: sethmcid: no buffer available\n");
1250 /* Make sure buffer is NULL terminated before trying to print it */
1255 memcpy(buffer->real_addr_local, hmc->hmc_id, HMC_ID_LEN);
1257 rc = ibmvmc_send_open(buffer, hmc);
1404 * This message transfers a buffer from hypervisor ownership to management
1407 * buffer of size MTU (as established in the capabilities exchange).
1428 struct ibmvmc_buffer *buffer;
1459 buffer = &hmcs[hmc_index].buffer[buffer_id];
1461 if (buffer->real_addr_local || buffer->dma_addr_local) {
1470 buffer->real_addr_local = alloc_dma_buffer(to_vio_dev(adapter->dev),
1472 &buffer->dma_addr_local);
1474 if (!buffer->real_addr_local) {
1482 buffer->dma_addr_remote = be32_to_cpu(crq->var3.lioba);
1483 buffer->size = ibmvmc.max_mtu;
1484 buffer->owner = crq->var1.owner;
1485 buffer->free = 1;
1488 buffer->valid = 1;
1489 buffer->id = buffer_id;
1491 dev_dbg(adapter->dev, "add_buffer: successfully added a buffer:\n");
1492 dev_dbg(adapter->dev, " index: %d, session: %d, buffer: 0x%x, owner: %d\n",
1493 hmc_index, hmc_session, buffer_id, buffer->owner);
1495 (u32)buffer->dma_addr_local,
1496 (u32)buffer->dma_addr_remote);
1511 * This message requests an HMC buffer to be transferred from management
1515 * one inbound buffer to allow management application commands to flow to the
1517 * attempt to remove the management partition's last buffer.
1519 * The hypervisor is expected to manage buffer usage with the management
1526 * function. The hypervisor requests a reduction in buffer pool size.
1527 * 3. The management application acknowledges the reduction in buffer pool size.
1530 * 5. The management partition verifies it can remove the buffer. This is
1538 * The hypervisor requested that we pick an unused buffer, and return it.
1539 * Before sending the buffer back, we free any storage associated with the
1540 * buffer.
1545 struct ibmvmc_buffer *buffer;
1567 buffer = ibmvmc_get_free_hmc_buffer(adapter, hmc_index);
1568 if (!buffer) {
1569 dev_info(adapter->dev, "rem_buffer: no buffer to remove\n");
1577 buffer_id = buffer->id;
1579 if (buffer->valid)
1582 buffer->real_addr_local,
1583 buffer->dma_addr_local);
1585 memset(buffer, 0, sizeof(struct ibmvmc_buffer));
1588 dev_dbg(adapter->dev, "rem_buffer: removed buffer 0x%x.\n", buffer_id);
1598 struct ibmvmc_buffer *buffer;
1647 buffer = &hmc->buffer[buffer_id];
1649 if (buffer->valid == 0 || buffer->owner == VMC_BUF_OWNER_ALPHA) {
1651 buffer->valid, buffer->owner);
1659 buffer->dma_addr_remote,
1661 buffer->dma_addr_local);
1666 buffer->msg_len = msg_len;
1667 buffer->free = 0;
1668 buffer->owner = VMC_BUF_OWNER_ALPHA;
1684 dev_err(adapter->dev, "outbound buffer queue wrapped.\n");
1853 * Open message. When this message is received, the indicated buffer is
1884 &hmcs[hmc_index].buffer[buffer_id]);
2326 pr_warn("ibmvmc: Max buffer pool size reduced to %d\n",
2330 pr_warn("ibmvmc: Max buffer pool size increased to %d\n",