From ede29afcff4d6e970edcd8fe9515bdfd57a1cb34 Mon Sep 17 00:00:00 2001 From: Julia Zhang Date: Sat, 21 Dec 2024 00:17:00 +0800 Subject: [PATCH] amd/ds: implement amdgpu_ctx_create Implement amdgpu_ctx_create to create a context to handle the main process of querying performance counter. Change-Id: Ic6f741436886bdc3ee3023b52d0f582ce7d2b6b6 --- src/amd/ds/amd_pps_perf.cc | 18 ++++++++++++++++++ src/amd/ds/amd_pps_perf.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/amd/ds/amd_pps_perf.cc b/src/amd/ds/amd_pps_perf.cc index 60945c5ead6..2e18461a500 100644 --- a/src/amd/ds/amd_pps_perf.cc +++ b/src/amd/ds/amd_pps_perf.cc @@ -46,11 +46,20 @@ bool AMDPerf::amd_perf_init(int drm_fd, bool is_virtio) if (!ret) return false; + ret = amdgpu_ctx_create(); + if (ret) + goto error_ctx_create; + return true; + +error_ctx_create: + amdgpu_device_destroy(); + return false; } void AMDPerf::amd_perf_destroy() { + amdgpu_ctx_destroy(); amdgpu_device_destroy(); } @@ -71,3 +80,12 @@ void AMDPerf::amdgpu_device_destroy() dev = NULL; } +bool AMDPerf::amdgpu_ctx_create() +{ + return ac_drm_cs_ctx_create2(dev, AMDGPU_CTX_PRIORITY_NORMAL, &ctx); +} + +void AMDPerf::amdgpu_ctx_destroy() +{ + ac_drm_cs_ctx_free(dev, ctx); +} diff --git a/src/amd/ds/amd_pps_perf.h b/src/amd/ds/amd_pps_perf.h index d4ae0fa392d..aef3f323079 100644 --- a/src/amd/ds/amd_pps_perf.h +++ b/src/amd/ds/amd_pps_perf.h @@ -17,9 +17,12 @@ private: ac_drm_device *dev; struct radeon_info info; uint32_t drm_major, drm_minor; + uint32_t ctx; bool amdgpu_device_create(int drm_fd); void amdgpu_device_destroy(); + bool amdgpu_ctx_create(); + void amdgpu_ctx_destroy(); public: AMDPerf();