u16 id;
        int severity;                   /* 0:NONFATAL | 1:FATAL | 2:COR */
        int flags;
+       int first;
        unsigned int status;            /* COR/UNCOR Error Status */
        unsigned int mask;              /* COR/UNCOR Error Mask */
        struct header_log_regs tlp;     /* TLP Header */
 
 
 static int get_device_error_info(struct pci_dev *dev, struct aer_err_info *info)
 {
-       int pos;
+       int pos, temp;
 
        info->status = 0;
        info->flags &= ~AER_TLP_HEADER_VALID_FLAG;
                if (!(info->status & ~info->mask))
                        return AER_UNSUCCESS;
 
+               /* Get First Error Pointer */
+               pci_read_config_dword(dev, pos + PCI_ERR_CAP, &temp);
+               info->first = PCI_ERR_CAP_FEP(temp);
+
                if (info->status & AER_LOG_TLP_MASKS) {
                        info->flags |= AER_TLP_HEADER_VALID_FLAG;
                        pci_read_config_dword(dev,
 
                        errmsg = aer_uncorrectable_error_string[i];
 
                if (errmsg)
-                       AER_PR(info, "%s\t:\n", errmsg);
+                       AER_PR(info, "%s\t: %s\n", errmsg,
+                               info->first == i ? "First" : "");
                else
-                       AER_PR(info, "Unknown Error Bit %2d  \t:\n", i);
-
-               break;
+                       AER_PR(info, "Unknown Error Bit %2d  \t: %s\n",
+                               i, info->first == i ? "First" : "");
        }
 }