| 858 | } |
| 859 | |
| 860 | static int |
| 861 | edma_init_service(struct event_dma_adapter *adapter, uint8_t id) |
| 862 | { |
| 863 | struct rte_event_dma_adapter_conf adapter_conf; |
| 864 | struct rte_service_spec service; |
| 865 | uint32_t impl_rel; |
| 866 | int ret; |
| 867 | |
| 868 | if (adapter->service_initialized) |
| 869 | return 0; |
| 870 | |
| 871 | memset(&service, 0, sizeof(service)); |
| 872 | snprintf(service.name, DMA_ADAPTER_NAME_LEN, "rte_event_dma_adapter_%d", id); |
| 873 | service.socket_id = adapter->socket_id; |
| 874 | service.callback = edma_service_func; |
| 875 | service.callback_userdata = adapter; |
| 876 | |
| 877 | /* Service function handles locking for queue add/del updates */ |
| 878 | service.capabilities = RTE_SERVICE_CAP_MT_SAFE; |
| 879 | ret = rte_service_component_register(&service, &adapter->service_id); |
| 880 | if (ret) { |
| 881 | RTE_EDEV_LOG_ERR("failed to register service %s err = %" PRId32, service.name, ret); |
| 882 | return ret; |
| 883 | } |
| 884 | |
| 885 | ret = adapter->conf_cb(id, adapter->eventdev_id, &adapter_conf, adapter->conf_arg); |
| 886 | if (ret) { |
| 887 | RTE_EDEV_LOG_ERR("configuration callback failed err = %" PRId32, ret); |
| 888 | return ret; |
| 889 | } |
| 890 | |
| 891 | adapter->max_nb = adapter_conf.max_nb; |
| 892 | adapter->event_port_id = adapter_conf.event_port_id; |
| 893 | |
| 894 | if (rte_event_port_attr_get(adapter->eventdev_id, adapter->event_port_id, |
| 895 | RTE_EVENT_PORT_ATTR_IMPLICIT_RELEASE_DISABLE, &impl_rel)) { |
| 896 | RTE_EDEV_LOG_ERR("Failed to get port info for eventdev %" PRId32, |
| 897 | adapter->eventdev_id); |
| 898 | edma_circular_buffer_free(&adapter->ebuf); |
| 899 | rte_free(adapter); |
| 900 | return -EINVAL; |
| 901 | } |
| 902 | |
| 903 | adapter->implicit_release_disabled = (uint8_t)impl_rel; |
| 904 | adapter->service_initialized = 1; |
| 905 | |
| 906 | return ret; |
| 907 | } |
| 908 | |
| 909 | static void |
| 910 | edma_update_vchanq_info(struct event_dma_adapter *adapter, struct dma_device_info *dev_info, |
no test coverage detected