Lines Matching refs:hmc

390 static void ibmvmc_free_hmc_buffer(struct ibmvmc_hmc *hmc,  in ibmvmc_free_hmc_buffer()  argument
395 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_free_hmc_buffer()
397 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_free_hmc_buffer()
478 static int ibmvmc_return_hmc(struct ibmvmc_hmc *hmc, bool release_readers) in ibmvmc_return_hmc() argument
486 if (!hmc || !hmc->adapter) in ibmvmc_return_hmc()
490 if (hmc->file_session) { in ibmvmc_return_hmc()
491 struct ibmvmc_file_session *session = hmc->file_session; in ibmvmc_return_hmc()
498 adapter = hmc->adapter; in ibmvmc_return_hmc()
501 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_return_hmc()
502 hmc->index = 0; in ibmvmc_return_hmc()
503 hmc->state = ibmhmc_state_free; in ibmvmc_return_hmc()
504 hmc->queue_head = 0; in ibmvmc_return_hmc()
505 hmc->queue_tail = 0; in ibmvmc_return_hmc()
506 buffer = hmc->buffer; in ibmvmc_return_hmc()
517 hmc->queue_outbound_msgs[i] = VMC_INVALID_BUFFER_ID; in ibmvmc_return_hmc()
520 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_return_hmc()
544 struct ibmvmc_hmc *hmc) in ibmvmc_send_open() argument
551 if (!hmc || !hmc->adapter) in ibmvmc_send_open()
554 adapter = hmc->adapter; in ibmvmc_send_open()
573 hmc->state = ibmhmc_state_opening; in ibmvmc_send_open()
579 crq_msg.hmc_session = hmc->session; in ibmvmc_send_open()
580 crq_msg.hmc_index = hmc->index; in ibmvmc_send_open()
605 static int ibmvmc_send_close(struct ibmvmc_hmc *hmc) in ibmvmc_send_close() argument
612 if (!hmc || !hmc->adapter) in ibmvmc_send_close()
615 adapter = hmc->adapter; in ibmvmc_send_close()
623 crq_msg.hmc_session = hmc->session; in ibmvmc_send_close()
624 crq_msg.hmc_index = hmc->index; in ibmvmc_send_close()
779 struct ibmvmc_hmc *hmc, int msg_len) in ibmvmc_send_msg() argument
801 crq_msg.hmc_session = hmc->session; in ibmvmc_send_msg()
802 crq_msg.hmc_index = hmc->index; in ibmvmc_send_msg()
856 struct ibmvmc_hmc *hmc; in ibmvmc_close() local
867 hmc = session->hmc; in ibmvmc_close()
868 if (hmc) { in ibmvmc_close()
869 if (!hmc->adapter) in ibmvmc_close()
873 dev_warn(hmc->adapter->dev, "close: state_failed\n"); in ibmvmc_close()
877 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_close()
878 if (hmc->state >= ibmhmc_state_opening) { in ibmvmc_close()
879 rc = ibmvmc_send_close(hmc); in ibmvmc_close()
881 dev_warn(hmc->adapter->dev, "close: send_close failed.\n"); in ibmvmc_close()
883 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_close()
907 struct ibmvmc_hmc *hmc; in ibmvmc_read() local
934 hmc = session->hmc; in ibmvmc_read()
935 if (!hmc) { in ibmvmc_read()
940 adapter = hmc->adapter; in ibmvmc_read()
949 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_read()
950 if (hmc->queue_tail != hmc->queue_head) in ibmvmc_read()
954 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_read()
973 buffer = &(hmc->buffer[hmc->queue_outbound_msgs[hmc->queue_tail]]); in ibmvmc_read()
974 hmc->queue_tail++; in ibmvmc_read()
975 if (hmc->queue_tail == ibmvmc_max_buf_pool_size) in ibmvmc_read()
976 hmc->queue_tail = 0; in ibmvmc_read()
977 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_read()
982 ibmvmc_free_hmc_buffer(hmc, buffer); in ibmvmc_read()
1008 struct ibmvmc_hmc *hmc; in ibmvmc_poll() local
1015 hmc = session->hmc; in ibmvmc_poll()
1016 if (!hmc) in ibmvmc_poll()
1021 if (hmc->queue_head != hmc->queue_tail) in ibmvmc_poll()
1046 struct ibmvmc_hmc *hmc; in ibmvmc_write() local
1058 hmc = session->hmc; in ibmvmc_write()
1059 if (!hmc) in ibmvmc_write()
1062 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_write()
1063 if (hmc->state == ibmhmc_state_free) { in ibmvmc_write()
1069 adapter = hmc->adapter; in ibmvmc_write()
1083 if (hmc->state == ibmhmc_state_opening) { in ibmvmc_write()
1091 if (hmc->state != ibmhmc_state_ready) { in ibmvmc_write()
1096 vmc_buffer = ibmvmc_get_valid_hmc_buffer(hmc->index); in ibmvmc_write()
1133 ibmvmc_send_msg(adapter, vmc_buffer, hmc, count); in ibmvmc_write()
1136 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_write()
1151 struct ibmvmc_hmc *hmc; in ibmvmc_setup_hmc() local
1178 hmc = ibmvmc_get_free_hmc(); in ibmvmc_setup_hmc()
1179 if (!hmc) { in ibmvmc_setup_hmc()
1184 hmc->session = hmc->session + 1; in ibmvmc_setup_hmc()
1185 if (hmc->session == 0xff) in ibmvmc_setup_hmc()
1186 hmc->session = 1; in ibmvmc_setup_hmc()
1188 session->hmc = hmc; in ibmvmc_setup_hmc()
1189 hmc->adapter = &ibmvmc_adapter; in ibmvmc_setup_hmc()
1190 hmc->file_session = session; in ibmvmc_setup_hmc()
1211 struct ibmvmc_hmc *hmc; in ibmvmc_ioctl_sethmcid() local
1219 hmc = session->hmc; in ibmvmc_ioctl_sethmcid()
1220 if (!hmc) { in ibmvmc_ioctl_sethmcid()
1225 hmc = session->hmc; in ibmvmc_ioctl_sethmcid()
1226 if (!hmc) { in ibmvmc_ioctl_sethmcid()
1232 if (hmc->state != ibmhmc_state_initial) { in ibmvmc_ioctl_sethmcid()
1234 hmc->state); in ibmvmc_ioctl_sethmcid()
1238 bytes = copy_from_user(hmc->hmc_id, new_hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1243 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_ioctl_sethmcid()
1244 buffer = ibmvmc_get_valid_hmc_buffer(hmc->index); in ibmvmc_ioctl_sethmcid()
1245 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_ioctl_sethmcid()
1254 strncpy(print_buffer, hmc->hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1257 memcpy(buffer->real_addr_local, hmc->hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1259 rc = ibmvmc_send_open(buffer, hmc); in ibmvmc_ioctl_sethmcid()
1601 struct ibmvmc_hmc *hmc; in ibmvmc_recv_msg() local
1638 hmc = &hmcs[hmc_index]; in ibmvmc_recv_msg()
1639 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_recv_msg()
1641 if (hmc->state == ibmhmc_state_free) { in ibmvmc_recv_msg()
1643 hmc->state); in ibmvmc_recv_msg()
1645 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1649 buffer = &hmc->buffer[buffer_id]; in ibmvmc_recv_msg()
1654 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1667 (unsigned int)hmc->queue_head, (unsigned int)hmc_index); in ibmvmc_recv_msg()
1675 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1680 hmc->queue_outbound_msgs[hmc->queue_head] = buffer_id; in ibmvmc_recv_msg()
1681 hmc->queue_head++; in ibmvmc_recv_msg()
1682 if (hmc->queue_head == ibmvmc_max_buf_pool_size) in ibmvmc_recv_msg()
1683 hmc->queue_head = 0; in ibmvmc_recv_msg()
1685 if (hmc->queue_head == hmc->queue_tail) in ibmvmc_recv_msg()
1688 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()