mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 06:10:56 +00:00
drm/amdgpu: add module parameter choose reset mode
Default value is auto, doesn't change original reset method logic. v2: change to use parameter reset_method v3: add warn msg if specified mode isn't supported Signed-off-by: Likun Gao <Likun.Gao@amd.com> Signed-off-by: Wenhui Sheng <Wenhui.Sheng@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
311531f087
commit
273da6ff7c
7 changed files with 47 additions and 0 deletions
|
@ -193,6 +193,7 @@ static const bool debug_evictions; /* = false */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int amdgpu_tmz;
|
extern int amdgpu_tmz;
|
||||||
|
extern int amdgpu_reset_method;
|
||||||
|
|
||||||
#ifdef CONFIG_DRM_AMDGPU_SI
|
#ifdef CONFIG_DRM_AMDGPU_SI
|
||||||
extern int amdgpu_si_support;
|
extern int amdgpu_si_support;
|
||||||
|
|
|
@ -149,6 +149,7 @@ int amdgpu_mes = 0;
|
||||||
int amdgpu_noretry;
|
int amdgpu_noretry;
|
||||||
int amdgpu_force_asic_type = -1;
|
int amdgpu_force_asic_type = -1;
|
||||||
int amdgpu_tmz = 0;
|
int amdgpu_tmz = 0;
|
||||||
|
int amdgpu_reset_method = -1; /* auto */
|
||||||
|
|
||||||
struct amdgpu_mgpu_info mgpu_info = {
|
struct amdgpu_mgpu_info mgpu_info = {
|
||||||
.mutex = __MUTEX_INITIALIZER(mgpu_info.mutex),
|
.mutex = __MUTEX_INITIALIZER(mgpu_info.mutex),
|
||||||
|
@ -757,6 +758,13 @@ module_param_named(abmlevel, amdgpu_dm_abm_level, uint, 0444);
|
||||||
MODULE_PARM_DESC(tmz, "Enable TMZ feature (-1 = auto, 0 = off (default), 1 = on)");
|
MODULE_PARM_DESC(tmz, "Enable TMZ feature (-1 = auto, 0 = off (default), 1 = on)");
|
||||||
module_param_named(tmz, amdgpu_tmz, int, 0444);
|
module_param_named(tmz, amdgpu_tmz, int, 0444);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: reset_method (int)
|
||||||
|
* GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco)
|
||||||
|
*/
|
||||||
|
MODULE_PARM_DESC(reset_method, "GPU reset method (-1 = auto (default), 0 = legacy, 1 = mode0, 2 = mode1, 3 = mode2, 4 = baco)");
|
||||||
|
module_param_named(reset_method, amdgpu_reset_method, int, 0444);
|
||||||
|
|
||||||
static const struct pci_device_id pciidlist[] = {
|
static const struct pci_device_id pciidlist[] = {
|
||||||
#ifdef CONFIG_DRM_AMDGPU_SI
|
#ifdef CONFIG_DRM_AMDGPU_SI
|
||||||
{0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI},
|
{0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI},
|
||||||
|
|
|
@ -1326,6 +1326,14 @@ cik_asic_reset_method(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
bool baco_reset;
|
bool baco_reset;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method == AMD_RESET_METHOD_LEGACY ||
|
||||||
|
amdgpu_reset_method == AMD_RESET_METHOD_BACO)
|
||||||
|
return amdgpu_reset_method;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method != -1)
|
||||||
|
dev_warn(adev->dev, "Specified reset:%d isn't supported, using AUTO instead.\n",
|
||||||
|
amdgpu_reset_method);
|
||||||
|
|
||||||
switch (adev->asic_type) {
|
switch (adev->asic_type) {
|
||||||
case CHIP_BONAIRE:
|
case CHIP_BONAIRE:
|
||||||
case CHIP_HAWAII:
|
case CHIP_HAWAII:
|
||||||
|
|
|
@ -311,6 +311,14 @@ nv_asic_reset_method(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
struct smu_context *smu = &adev->smu;
|
struct smu_context *smu = &adev->smu;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method == AMD_RESET_METHOD_MODE1 ||
|
||||||
|
amdgpu_reset_method == AMD_RESET_METHOD_BACO)
|
||||||
|
return amdgpu_reset_method;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method != -1)
|
||||||
|
dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
|
||||||
|
amdgpu_reset_method);
|
||||||
|
|
||||||
if (smu_baco_is_support(smu))
|
if (smu_baco_is_support(smu))
|
||||||
return AMD_RESET_METHOD_BACO;
|
return AMD_RESET_METHOD_BACO;
|
||||||
else
|
else
|
||||||
|
|
|
@ -1229,6 +1229,11 @@ static bool si_asic_supports_baco(struct amdgpu_device *adev)
|
||||||
static enum amd_reset_method
|
static enum amd_reset_method
|
||||||
si_asic_reset_method(struct amdgpu_device *adev)
|
si_asic_reset_method(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
|
if (amdgpu_reset_method != AMD_RESET_METHOD_LEGACY &&
|
||||||
|
amdgpu_reset_method != -1)
|
||||||
|
dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
|
||||||
|
amdgpu_reset_method);
|
||||||
|
|
||||||
return AMD_RESET_METHOD_LEGACY;
|
return AMD_RESET_METHOD_LEGACY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -532,6 +532,15 @@ soc15_asic_reset_method(struct amdgpu_device *adev)
|
||||||
bool baco_reset = false;
|
bool baco_reset = false;
|
||||||
struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
|
struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
|
||||||
|
|
||||||
|
if (amdgpu_reset_method == AMD_RESET_METHOD_MODE1 ||
|
||||||
|
amdgpu_reset_method == AMD_RESET_METHOD_MODE2 ||
|
||||||
|
amdgpu_reset_method == AMD_RESET_METHOD_BACO)
|
||||||
|
return amdgpu_reset_method;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method != -1)
|
||||||
|
dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
|
||||||
|
amdgpu_reset_method);
|
||||||
|
|
||||||
switch (adev->asic_type) {
|
switch (adev->asic_type) {
|
||||||
case CHIP_RAVEN:
|
case CHIP_RAVEN:
|
||||||
case CHIP_RENOIR:
|
case CHIP_RENOIR:
|
||||||
|
|
|
@ -710,6 +710,14 @@ vi_asic_reset_method(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
bool baco_reset;
|
bool baco_reset;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method == AMD_RESET_METHOD_LEGACY ||
|
||||||
|
amdgpu_reset_method == AMD_RESET_METHOD_BACO)
|
||||||
|
return amdgpu_reset_method;
|
||||||
|
|
||||||
|
if (amdgpu_reset_method != -1)
|
||||||
|
dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
|
||||||
|
amdgpu_reset_method);
|
||||||
|
|
||||||
switch (adev->asic_type) {
|
switch (adev->asic_type) {
|
||||||
case CHIP_FIJI:
|
case CHIP_FIJI:
|
||||||
case CHIP_TONGA:
|
case CHIP_TONGA:
|
||||||
|
|
Loading…
Reference in a new issue