spinlock_t                      gtt_list_lock;
        struct list_head                gtt_list;
 
+       /* record hw reset is performed */
+       bool has_hw_reset;
+
 };
 
 static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev)
 int amdgpu_gpu_reset(struct amdgpu_device *adev);
 bool amdgpu_need_backup(struct amdgpu_device *adev);
 void amdgpu_pci_config_reset(struct amdgpu_device *adev);
-bool amdgpu_card_posted(struct amdgpu_device *adev);
+bool amdgpu_need_post(struct amdgpu_device *adev);
 void amdgpu_update_display_priority(struct amdgpu_device *adev);
 
 int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, void *data);
 
  * GPU helpers function.
  */
 /**
- * amdgpu_card_posted - check if the hw has already been initialized
+ * amdgpu_need_post - check if the hw need post or not
  *
  * @adev: amdgpu_device pointer
  *
- * Check if the asic has been initialized (all asics).
- * Used at driver startup.
- * Returns true if initialized or false if not.
+ * Check if the asic has been initialized (all asics) at driver startup
+ * or post is needed if  hw reset is performed.
+ * Returns true if need or false if not.
  */
-bool amdgpu_card_posted(struct amdgpu_device *adev)
+bool amdgpu_need_post(struct amdgpu_device *adev)
 {
        uint32_t reg;
 
+       if (adev->has_hw_reset) {
+               adev->has_hw_reset = false;
+               return true;
+       }
        /* then check MEM_SIZE, in case the crtcs are off */
        reg = RREG32(mmCONFIG_MEMSIZE);
 
        if (reg)
-               return true;
+               return false;
 
-       return false;
+       return true;
 
 }
 
                                return true;
                }
        }
-       return !amdgpu_card_posted(adev);
+       return amdgpu_need_post(adev);
 }
 
 /**
        amdgpu_atombios_scratch_regs_restore(adev);
 
        /* post card */
-       if (!amdgpu_card_posted(adev) || !resume) {
+       if (amdgpu_need_post(adev)) {
                r = amdgpu_atom_asic_init(adev->mode_info.atom_context);
                if (r)
                        DRM_ERROR("amdgpu asic init failed\n");