data->rptr = (data->aligned_element_size +
                                data->rptr) % data->ring_size;
 
-               /* Let IP handle its data, maybe we need get the output
-                * from the callback to udpate the error type/count, etc
-                */
                if (data->cb) {
-                       ret = data->cb(obj->adev, &err_data, &entry);
-                       /* ue will trigger an interrupt, and in that case
-                        * we need do a reset to recovery the whole system.
-                        * But leave IP do that recovery, here we just dispatch
-                        * the error.
-                        */
-                       if (ret == AMDGPU_RAS_SUCCESS) {
-                               /* these counts could be left as 0 if
-                                * some blocks do not count error number
+                       if (amdgpu_ras_is_poison_mode_supported(obj->adev) &&
+                           obj->head.block == AMDGPU_RAS_BLOCK__UMC)
+                               dev_info(obj->adev->dev,
+                                               "Poison is created, no user action is needed.\n");
+                       else {
+                               /* Let IP handle its data, maybe we need get the output
+                                * from the callback to udpate the error type/count, etc
+                                */
+                               ret = data->cb(obj->adev, &err_data, &entry);
+                               /* ue will trigger an interrupt, and in that case
+                                * we need do a reset to recovery the whole system.
+                                * But leave IP do that recovery, here we just dispatch
+                                * the error.
                                 */
-                               obj->err_data.ue_count += err_data.ue_count;
-                               obj->err_data.ce_count += err_data.ce_count;
+                               if (ret == AMDGPU_RAS_SUCCESS) {
+                                       /* these counts could be left as 0 if
+                                        * some blocks do not count error number
+                                        */
+                                       obj->err_data.ue_count += err_data.ue_count;
+                                       obj->err_data.ce_count += err_data.ce_count;
+                               }
                        }
                }
        }