1,cleanup description/comments
2,for FIJI & passthrough, force post when smc fw version below 22.15
3,for other cases, follow regular rules

Change-Id: Iecdeec1801a920c1f4ea9c8fd40be9ac2f1f3c51
Signed-off-by: Monk Liu <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 27 +++++++--------------------
 1 file changed, 7 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 5970c40..dbfe471 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -637,12 +637,10 @@ static bool amdgpu_vpost_needed(struct amdgpu_device 
*adev)
                return false;
 
        if (amdgpu_passthrough(adev)) {
-               /* for FIJI: In whole GPU pass-through virtualization case
-                * old smc fw won't clear some registers (e.g. MEM_SIZE, 
BIOS_SCRATCH)
-                * so amdgpu_card_posted return false and driver will 
incorrectly skip vPost.
-                * but if we force vPost do in pass-through case, the driver 
reload will hang.
-                * whether doing vPost depends on amdgpu_card_posted if smc 
version is above
-                * 00160e00 for FIJI.
+               /* for FIJI: In whole GPU pass-through virtualization case, 
after VM reboot
+                * some old smc fw still need driver do vPost otherwise gpu 
hang, while
+                * those smc fw version above 22.15 doesn't have this flaw, so 
we force
+                * vpost executed for smc version below 22.15
                 */
                if (adev->asic_type == CHIP_FIJI) {
                        int err;
@@ -653,22 +651,11 @@ static bool amdgpu_vpost_needed(struct amdgpu_device 
*adev)
                                return true;
 
                        fw_ver = *((uint32_t *)adev->pm.fw->data + 69);
-                       if (fw_ver >= 0x00160e00)
-                               return !amdgpu_card_posted(adev);
+                       if (fw_ver < 0x00160e00)
+                               return true;
                }
-       } else {
-               /* in bare-metal case, amdgpu_card_posted return false
-                * after system reboot/boot, and return true if driver
-                * reloaded.
-                * we shouldn't do vPost after driver reload otherwise GPU
-                * could hang.
-                */
-               if (amdgpu_card_posted(adev))
-                       return false;
        }
-
-       /* we assume vPost is neede for all other cases */
-       return true;
+       return !amdgpu_card_posted(adev);
 }
 
 /**
-- 
1.9.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to