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