Merge tag 'pm+acpi-4.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[firefly-linux-kernel-4.4.55.git] / drivers / edac / i7core_edac.c
index d871275196f6f04b6542e4941ee433e41fcfdf64..01087a38da226d08bd7e08da5a183885fbf420b1 100644 (file)
@@ -9,7 +9,7 @@
  * GNU General Public License version 2 only.
  *
  * Copyright (c) 2009-2010 by:
- *      Mauro Carvalho Chehab <mchehab@redhat.com>
+ *      Mauro Carvalho Chehab
  *
  * Red Hat Inc. http://www.redhat.com
  *
@@ -1157,27 +1157,24 @@ static DEVICE_ATTR(inject_eccmask, S_IRUGO | S_IWUSR,
 static DEVICE_ATTR(inject_enable, S_IRUGO | S_IWUSR,
                   i7core_inject_enable_show, i7core_inject_enable_store);
 
+static struct attribute *i7core_dev_attrs[] = {
+       &dev_attr_inject_section.attr,
+       &dev_attr_inject_type.attr,
+       &dev_attr_inject_eccmask.attr,
+       &dev_attr_inject_enable.attr,
+       NULL
+};
+
+ATTRIBUTE_GROUPS(i7core_dev);
+
 static int i7core_create_sysfs_devices(struct mem_ctl_info *mci)
 {
        struct i7core_pvt *pvt = mci->pvt_info;
        int rc;
 
-       rc = device_create_file(&mci->dev, &dev_attr_inject_section);
-       if (rc < 0)
-               return rc;
-       rc = device_create_file(&mci->dev, &dev_attr_inject_type);
-       if (rc < 0)
-               return rc;
-       rc = device_create_file(&mci->dev, &dev_attr_inject_eccmask);
-       if (rc < 0)
-               return rc;
-       rc = device_create_file(&mci->dev, &dev_attr_inject_enable);
-       if (rc < 0)
-               return rc;
-
        pvt->addrmatch_dev = kzalloc(sizeof(*pvt->addrmatch_dev), GFP_KERNEL);
        if (!pvt->addrmatch_dev)
-               return rc;
+               return -ENOMEM;
 
        pvt->addrmatch_dev->type = &addrmatch_type;
        pvt->addrmatch_dev->bus = mci->dev.bus;
@@ -1198,7 +1195,7 @@ static int i7core_create_sysfs_devices(struct mem_ctl_info *mci)
                if (!pvt->chancounts_dev) {
                        put_device(pvt->addrmatch_dev);
                        device_del(pvt->addrmatch_dev);
-                       return rc;
+                       return -ENOMEM;
                }
 
                pvt->chancounts_dev->type = &all_channel_counts_type;
@@ -1223,11 +1220,6 @@ static void i7core_delete_sysfs_devices(struct mem_ctl_info *mci)
 
        edac_dbg(1, "\n");
 
-       device_remove_file(&mci->dev, &dev_attr_inject_section);
-       device_remove_file(&mci->dev, &dev_attr_inject_type);
-       device_remove_file(&mci->dev, &dev_attr_inject_eccmask);
-       device_remove_file(&mci->dev, &dev_attr_inject_enable);
-
        if (!pvt->is_registered) {
                put_device(pvt->chancounts_dev);
                device_del(pvt->chancounts_dev);
@@ -1708,7 +1700,7 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci,
                                    const struct mce *m)
 {
        struct i7core_pvt *pvt = mci->pvt_info;
-       char *type, *optype, *err;
+       char *optype, *err;
        enum hw_event_mc_err_type tp_event;
        unsigned long error = m->status & 0x1ff0000l;
        bool uncorrected_error = m->mcgstatus & 1ll << 61;
@@ -1721,15 +1713,11 @@ static void i7core_mce_output_error(struct mem_ctl_info *mci,
        u32 errnum = find_first_bit(&error, 32);
 
        if (uncorrected_error) {
-               if (ripv) {
-                       type = "FATAL";
+               if (ripv)
                        tp_event = HW_EVENT_ERR_FATAL;
-               } else {
-                       type = "NON_FATAL";
+               else
                        tp_event = HW_EVENT_ERR_UNCORRECTED;
-               }
        } else {
-               type = "CORRECTED";
                tp_event = HW_EVENT_ERR_CORRECTED;
        }
 
@@ -2263,7 +2251,7 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev)
                enable_sdram_scrub_setting(mci);
 
        /* add this new MC control structure to EDAC's list of MCs */
-       if (unlikely(edac_mc_add_mc(mci))) {
+       if (unlikely(edac_mc_add_mc_with_groups(mci, i7core_dev_groups))) {
                edac_dbg(0, "MC: failed edac_mc_add_mc()\n");
                /* FIXME: perhaps some code should go here that disables error
                 * reporting if we just enabled it
@@ -2461,7 +2449,7 @@ module_init(i7core_init);
 module_exit(i7core_exit);
 
 MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>");
+MODULE_AUTHOR("Mauro Carvalho Chehab");
 MODULE_AUTHOR("Red Hat Inc. (http://www.redhat.com)");
 MODULE_DESCRIPTION("MC Driver for Intel i7 Core memory controllers - "
                   I7CORE_REVISION);