Squash merge of cfreehil/amd-temp-gfx90a onto amd-staging.

Includes some workarounds and HMM.
Conflicts:
	opensrc/hsa-runtime/core/runtime/amd_topology.cpp
	opensrc/hsa-runtime/core/util/flag.h

Change-Id: I22976f07964a43dbb228a6231777dbd599112b8d
Dieser Commit ist enthalten in:
Sean Keely
2021-04-01 20:51:51 -05:00
Ursprung 4197461b7f
Commit 7333c77e22
30 geänderte Dateien mit 1102 neuen und 154 gelöschten Zeilen
+40
Datei anzeigen
@@ -56,6 +56,13 @@ class Flag {
public:
enum SDMA_OVERRIDE { SDMA_DISABLE, SDMA_ENABLE, SDMA_DEFAULT };
// The values are meaningful and chosen to satisfy the thunk API.
enum XNACK_REQUEST { XNACK_DISABLE = 0, XNACK_ENABLE = 1, XNACK_UNCHANGED = 2 };
static_assert(XNACK_DISABLE == 0, "XNACK_REQUEST enum values improperly changed.");
static_assert(XNACK_ENABLE == 1, "XNACK_REQUEST enum values improperly changed.");
enum FLAG_TRI_STATE { FLAG_DISABLE = 0, FLAG_ENABLE = 1, FLAG_DEFAULT = 2 };
explicit Flag() { Refresh(); }
virtual ~Flag() {}
@@ -104,6 +111,12 @@ class Flag {
var = os::GetEnvVar("HSA_DISABLE_FRAGMENT_ALLOCATOR");
disable_fragment_alloc_ = (var == "1") ? true : false;
var = os::GetEnvVar("HSA_UNPATCH_XGMI_LINK_WEIGHT");
patch_xgmi_link_weight_ = (var == "1") ? false : true;
var = os::GetEnvVar("HSA_UNPATCH_LINK_OVERRIDE");
patch_link_override_ = (var == "1") ? false : true;
var = os::GetEnvVar("HSA_ENABLE_SDMA_HDP_FLUSH");
enable_sdma_hdp_flush_ = (var == "0") ? false : true;
@@ -130,6 +143,16 @@ class Flag {
var = os::GetEnvVar("HSA_IGNORE_SRAMECC_MISREPORT");
check_sramecc_validity_ = (var == "1") ? false : true;
// Legal values are zero "0" or one "1". Any other value will
// be interpreted as not defining the env variable
var = os::GetEnvVar("HSA_XNACK");
xnack_ = (var == "0") ? XNACK_DISABLE : ((var == "1") ? XNACK_ENABLE : XNACK_UNCHANGED);
// Legal values are zero "0" or one "1". Any other value will
// be interpreted as not defining the env variable.
var = os::GetEnvVar("HSA_FORCE_SRAMECC");
sramecc_ = (var == "0") ? FLAG_DISABLE : ((var == "1") ? FLAG_ENABLE : FLAG_DEFAULT);
}
bool check_flat_scratch() const { return check_flat_scratch_; }
@@ -150,6 +173,11 @@ class Flag {
bool disable_fragment_alloc() const { return disable_fragment_alloc_; }
// Temporary way to control ROCr interpretation of inter-device link weight
bool patch_xgmi_link_weight() const { return patch_xgmi_link_weight_; }
bool patch_link_override() const { return patch_link_override_; }
bool rev_copy_dir() const { return rev_copy_dir_; }
bool fine_grain_pcie() const { return fine_grain_pcie_; }
@@ -178,6 +206,10 @@ class Flag {
bool check_sramecc_validity() const { return check_sramecc_validity_; }
XNACK_REQUEST xnack() const { return xnack_; }
FLAG_TRI_STATE sramecc() const { return sramecc_; }
private:
bool check_flat_scratch_;
bool enable_vm_fault_message_;
@@ -195,6 +227,8 @@ class Flag {
bool disable_image_;
bool loader_enable_mmap_uri_;
bool check_sramecc_validity_;
bool patch_xgmi_link_weight_;
bool patch_link_override_;
SDMA_OVERRIDE enable_sdma_;
@@ -209,6 +243,12 @@ class Flag {
size_t force_sdma_size_;
// Indicates user preference for Xnack state.
XNACK_REQUEST xnack_;
// Indicates user preference for SramECC state.
FLAG_TRI_STATE sramecc_;
DISALLOW_COPY_AND_ASSIGN(Flag);
};