]> www.infradead.org Git - users/mchehab/edac.git/commitdiff
edac: add a sysfs node to report the maximum location for the system hw_events_v3
authorMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 21 Mar 2012 20:13:24 +0000 (17:13 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 21 Mar 2012 20:13:24 +0000 (17:13 -0300)
The userspace tools need to know what's the maximum location on each
system, as it helps to create nice maps showing how the memory was
filled at the system.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/edac/edac_mc_sysfs.c

index 51e7b225ed000d13476b5399bca50e93a84c9028..91029c0cfa545f7858c768f3d81360fa56e5db1e 100644 (file)
@@ -742,6 +742,23 @@ static ssize_t mci_size_mb_show(struct device *dev,
        return sprintf(data, "%u\n", PAGES_TO_MiB(total_pages));
 }
 
+static ssize_t mci_max_location_show(struct device *dev,
+                                    struct device_attribute *mattr,
+                                    char *data)
+{
+       struct mem_ctl_info *mci = to_mci(dev);
+       int i;
+       char *p = data;
+
+       for (i = 0; i < mci->n_layers; i++) {
+               p += sprintf(p, "%s %d ",
+                            edac_layer_name[mci->layers[i].type],
+                            mci->layers[i].size - 1);
+       }
+
+       return p - data;
+}
+
 /* default Control file */
 DEVICE_ATTR(reset_counters, S_IWUSR, NULL, mci_reset_counters_store);
 
@@ -753,6 +770,7 @@ DEVICE_ATTR(ue_noinfo_count, S_IRUGO, mci_ue_noinfo_show, NULL);
 DEVICE_ATTR(ce_noinfo_count, S_IRUGO, mci_ce_noinfo_show, NULL);
 DEVICE_ATTR(ue_count, S_IRUGO, mci_ue_count_show, NULL);
 DEVICE_ATTR(ce_count, S_IRUGO, mci_ce_count_show, NULL);
+DEVICE_ATTR(max_location, S_IRUGO, mci_max_location_show, NULL);
 
 /* memory scrubber attribute file */
 DEVICE_ATTR(sdram_scrub_rate, S_IRUGO | S_IWUSR, mci_sdram_scrub_rate_show,
@@ -768,6 +786,7 @@ static struct attribute *mci_attrs[] = {
        &dev_attr_ue_count.attr,
        &dev_attr_ce_count.attr,
        &dev_attr_sdram_scrub_rate.attr,
+       &dev_attr_max_location.attr,
        NULL
 };