{
        int ret = 0;
        u32 scratch_pad_rsvd0 = pm8001_cr32(pm8001_ha, 0,
-                                       MSGU_HOST_SCRATCH_PAD_6);
+                                           MSGU_SCRATCH_PAD_RSVD_0);
        u32 scratch_pad_rsvd1 = pm8001_cr32(pm8001_ha, 0,
-                                       MSGU_HOST_SCRATCH_PAD_7);
+                                           MSGU_SCRATCH_PAD_RSVD_1);
        u32 scratch_pad1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1);
        u32 scratch_pad2 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2);
        u32 scratch_pad3 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3);
                        PCI_VENDOR_ID_ATTO &&
                        pm8001_ha->pdev->subsystem_vendor != 0) {
                        ibutton0 = pm8001_cr32(pm8001_ha, 0,
-                                       MSGU_HOST_SCRATCH_PAD_6);
+                                              MSGU_SCRATCH_PAD_RSVD_0);
                        ibutton1 = pm8001_cr32(pm8001_ha, 0,
-                                       MSGU_HOST_SCRATCH_PAD_7);
+                                              MSGU_SCRATCH_PAD_RSVD_1);
                        if (!ibutton0 && !ibutton1) {
                                pm8001_dbg(pm8001_ha, FAIL,
                                           "iButton Feature is not Available!!!\n");
        pm8001_dbg(pm8001_ha, FAIL, "MSGU_HOST_SCRATCH_PAD_5: 0x%x\n",
                   pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_5));
        pm8001_dbg(pm8001_ha, FAIL, "MSGU_RSVD_SCRATCH_PAD_0: 0x%x\n",
-                  pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_6));
+                  pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_RSVD_0));
        pm8001_dbg(pm8001_ha, FAIL, "MSGU_RSVD_SCRATCH_PAD_1: 0x%x\n",
-                  pm8001_cr32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_7));
+                  pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_RSVD_1));
 }
 
 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
                        pm8001_handle_event(pm8001_ha, NULL, IO_FATAL_ERROR);
                        print_scratchpad_registers(pm8001_ha);
                        return ret;
+               } else {
+                       /*read scratchpad rsvd 0 register*/
+                       regval = pm8001_cr32(pm8001_ha, 0,
+                                            MSGU_SCRATCH_PAD_RSVD_0);
+                       switch (regval) {
+                       case NON_FATAL_SPBC_LBUS_ECC_ERR:
+                       case NON_FATAL_BDMA_ERR:
+                       case NON_FATAL_THERM_OVERTEMP_ERR:
+                               /*Clear the register*/
+                               pm8001_cw32(pm8001_ha, 0,
+                                           MSGU_SCRATCH_PAD_RSVD_0,
+                                           0x00000000);
+                               break;
+                       default:
+                               break;
+                       }
                }
        }
        circularQ = &pm8001_ha->outbnd_q_tbl[vec];
 
 #define MSGU_HOST_SCRATCH_PAD_3                        0x60
 #define MSGU_HOST_SCRATCH_PAD_4                        0x64
 #define MSGU_HOST_SCRATCH_PAD_5                        0x68
-#define MSGU_HOST_SCRATCH_PAD_6                        0x6C
-#define MSGU_HOST_SCRATCH_PAD_7                        0x70
+#define MSGU_SCRATCH_PAD_RSVD_0                        0x6C
+#define MSGU_SCRATCH_PAD_RSVD_1                        0x70
 
 #define MSGU_SCRATCHPAD1_RAAE_STATE_ERR(x) ((x & 0x3) == 0x2)
 #define MSGU_SCRATCHPAD1_ILA_STATE_ERR(x) (((x >> 2) & 0x3) == 0x2)
 #define SCRATCH_PAD_ERROR_MASK         0xFFFFFC00 /* Error mask bits */
 #define SCRATCH_PAD_STATE_MASK         0x00000003 /* State Mask bits */
 
+/*state definition for Scratchpad Rsvd 0, Offset 0x6C, Non-fatal*/
+#define NON_FATAL_SPBC_LBUS_ECC_ERR    0x70000001
+#define NON_FATAL_BDMA_ERR             0xE0000001
+#define NON_FATAL_THERM_OVERTEMP_ERR   0x80000001
+
 /* main configuration offset - byte offset */
 #define MAIN_SIGNATURE_OFFSET          0x00 /* DWORD 0x00 */
 #define MAIN_INTERFACE_REVISION                0x04 /* DWORD 0x01 */