diff --git a/projects/clr/rocclr/runtime/device/device.hpp b/projects/clr/rocclr/runtime/device/device.hpp index 8d58fc5a32..c3f1cb2cd4 100644 --- a/projects/clr/rocclr/runtime/device/device.hpp +++ b/projects/clr/rocclr/runtime/device/device.hpp @@ -575,6 +575,10 @@ struct Info : public amd::EmbeddedObject { size_t globalVariablePreferredTotalSize_; //! Driver store location char driverStore_[200]; + //! Device ID + uint32_t pcieDeviceId_; + //! Revision ID + uint32_t pcieRevisionId_; }; //! Device settings diff --git a/projects/clr/rocclr/runtime/device/rocm/pro/prodevice.hpp b/projects/clr/rocclr/runtime/device/rocm/pro/prodevice.hpp index 8e0b3370ce..a4a18fec4f 100644 --- a/projects/clr/rocclr/runtime/device/rocm/pro/prodevice.hpp +++ b/projects/clr/rocclr/runtime/device/rocm/pro/prodevice.hpp @@ -35,6 +35,11 @@ public: virtual void* AllocDmaBuffer( hsa_agent_t agent, size_t size, void** host_ptr) const override; virtual void FreeDmaBuffer(void* ptr) const override; + virtual void GetAsicIdAndRevisionId(uint32_t* asic_id, uint32_t* rev_id) const override + { + *asic_id = gpu_info_.asic_id; + *rev_id = gpu_info_.pci_rev_id; + } private: static void* lib_drm_handle_; diff --git a/projects/clr/rocclr/runtime/device/rocm/pro/prodriver.hpp b/projects/clr/rocclr/runtime/device/rocm/pro/prodriver.hpp index 85feafbb9e..593e4e3922 100644 --- a/projects/clr/rocclr/runtime/device/rocm/pro/prodriver.hpp +++ b/projects/clr/rocclr/runtime/device/rocm/pro/prodriver.hpp @@ -22,6 +22,7 @@ public: virtual void* AllocDmaBuffer(hsa_agent_t agent, size_t size, void** host_ptr) const = 0; virtual void FreeDmaBuffer(void* ptr) const = 0; + virtual void GetAsicIdAndRevisionId(uint32_t* asic_id, uint32_t* rev_id) const = 0; IProDevice() {} virtual ~IProDevice() {} diff --git a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp index 673d217c5e..1926f5323f 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocdevice.cpp @@ -568,6 +568,7 @@ bool Device::create() { if (pro_device_ != nullptr) { pro_ena_ = true; settings_->enableExtension(ClAMDLiquidFlash); + pro_device_->GetAsicIdAndRevisionId(&info_.pcieDeviceId_, &info_.pcieRevisionId_); } #endif