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,
1050 const char *p = buffer;
1076 dev_warn(adapter->dev, "invalid buffer size 0x%lx\n",
1098 /* No buffer available for the msg send, or we have not yet
1106 dev_err(adapter->dev, "no buffer storage assigned\n");
1123 if (p == buffer)
1134 ret = p - buffer;
1165 * have a generic buffer for each possible HMC connection.
1212 struct ibmvmc_buffer *buffer;
1244 buffer = ibmvmc_get_valid_hmc_buffer(hmc->index);
1247 if (!buffer || !buffer->real_addr_local) {
1248 pr_warn("ibmvmc: sethmcid: no buffer available\n");
1252 /* Make sure buffer is NULL terminated before trying to print it */
1257 memcpy(buffer->real_addr_local, hmc->hmc_id, HMC_ID_LEN);
1259 rc = ibmvmc_send_open(buffer, hmc);
1406 * This message transfers a buffer from hypervisor ownership to management
1409 * buffer of size MTU (as established in the capabilities exchange).
1430 struct ibmvmc_buffer *buffer;
1461 buffer = &hmcs[hmc_index].buffer[buffer_id];
1463 if (buffer->real_addr_local || buffer->dma_addr_local) {
1472 buffer->real_addr_local = alloc_dma_buffer(to_vio_dev(adapter->dev),
1474 &buffer->dma_addr_local);
1476 if (!buffer->real_addr_local) {
1484 buffer->dma_addr_remote = be32_to_cpu(crq->var3.lioba);
1485 buffer->size = ibmvmc.max_mtu;
1486 buffer->owner = crq->var1.owner;
1487 buffer->free = 1;
1490 buffer->valid = 1;
1491 buffer->id = buffer_id;
1493 dev_dbg(adapter->dev, "add_buffer: successfully added a buffer:\n");
1494 dev_dbg(adapter->dev, " index: %d, session: %d, buffer: 0x%x, owner: %d\n",
1495 hmc_index, hmc_session, buffer_id, buffer->owner);
1497 (u32)buffer->dma_addr_local,
1498 (u32)buffer->dma_addr_remote);
1513 * This message requests an HMC buffer to be transferred from management
1517 * one inbound buffer to allow management application commands to flow to the
1519 * attempt to remove the management partition's last buffer.
1521 * The hypervisor is expected to manage buffer usage with the management
1528 * function. The hypervisor requests a reduction in buffer pool size.
1529 * 3. The management application acknowledges the reduction in buffer pool size.
1532 * 5. The management partition verifies it can remove the buffer. This is
1540 * The hypervisor requested that we pick an unused buffer, and return it.
1541 * Before sending the buffer back, we free any storage associated with the
1542 * buffer.
1547 struct ibmvmc_buffer *buffer;
1569 buffer = ibmvmc_get_free_hmc_buffer(adapter, hmc_index);
1570 if (!buffer) {
1571 dev_info(adapter->dev, "rem_buffer: no buffer to remove\n");
1579 buffer_id = buffer->id;
1581 if (buffer->valid)
1584 buffer->real_addr_local,
1585 buffer->dma_addr_local);
1587 memset(buffer, 0, sizeof(struct ibmvmc_buffer));
1590 dev_dbg(adapter->dev, "rem_buffer: removed buffer 0x%x.\n", buffer_id);
1600 struct ibmvmc_buffer *buffer;
1649 buffer = &hmc->buffer[buffer_id];
1651 if (buffer->valid == 0 || buffer->owner == VMC_BUF_OWNER_ALPHA) {
1653 buffer->valid, buffer->owner);
1661 buffer->dma_addr_remote,
1663 buffer->dma_addr_local);
1668 buffer->msg_len = msg_len;
1669 buffer->free = 0;
1670 buffer->owner = VMC_BUF_OWNER_ALPHA;
1686 dev_err(adapter->dev, "outbound buffer queue wrapped.\n");
1855 * Open message. When this message is received, the indicated buffer is
1886 &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",