[PATCH v3 2/4] lib/amdgpu: add func to read the userqueue support

Sunil Khatri sunil.khatri at amd.com
Wed Apr 30 06:28:33 UTC 2025


The function asic_userq_readiness read the userq_ip_mask
value set by the kernel which says which ip supports
userqueues on this asic.

Cc: Prosyak, Vitaly <Vitaly.Prosyak at amd.com>
Cc: Jesse Zhang <jesse.zhang at amd.com>
Signed-off-by: Sunil Khatri <sunil.khatri at amd.com>
---
 lib/amdgpu/amd_ip_blocks.c | 17 +++++++++++++++++
 lib/amdgpu/amd_ip_blocks.h |  2 ++
 2 files changed, 19 insertions(+)

diff --git a/lib/amdgpu/amd_ip_blocks.c b/lib/amdgpu/amd_ip_blocks.c
index d6764194d..b8227ba2b 100644
--- a/lib/amdgpu/amd_ip_blocks.c
+++ b/lib/amdgpu/amd_ip_blocks.c
@@ -976,6 +976,23 @@ is_rings_available(amdgpu_device_handle device_handle, uint32_t mask,
 	return  hw_ip_info.available_rings & mask;
 }
 
+void asic_userq_readiness(amdgpu_device_handle device_handle, bool arr[AMD_IP_MAX])
+{
+	int r, i;
+	enum amd_ip_block_type ip;
+	struct drm_amdgpu_info_device dev_info = {0};
+
+	r = amdgpu_query_info(device_handle, AMDGPU_INFO_DEV_INFO,
+			      sizeof(dev_info), &dev_info);
+	igt_assert_eq(r, 0);
+
+	if (!dev_info.userq_ip_mask)
+		return;
+
+	for (i = 0, ip = AMD_IP_GFX; ip < AMD_IP_MAX; ip++)
+		arr[i++] = dev_info.userq_ip_mask & (1 << ip);
+}
+
 /**
  * asic_rings_readness:
  * @device handle: handle to driver internal information
diff --git a/lib/amdgpu/amd_ip_blocks.h b/lib/amdgpu/amd_ip_blocks.h
index 7d48f9107..3c2ecd1ba 100644
--- a/lib/amdgpu/amd_ip_blocks.h
+++ b/lib/amdgpu/amd_ip_blocks.h
@@ -268,6 +268,8 @@ amdgpu_open_devices(bool open_render_node, int max_cards_supported, int drm_amdg
 void
 asic_rings_readness(amdgpu_device_handle device_handle, uint32_t mask, bool arr[AMD_IP_MAX]);
 
+void asic_userq_readiness(amdgpu_device_handle device_handle, bool arr[AMD_IP_MAX]);
+
 bool
 is_reset_enable(enum amd_ip_block_type ip_type, uint32_t reset_type, const struct pci_addr *pci);
 
-- 
2.43.0



More information about the igt-dev mailing list