P4 to Git Change 1603601 by jatang@jatang-opencl-hsa-stg5 on 2018/09/10 11:55:05
SWDEV-126897 - Fix segfault in HSAIL/ROCm path. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#68 edit
This commit is contained in:
@@ -2059,23 +2059,28 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case amd::KernelParameterDescriptor::HiddenDefaultQueue: {
|
case amd::KernelParameterDescriptor::HiddenDefaultQueue: {
|
||||||
|
uint64_t vqVA = 0;
|
||||||
amd::DeviceQueue* defQueue = kernel.program().context().defDeviceQueue(dev());
|
amd::DeviceQueue* defQueue = kernel.program().context().defDeviceQueue(dev());
|
||||||
|
if (nullptr != defQueue) {
|
||||||
if (!createVirtualQueue(defQueue->size()) || !createSchedulerParam()) {
|
if (!createVirtualQueue(defQueue->size()) || !createSchedulerParam()) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
gpuKernel.setDynamicParallelFlag(true);
|
||||||
|
vqVA = getVQVirtualAddress();
|
||||||
}
|
}
|
||||||
gpuKernel.setDynamicParallelFlag(true);
|
|
||||||
uint64_t vqVA = getVQVirtualAddress();
|
|
||||||
WriteAqlArgAt(const_cast<address>(parameters), &vqVA, it.size_, it.offset_);
|
WriteAqlArgAt(const_cast<address>(parameters), &vqVA, it.size_, it.offset_);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case amd::KernelParameterDescriptor::HiddenCompletionAction: {
|
case amd::KernelParameterDescriptor::HiddenCompletionAction: {
|
||||||
Memory* schedulerMem = dev().getRocMemory(schedulerParam_);
|
uint64_t spVA = 0;
|
||||||
AmdAqlWrap* wrap = reinterpret_cast<AmdAqlWrap*>(reinterpret_cast<uint64_t>(schedulerParam_->getHostMem()) + sizeof(SchedulerParam));
|
if (nullptr != schedulerParam_) {
|
||||||
memset(wrap, 0, sizeof(AmdAqlWrap));
|
Memory* schedulerMem = dev().getRocMemory(schedulerParam_);
|
||||||
wrap->state = AQL_WRAP_DONE;
|
AmdAqlWrap* wrap = reinterpret_cast<AmdAqlWrap*>(reinterpret_cast<uint64_t>(schedulerParam_->getHostMem()) + sizeof(SchedulerParam));
|
||||||
|
memset(wrap, 0, sizeof(AmdAqlWrap));
|
||||||
|
wrap->state = AQL_WRAP_DONE;
|
||||||
|
|
||||||
uint64_t spVA = reinterpret_cast<uint64_t>(schedulerMem->getDeviceMemory()) + sizeof(SchedulerParam);
|
spVA = reinterpret_cast<uint64_t>(schedulerMem->getDeviceMemory()) + sizeof(SchedulerParam);
|
||||||
|
}
|
||||||
WriteAqlArgAt(const_cast<address>(parameters), &spVA, it.size_, it.offset_);
|
WriteAqlArgAt(const_cast<address>(parameters), &spVA, it.size_, it.offset_);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user