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:
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren