Commit e52606d2 authored by Ofir Bitton's avatar Ofir Bitton Committed by Oded Gabbay

habanalabs: support fetching first available user CQ

User must be aware of the available CQs when it needs to use them.
Signed-off-by: default avatarOfir Bitton <obitton@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent 5dbd7b4d
...@@ -411,6 +411,7 @@ struct hl_mmu_properties { ...@@ -411,6 +411,7 @@ struct hl_mmu_properties {
* @first_available_user_mon: first monitor available for the user * @first_available_user_mon: first monitor available for the user
* @first_available_user_msix_interrupt: first available msix interrupt * @first_available_user_msix_interrupt: first available msix interrupt
* reserved for the user * reserved for the user
* @first_available_cq: first available CQ for the user.
* @tpc_enabled_mask: which TPCs are enabled. * @tpc_enabled_mask: which TPCs are enabled.
* @completion_queues_count: number of completion queues. * @completion_queues_count: number of completion queues.
* @fw_security_disabled: true if security measures are disabled in firmware, * @fw_security_disabled: true if security measures are disabled in firmware,
...@@ -475,6 +476,7 @@ struct asic_fixed_properties { ...@@ -475,6 +476,7 @@ struct asic_fixed_properties {
u16 first_available_user_sob[HL_MAX_DCORES]; u16 first_available_user_sob[HL_MAX_DCORES];
u16 first_available_user_mon[HL_MAX_DCORES]; u16 first_available_user_mon[HL_MAX_DCORES];
u16 first_available_user_msix_interrupt; u16 first_available_user_msix_interrupt;
u16 first_available_cq[HL_MAX_DCORES];
u8 tpc_enabled_mask; u8 tpc_enabled_mask;
u8 completion_queues_count; u8 completion_queues_count;
u8 fw_security_disabled; u8 fw_security_disabled;
......
...@@ -397,7 +397,8 @@ static int sync_manager_info(struct hl_fpriv *hpriv, struct hl_info_args *args) ...@@ -397,7 +397,8 @@ static int sync_manager_info(struct hl_fpriv *hpriv, struct hl_info_args *args)
prop->first_available_user_sob[args->dcore_id]; prop->first_available_user_sob[args->dcore_id];
sm_info.first_available_monitor = sm_info.first_available_monitor =
prop->first_available_user_mon[args->dcore_id]; prop->first_available_user_mon[args->dcore_id];
sm_info.first_available_cq =
prop->first_available_cq[args->dcore_id];
return copy_to_user(out, &sm_info, min_t(size_t, (size_t) max_size, return copy_to_user(out, &sm_info, min_t(size_t, (size_t) max_size,
sizeof(sm_info))) ? -EFAULT : 0; sizeof(sm_info))) ? -EFAULT : 0;
......
...@@ -529,6 +529,9 @@ static int gaudi_get_fixed_properties(struct hl_device *hdev) ...@@ -529,6 +529,9 @@ static int gaudi_get_fixed_properties(struct hl_device *hdev)
prop->first_available_user_msix_interrupt = USHRT_MAX; prop->first_available_user_msix_interrupt = USHRT_MAX;
for (i = 0 ; i < HL_MAX_DCORES ; i++)
prop->first_available_cq[i] = USHRT_MAX;
/* disable fw security for now, set it in a later stage */ /* disable fw security for now, set it in a later stage */
prop->fw_security_disabled = true; prop->fw_security_disabled = true;
prop->fw_security_status_valid = false; prop->fw_security_status_valid = false;
......
...@@ -457,6 +457,9 @@ int goya_get_fixed_properties(struct hl_device *hdev) ...@@ -457,6 +457,9 @@ int goya_get_fixed_properties(struct hl_device *hdev)
prop->first_available_user_msix_interrupt = USHRT_MAX; prop->first_available_user_msix_interrupt = USHRT_MAX;
for (i = 0 ; i < HL_MAX_DCORES ; i++)
prop->first_available_cq[i] = USHRT_MAX;
/* disable fw security for now, set it in a later stage */ /* disable fw security for now, set it in a later stage */
prop->fw_security_disabled = true; prop->fw_security_disabled = true;
prop->fw_security_status_valid = false; prop->fw_security_status_valid = false;
......
...@@ -414,10 +414,13 @@ struct hl_pll_frequency_info { ...@@ -414,10 +414,13 @@ struct hl_pll_frequency_info {
* struct hl_info_sync_manager - sync manager information * struct hl_info_sync_manager - sync manager information
* @first_available_sync_object: first available sob * @first_available_sync_object: first available sob
* @first_available_monitor: first available monitor * @first_available_monitor: first available monitor
* @first_available_cq: first available cq
*/ */
struct hl_info_sync_manager { struct hl_info_sync_manager {
__u32 first_available_sync_object; __u32 first_available_sync_object;
__u32 first_available_monitor; __u32 first_available_monitor;
__u32 first_available_cq;
__u32 reserved;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment