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();