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()
853 struct ibmvmc_hmc *hmc; in ibmvmc_close() local
864 hmc = session->hmc; in ibmvmc_close()
865 if (hmc) { in ibmvmc_close()
866 if (!hmc->adapter) in ibmvmc_close()
870 dev_warn(hmc->adapter->dev, "close: state_failed\n"); in ibmvmc_close()
874 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_close()
875 if (hmc->state >= ibmhmc_state_opening) { in ibmvmc_close()
876 rc = ibmvmc_send_close(hmc); in ibmvmc_close()
878 dev_warn(hmc->adapter->dev, "close: send_close failed.\n"); in ibmvmc_close()
880 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_close()
904 struct ibmvmc_hmc *hmc; in ibmvmc_read() local
931 hmc = session->hmc; in ibmvmc_read()
932 if (!hmc) { in ibmvmc_read()
937 adapter = hmc->adapter; in ibmvmc_read()
946 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_read()
947 if (hmc->queue_tail != hmc->queue_head) in ibmvmc_read()
951 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_read()
970 buffer = &(hmc->buffer[hmc->queue_outbound_msgs[hmc->queue_tail]]); in ibmvmc_read()
971 hmc->queue_tail++; in ibmvmc_read()
972 if (hmc->queue_tail == ibmvmc_max_buf_pool_size) in ibmvmc_read()
973 hmc->queue_tail = 0; in ibmvmc_read()
974 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_read()
979 ibmvmc_free_hmc_buffer(hmc, buffer); in ibmvmc_read()
1005 struct ibmvmc_hmc *hmc; in ibmvmc_poll() local
1012 hmc = session->hmc; in ibmvmc_poll()
1013 if (!hmc) in ibmvmc_poll()
1018 if (hmc->queue_head != hmc->queue_tail) in ibmvmc_poll()
1042 struct ibmvmc_hmc *hmc; in ibmvmc_write() local
1054 hmc = session->hmc; in ibmvmc_write()
1055 if (!hmc) in ibmvmc_write()
1058 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_write()
1059 if (hmc->state == ibmhmc_state_free) { in ibmvmc_write()
1065 adapter = hmc->adapter; in ibmvmc_write()
1079 if (hmc->state == ibmhmc_state_opening) { in ibmvmc_write()
1087 if (hmc->state != ibmhmc_state_ready) { in ibmvmc_write()
1092 vmc_buffer = ibmvmc_get_valid_hmc_buffer(hmc->index); in ibmvmc_write()
1128 ibmvmc_send_msg(adapter, vmc_buffer, hmc, count); in ibmvmc_write()
1131 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_write()
1146 struct ibmvmc_hmc *hmc; in ibmvmc_setup_hmc() local
1173 hmc = ibmvmc_get_free_hmc(); in ibmvmc_setup_hmc()
1174 if (!hmc) { in ibmvmc_setup_hmc()
1179 hmc->session = hmc->session + 1; in ibmvmc_setup_hmc()
1180 if (hmc->session == 0xff) in ibmvmc_setup_hmc()
1181 hmc->session = 1; in ibmvmc_setup_hmc()
1183 session->hmc = hmc; in ibmvmc_setup_hmc()
1184 hmc->adapter = &ibmvmc_adapter; in ibmvmc_setup_hmc()
1185 hmc->file_session = session; in ibmvmc_setup_hmc()
1206 struct ibmvmc_hmc *hmc; in ibmvmc_ioctl_sethmcid() local
1214 hmc = session->hmc; in ibmvmc_ioctl_sethmcid()
1215 if (!hmc) { in ibmvmc_ioctl_sethmcid()
1220 hmc = session->hmc; in ibmvmc_ioctl_sethmcid()
1221 if (!hmc) { in ibmvmc_ioctl_sethmcid()
1227 if (hmc->state != ibmhmc_state_initial) { in ibmvmc_ioctl_sethmcid()
1229 hmc->state); in ibmvmc_ioctl_sethmcid()
1233 bytes = copy_from_user(hmc->hmc_id, new_hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1238 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_ioctl_sethmcid()
1239 buffer = ibmvmc_get_valid_hmc_buffer(hmc->index); in ibmvmc_ioctl_sethmcid()
1240 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_ioctl_sethmcid()
1249 strncpy(print_buffer, hmc->hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1252 memcpy(buffer->real_addr_local, hmc->hmc_id, HMC_ID_LEN); in ibmvmc_ioctl_sethmcid()
1254 rc = ibmvmc_send_open(buffer, hmc); in ibmvmc_ioctl_sethmcid()
1596 struct ibmvmc_hmc *hmc; in ibmvmc_recv_msg() local
1633 hmc = &hmcs[hmc_index]; in ibmvmc_recv_msg()
1634 spin_lock_irqsave(&hmc->lock, flags); in ibmvmc_recv_msg()
1636 if (hmc->state == ibmhmc_state_free) { in ibmvmc_recv_msg()
1638 hmc->state); in ibmvmc_recv_msg()
1640 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1644 buffer = &hmc->buffer[buffer_id]; in ibmvmc_recv_msg()
1649 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1662 (unsigned int)hmc->queue_head, (unsigned int)hmc_index); in ibmvmc_recv_msg()
1670 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()
1675 hmc->queue_outbound_msgs[hmc->queue_head] = buffer_id; in ibmvmc_recv_msg()
1676 hmc->queue_head++; in ibmvmc_recv_msg()
1677 if (hmc->queue_head == ibmvmc_max_buf_pool_size) in ibmvmc_recv_msg()
1678 hmc->queue_head = 0; in ibmvmc_recv_msg()
1680 if (hmc->queue_head == hmc->queue_tail) in ibmvmc_recv_msg()
1683 spin_unlock_irqrestore(&hmc->lock, flags); in ibmvmc_recv_msg()