From 2581c71afc2bc0806d7e52b8ab27c632e30dd2c2 Mon Sep 17 00:00:00 2001
From: foreman
Date: Thu, 10 Oct 2019 17:38:15 -0400
Subject: [PATCH] P4 to Git Change 2011927 by gandryey@gera-win10 on 2019/10/10
17:24:46
SWDEV-79445 - OCL generic changes and code clean-up
- Restore xnack support for Navi1x HW(requires COMGR support). Only Navi2x should have a fix in HW
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldefs.hpp#64 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#173 edit
[ROCm/clr commit: cac8628fe2a744130d0c833910c851c3d3f3c94a]
---
projects/clr/rocclr/runtime/device/pal/paldefs.hpp | 10 +++++-----
projects/clr/rocclr/runtime/device/pal/paldevice.cpp | 3 ++-
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/projects/clr/rocclr/runtime/device/pal/paldefs.hpp b/projects/clr/rocclr/runtime/device/pal/paldefs.hpp
index eb0a462bad..ee63f10c6b 100644
--- a/projects/clr/rocclr/runtime/device/pal/paldefs.hpp
+++ b/projects/clr/rocclr/runtime/device/pal/paldefs.hpp
@@ -176,21 +176,21 @@ static constexpr AMDDeviceInfo Gfx9PlusSubDeviceInfo[] = {
/* Navi10_A0 */ {"gfx1010", "gfx1010", 32, 256, 32, 1010, 1010, false},
/* Navi10_A0 XNACK */ UnknownDevice,
/* Navi10 */ {"gfx1010", "gfx1010", 32, 256, 32, 1010, 1010, false},
- /* Navi10 XNACK */ UnknownDevice,
+ /* Navi10 XNACK */ {"gfx1010", "gfx1010", 32, 256, 32, 1010, 1010, true},
/* Navi10Lite */ UnknownDevice,
/* Navi10LiteXNACK */ UnknownDevice,
/* Navi12 */ {"gfx1011", "gfx1011", 32, 256, 32, 1011, 1011, false},
- /* Navi12 XNACK */ UnknownDevice,
+ /* Navi12 XNACK */ {"gfx1011", "gfx1011", 32, 256, 32, 1011, 1011, true},
/* Navi12Lite */ UnknownDevice,
/* Navi12LiteXNACK */ UnknownDevice,
/* Navi14 */ {"gfx1012", "gfx1012", 32, 256, 32, 1012, 1012, false},
- /* Navi14 XNACK */ UnknownDevice,
+ /* Navi14 */ {"gfx1012", "gfx1012", 32, 256, 32, 1012, 1012, true},
/* UnknownDevice3 */ UnknownDevice,
/* UnknownDevice3 XNACK */ UnknownDevice,
/* UnknownDevice4 */ UnknownDevice,
- /* UnknownDevice4XNACK */ UnknownDevice,
+ /* UnknownDevice4 XNACK */ UnknownDevice,
/* UnknownDevice5 */ UnknownDevice,
- /* UnknownDevice5XNACK */ UnknownDevice,
+ /* UnknownDevice5 XNACK */ UnknownDevice,
/* UnknownDevice2 */ UnknownDevice,
/* UnknownDevice2XNACK */ UnknownDevice,
/* UnknownDevice7 */ UnknownDevice,
diff --git a/projects/clr/rocclr/runtime/device/pal/paldevice.cpp b/projects/clr/rocclr/runtime/device/pal/paldevice.cpp
index c0fc3b2f3f..f9032327b0 100644
--- a/projects/clr/rocclr/runtime/device/pal/paldevice.cpp
+++ b/projects/clr/rocclr/runtime/device/pal/paldevice.cpp
@@ -905,7 +905,8 @@ bool Device::create(Pal::IDevice* device) {
asicRevision_ = properties().revision;
// XNACK flag should be set for PageMigration | IOMMUv2 Support
- uint isXNACKSupported = (ipLevel_ < Pal::GfxIpLevel::GfxIp10_1) &&
+ // Note: Navi2x should have a fix in HW
+ uint isXNACKSupported = (ipLevel_ <= Pal::GfxIpLevel::GfxIp10_1) &&
(static_cast(properties_.gpuMemoryProperties.flags.pageMigrationEnabled ||
properties_.gpuMemoryProperties.flags.iommuv2Support));
uint subtarget = isXNACKSupported;