提交 ffbfd081 编写于 作者: A Alex Deucher

drm/amdgpu/si: add PCI reset support

Use generic PCI reset for GPU reset if the user specifies
PCI reset as the reset mechanism.  This should in general
only be used for validation.
Acked-by: NEvan Quan <evan.quan@amd.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 af484df8
......@@ -1299,17 +1299,6 @@ static int si_gpu_pci_config_reset(struct amdgpu_device *adev)
return r;
}
static int si_asic_reset(struct amdgpu_device *adev)
{
int r;
dev_info(adev->dev, "PCI CONFIG reset\n");
r = si_gpu_pci_config_reset(adev);
return r;
}
static bool si_asic_supports_baco(struct amdgpu_device *adev)
{
return false;
......@@ -1318,14 +1307,34 @@ static bool si_asic_supports_baco(struct amdgpu_device *adev)
static enum amd_reset_method
si_asic_reset_method(struct amdgpu_device *adev)
{
if (amdgpu_reset_method != AMD_RESET_METHOD_LEGACY &&
amdgpu_reset_method != -1)
if (amdgpu_reset_method == AMD_RESET_METHOD_PCI)
return amdgpu_reset_method;
else 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);
amdgpu_reset_method);
return AMD_RESET_METHOD_LEGACY;
}
static int si_asic_reset(struct amdgpu_device *adev)
{
int r;
switch (si_asic_reset_method(adev)) {
case AMD_RESET_METHOD_PCI:
dev_info(adev->dev, "PCI reset\n");
r = amdgpu_device_pci_reset(adev);
break;
default:
dev_info(adev->dev, "PCI CONFIG reset\n");
r = si_gpu_pci_config_reset(adev);
break;
}
return r;
}
static u32 si_get_config_memsize(struct amdgpu_device *adev)
{
return RREG32(mmCONFIG_MEMSIZE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册