From 546ce7ec2d8361aec33517ca2a2436efee88051e Mon Sep 17 00:00:00 2001 From: foreman Date: Tue, 10 Feb 2015 15:14:56 -0500 Subject: [PATCH] P4 to Git Change 1120702 by skudchad@skudchad_test_win_opencl2 on 2015/02/10 15:02:35 EPR #403782 - IOMMU2/SVM Basic changes to enable finegrainsystem. - OpenCL runtime changes for enabling Fine Grain System on Carrizo - Check for SVMPointer while unmap, if so skip unmap ReviewBoardURL = http://ocltc.amd.com/reviews/r/6844/diff/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#494 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#350 edit --- rocclr/runtime/device/gpu/gpudevice.cpp | 5 +++-- rocclr/runtime/device/gpu/gpuvirtual.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rocclr/runtime/device/gpu/gpudevice.cpp b/rocclr/runtime/device/gpu/gpudevice.cpp index 107a284c60..00044873fc 100644 --- a/rocclr/runtime/device/gpu/gpudevice.cpp +++ b/rocclr/runtime/device/gpu/gpudevice.cpp @@ -748,12 +748,13 @@ void Device::fillDeviceInfo( if (settings().oclVersion_ >= OpenCL20) { info_.svmCapabilities_ = - - calAttr.target == CAL_TARGET_CARRIZO ? CL_DEVICE_SVM_COARSE_GRAIN_BUFFER : (CL_DEVICE_SVM_COARSE_GRAIN_BUFFER | CL_DEVICE_SVM_FINE_GRAIN_BUFFER); if (settings().svmAtomics_) { info_.svmCapabilities_ |= CL_DEVICE_SVM_ATOMICS; } + if (settings().svmFineGrainSystem_) { + info_.svmCapabilities_ |= CL_DEVICE_SVM_FINE_GRAIN_SYSTEM; + } // OpenCL2.0 device info fields info_.maxWriteImageArgs_ = MaxReadWriteImage; //!< For compatibility info_.maxReadWriteImageArgs_ = MaxReadWriteImage; diff --git a/rocclr/runtime/device/gpu/gpuvirtual.cpp b/rocclr/runtime/device/gpu/gpuvirtual.cpp index 92fb2ec7ba..1298872daa 100644 --- a/rocclr/runtime/device/gpu/gpuvirtual.cpp +++ b/rocclr/runtime/device/gpu/gpuvirtual.cpp @@ -1187,7 +1187,7 @@ VirtualGPU::submitUnmapMemory(amd::UnmapMemoryCommand& vcmd) // We used host memory if ((owner->getHostMem() != NULL) && memory->isDirectMap()) { - if (memory->isUnmapWrite()) { + if (memory->isUnmapWrite() && !owner->usesSvmPointer()) { // Target is the backing store, so sync owner->signalWrite(NULL); memory->syncCacheFromHost(*this);