diff --git a/projects/clr/rocclr/runtime/device/pal/palkernel.cpp b/projects/clr/rocclr/runtime/device/pal/palkernel.cpp index d0749c55f3..bb4ed8d682 100644 --- a/projects/clr/rocclr/runtime/device/pal/palkernel.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palkernel.cpp @@ -421,7 +421,13 @@ bool LightningKernel::init(amd::hsa::loader::Symbol* symbol) { uint64_t kernel_object = gpuAqlCode(); VirtualGPU* gpu = codeSegGpu.dev().xferQueue(); - codeSegGpu.writeRawData(*gpu, offset, 8, &kernel_object, true); + const struct RuntimeHandle runtime_handle = { + gpuAqlCode(), + spillSegSize(), + ldsSize() + }; + + codeSegGpu.writeRawData(*gpu, offset, sizeof(runtime_handle), &runtime_handle, true); } // Copy wavefront size diff --git a/projects/clr/rocclr/runtime/device/rocm/rockernel.cpp b/projects/clr/rocclr/runtime/device/rocm/rockernel.cpp index 514ec20913..7c843fce2c 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rockernel.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rockernel.cpp @@ -85,9 +85,15 @@ bool LightningKernel::init() { HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, &variable_address); } + if (hsaStatus == HSA_STATUS_SUCCESS) { + const struct RuntimeHandle runtime_handle = { + kernelCodeHandle_, + workitemPrivateSegmentByteSize(), + WorkgroupGroupSegmentByteSize() + }; hsaStatus = hsa_memory_copy(reinterpret_cast(variable_address), - &kernelCodeHandle_, variable_size); + &runtime_handle, variable_size); } if (hsaStatus != HSA_STATUS_SUCCESS) {