Skip to content

Commit 7eafe7a

Browse files
Hawking Zhangalexdeucher
authored andcommitted
drm/amdkfd: Select reset method for poison handling
Driver mode-2 is only supported by relative new smc firmware. Signed-off-by: Hawking Zhang <[email protected]> Reviewed-by: Tao Zhou <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 101025e commit 7eafe7a

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,23 @@ static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,
167167
case SOC15_IH_CLIENTID_SE3SH:
168168
case SOC15_IH_CLIENTID_UTCL2:
169169
block = AMDGPU_RAS_BLOCK__GFX;
170-
if (amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) ||
171-
amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 4))
172-
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
173-
else
170+
if (amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3)) {
171+
/* driver mode-2 for gfx poison is only supported by
172+
* pmfw 0x00557300 and onwards */
173+
if (dev->adev->pm.fw_version < 0x00557300)
174+
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
175+
else
176+
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
177+
} else if (amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 4)) {
178+
/* driver mode-2 for gfx poison is only supported by
179+
* pmfw 0x05550C00 and onwards */
180+
if (dev->adev->pm.fw_version < 0x05550C00)
181+
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
182+
else
183+
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
184+
} else {
174185
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
186+
}
175187
break;
176188
case SOC15_IH_CLIENTID_VMC:
177189
case SOC15_IH_CLIENTID_VMC1:
@@ -184,11 +196,23 @@ static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,
184196
case SOC15_IH_CLIENTID_SDMA3:
185197
case SOC15_IH_CLIENTID_SDMA4:
186198
block = AMDGPU_RAS_BLOCK__SDMA;
187-
if (amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) ||
188-
amdgpu_ip_version(dev->adev, GC_HWIP, 0) == IP_VERSION(9, 4, 4))
189-
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
190-
else
199+
if (amdgpu_ip_version(dev->adev, SDMA0_HWIP, 0) == IP_VERSION(4, 4, 2)) {
200+
/* driver mode-2 for gfx poison is only supported by
201+
* pmfw 0x00557300 and onwards */
202+
if (dev->adev->pm.fw_version < 0x00557300)
203+
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
204+
else
205+
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
206+
} else if (amdgpu_ip_version(dev->adev, SDMA0_HWIP, 0) == IP_VERSION(4, 4, 5)) {
207+
/* driver mode-2 for gfx poison is only supported by
208+
* pmfw 0x05550C00 and onwards */
209+
if (dev->adev->pm.fw_version < 0x05550C00)
210+
reset = AMDGPU_RAS_GPU_RESET_MODE1_RESET;
211+
else
212+
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
213+
} else {
191214
reset = AMDGPU_RAS_GPU_RESET_MODE2_RESET;
215+
}
192216
break;
193217
default:
194218
dev_warn(dev->adev->dev,

0 commit comments

Comments
 (0)