From: Andrew Morton - Mucho whitespace fixes. Someone has tab problems... - Don't initialsie .bss or .data to zero - Don't cast void* - uninline a few functions Cc: doug thompson Cc: Alan Cox Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/edac/edac_mc.c | 634 ++++++++++++++++----------------------- 1 files changed, 261 insertions(+), 373 deletions(-) diff -puN drivers/edac/edac_mc.c~edac-with-sysfs-interface-added-tidy drivers/edac/edac_mc.c --- devel/drivers/edac/edac_mc.c~edac-with-sysfs-interface-added-tidy 2006-01-04 03:22:11.000000000 -0800 +++ devel-akpm/drivers/edac/edac_mc.c 2006-01-04 03:22:11.000000000 -0800 @@ -37,7 +37,6 @@ #include "edac_mc.h" - #define EDAC_MC_VERSION "edac_mc Ver: 2.0.0 " __DATE__ #ifdef CONFIG_EDAC_DEBUG @@ -48,8 +47,6 @@ EXPORT_SYMBOL(edac_debug_level); #define EDAC_THREAD_NAME "kedac" - - /* EDAC Controls, setable by module parameter, and sysfs */ static int log_ue = 1; static int log_ce = 1; @@ -57,35 +54,29 @@ static int panic_on_ue = 1; static int poll_msec = 1000; static int check_pci_parity = 1; /* default YES check PCI parity */ -static int panic_on_pci_parity = 0; /* default no panic on PCI Parity */ +static int panic_on_pci_parity = 0; /* default no panic on PCI Parity */ static atomic_t pci_parity_count = ATOMIC_INIT(0); - /* lock to memory controller's control array */ static DECLARE_MUTEX(mem_ctls_mutex); static struct list_head mc_devices = LIST_HEAD_INIT(mc_devices); /* Structure of the whitelist and blacklist arrays */ -struct edac_pci_device_list -{ - unsigned int vendor; /* Vendor ID */ - unsigned int device; /* Deviice ID */ +struct edac_pci_device_list { + unsigned int vendor; /* Vendor ID */ + unsigned int device; /* Deviice ID */ }; -#define MAX_LISTED_PCI_DEVICES 32 +#define MAX_LISTED_PCI_DEVICES 32 /* List of PCI devices (vendor-id:device-id) that should be skipped */ -static struct edac_pci_device_list pci_blacklist[ MAX_LISTED_PCI_DEVICES ]; -static int pci_blacklist_count = 0; +static struct edac_pci_device_list pci_blacklist[MAX_LISTED_PCI_DEVICES]; +static int pci_blacklist_count; /* List of PCI devices (vendor-id:device-id) that should be scanned */ -static struct edac_pci_device_list pci_whitelist[ MAX_LISTED_PCI_DEVICES ]; -static int pci_whitelist_count = 0; - - - - +static struct edac_pci_device_list pci_whitelist[MAX_LISTED_PCI_DEVICES]; +static int pci_whitelist_count ; /* START sysfs data and methods */ @@ -103,7 +94,6 @@ static const char *mem_types[] = { [MEM_RMBS] = "RMBS" }; - static const char *dev_types[] = { [DEV_UNKNOWN] = "Unknown", [DEV_X1] = "x1", @@ -129,13 +119,11 @@ static const char *edac_caps[] = { }; - /* sysfs object: /sys/devices/system/edac */ static struct sysdev_class edac_class = { set_kset_name("edac"), }; - /* sysfs objects: * /sys/devices/system/edac/mc * /sys/devices/system/edac/pci @@ -143,99 +131,84 @@ static struct sysdev_class edac_class = static struct kobject edac_memctrl_kobj; static struct kobject edac_pci_kobj; - - - /* * /sys/devices/system/edac/mc; * data structures and methods */ -static ssize_t -memctrl_string_show(void *ptr, char * buffer) +static ssize_t memctrl_string_show(void *ptr, char *buffer) { char *value = (char*) ptr; return sprintf(buffer,"%s\n",value); } - -static ssize_t -memctrl_int_show(void *ptr, char * buffer) +static ssize_t memctrl_int_show(void *ptr, char *buffer) { int *value = (int*) ptr; return sprintf(buffer,"%d\n",*value); } -static ssize_t -memctrl_int_store(void *ptr, const char * buffer, size_t count) +static ssize_t memctrl_int_store(void *ptr, const char *buffer, size_t count) { int *value = (int*) ptr; - if (isdigit(*buffer) ) { + if (isdigit(*buffer)) *value = simple_strtoul(buffer,NULL,0); - } return count; } - - struct memctrl_dev_attribute { struct attribute attr; - void *value; + void *value; ssize_t (*show)(void *,char *); - ssize_t (*store)(void *, const char *,size_t); + ssize_t (*store)(void *, const char *, size_t); }; /* Set of show/store abstract level functions for memory control object */ static ssize_t -memctrl_dev_show(struct kobject * kobj, struct attribute * attr, char * buffer) +memctrl_dev_show(struct kobject *kobj, struct attribute *attr, char *buffer) { struct memctrl_dev_attribute *memctrl_dev; - memctrl_dev= (struct memctrl_dev_attribute*) attr; + memctrl_dev = (struct memctrl_dev_attribute*)attr; - if (memctrl_dev->show) - return memctrl_dev->show(memctrl_dev->value, buffer); - return -EIO; + if (memctrl_dev->show) + return memctrl_dev->show(memctrl_dev->value, buffer); + return -EIO; } - static ssize_t -memctrl_dev_store(struct kobject * kobj, struct attribute * attr, - const char * buffer, size_t count) +memctrl_dev_store(struct kobject *kobj, struct attribute *attr, + const char *buffer, size_t count) { struct memctrl_dev_attribute *memctrl_dev; - memctrl_dev= (struct memctrl_dev_attribute*) attr; + memctrl_dev = (struct memctrl_dev_attribute*)attr; - if (memctrl_dev->store) - return memctrl_dev->store(memctrl_dev->value, buffer, count); + if (memctrl_dev->store) + return memctrl_dev->store(memctrl_dev->value, buffer, count); return -EIO; } - static struct sysfs_ops memctrlfs_ops = { - .show = memctrl_dev_show, - .store = memctrl_dev_store + .show = memctrl_dev_show, + .store = memctrl_dev_store }; - - -#define MEMCTRL_ATTR(_name,_mode,_show,_store) \ -struct memctrl_dev_attribute attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ +#define MEMCTRL_ATTR(_name,_mode,_show,_store) \ +struct memctrl_dev_attribute attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .value = &_name, \ - .show = _show, \ - .store = _store, \ + .show = _show, \ + .store = _store, \ }; -#define MEMCTRL_STRING_ATTR(_name,_data,_mode,_show,_store) \ -struct memctrl_dev_attribute attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ +#define MEMCTRL_STRING_ATTR(_name,_data,_mode,_show,_store) \ +struct memctrl_dev_attribute attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .value = _data, \ - .show = _show, \ - .store = _store, \ + .show = _show, \ + .store = _store, \ }; - /* cwrow attribute f*/ MEMCTRL_STRING_ATTR(mc_version,EDAC_MC_VERSION,S_IRUGO,memctrl_string_show,NULL); @@ -257,21 +230,18 @@ static struct memctrl_dev_attribute *mem }; /* Main MC kobject release() function */ -static void -edac_memctrl_master_release(struct kobject * kobj) +static void edac_memctrl_master_release(struct kobject *kobj) { debugf1("EDAC MC: " __FILE__ ": %s()\n", __func__); } - static struct kobj_type ktype_memctrl = { .release = edac_memctrl_master_release, - .sysfs_ops = &memctrlfs_ops, + .sysfs_ops = &memctrlfs_ops, .default_attrs = (struct attribute **) memctrl_attr, }; - /* Initialize the main sysfs entries for edac: * /sys/devices/system/edac * @@ -332,22 +302,18 @@ static void edac_sysfs_memctrl_teardown( sysdev_class_unregister(&edac_class); } - - /* * /sys/devices/system/edac/pci; * data structures and methods */ -struct list_control -{ +struct list_control { struct edac_pci_device_list *list; int *count; }; /* Output the list as: vendor_id:device:id<,vendor_id:device_id> */ -static ssize_t -edac_pci_list_string_show(void *ptr, char * buffer) +static ssize_t edac_pci_list_string_show(void *ptr, char *buffer) { struct list_control *listctl; struct edac_pci_device_list *list; @@ -355,10 +321,10 @@ edac_pci_list_string_show(void *ptr, cha int len=0; int i; - listctl = (struct list_control *) ptr; + listctl = ptr; list = listctl->list; - for (i = 0; i < *(listctl->count); i++,list++ ) { + for (i = 0; i < *(listctl->count); i++, list++ ) { if (len > 0) len += snprintf(p + len, (PAGE_SIZE-len), ","); @@ -373,7 +339,6 @@ edac_pci_list_string_show(void *ptr, cha return (ssize_t) len; } - /** * * Scan string from **s to **e looking for one 'vendor:device' tuple @@ -385,25 +350,24 @@ edac_pci_list_string_show(void *ptr, cha * * In both cases, make sure *s has been moved forward toward *e */ -static int -parse_one_device(const char **s,const char **e, +static int parse_one_device(const char **s,const char **e, unsigned int *vendor_id, unsigned int *device_id) { const char *runner, *p; /* if null byte, we are done */ - if (! **s) { + if (!**s) { (*s)++; /* keep *s moving */ return 0; } /* skip over newlines & whitespace */ - if ( (**s == '\n') || isspace(**s)) { + if ((**s == '\n') || isspace(**s)) { (*s)++; return 0; } - if (! isxdigit(**s)) { + if (!isxdigit(**s)) { (*s)++; return 0; } @@ -420,14 +384,14 @@ parse_one_device(const char **s,const ch runner++; } - if (! isxdigit(*runner)) { + if (!isxdigit(*runner)) { *s = ++runner; return 0; } /* parse device_id */ - if (runner < *e) { - *device_id = simple_strtol((char*) runner, (char**) &p, 16); + if (runner < *e) { + *device_id = simple_strtol((char*)runner, (char**)&p, 16); runner = p; } @@ -436,9 +400,8 @@ parse_one_device(const char **s,const ch return 1; } - -static ssize_t -edac_pci_list_string_store(void *ptr, const char * buffer, size_t count) +static ssize_t edac_pci_list_string_store(void *ptr, const char *buffer, + size_t count) { struct list_control *listctl; struct edac_pci_device_list *list; @@ -446,10 +409,10 @@ edac_pci_list_string_store(void *ptr, co const char *s, *e; int *index; - s = (char*) buffer; + s = (char*)buffer; e = s + count; - listctl = (struct list_control *) ptr; + listctl = ptr; list = listctl->list; index = listctl->count; @@ -470,86 +433,74 @@ edac_pci_list_string_store(void *ptr, co return count; } - - -static ssize_t -edac_pci_int_show(void *ptr, char * buffer) +static ssize_t edac_pci_int_show(void *ptr, char *buffer) { - int *value = (int*) ptr; + int *value = ptr; return sprintf(buffer,"%d\n",*value); } -static ssize_t -edac_pci_int_store(void *ptr, const char * buffer, size_t count) +static ssize_t edac_pci_int_store(void *ptr, const char *buffer, size_t count) { - int *value = (int*) ptr; + int *value = ptr; - if (isdigit(*buffer) ) { + if (isdigit(*buffer)) *value = simple_strtoul(buffer,NULL,0); - } return count; } - - struct edac_pci_dev_attribute { struct attribute attr; - void *value; + void *value; ssize_t (*show)(void *,char *); ssize_t (*store)(void *, const char *,size_t); }; /* Set of show/store abstract level functions for PCI Parity object */ -static ssize_t -edac_pci_dev_show(struct kobject * kobj, struct attribute * attr, char * buffer) +static ssize_t edac_pci_dev_show(struct kobject *kobj, struct attribute *attr, + char *buffer) { struct edac_pci_dev_attribute *edac_pci_dev; - edac_pci_dev= (struct edac_pci_dev_attribute*) attr; + edac_pci_dev= (struct edac_pci_dev_attribute*)attr; - if (edac_pci_dev->show) - return edac_pci_dev->show(edac_pci_dev->value, buffer); - return -EIO; + if (edac_pci_dev->show) + return edac_pci_dev->show(edac_pci_dev->value, buffer); + return -EIO; } - -static ssize_t -edac_pci_dev_store(struct kobject * kobj, struct attribute * attr, - const char * buffer, size_t count) +static ssize_t edac_pci_dev_store(struct kobject *kobj, struct attribute *attr, + const char *buffer, size_t count) { struct edac_pci_dev_attribute *edac_pci_dev; - edac_pci_dev= (struct edac_pci_dev_attribute*) attr; + edac_pci_dev= (struct edac_pci_dev_attribute*)attr; - if (edac_pci_dev->show) - return edac_pci_dev->store(edac_pci_dev->value, buffer, count); + if (edac_pci_dev->show) + return edac_pci_dev->store(edac_pci_dev->value, buffer, count); return -EIO; } - static struct sysfs_ops edac_pci_sysfs_ops = { - .show = edac_pci_dev_show, - .store = edac_pci_dev_store + .show = edac_pci_dev_show, + .store = edac_pci_dev_store }; - -#define EDAC_PCI_ATTR(_name,_mode,_show,_store) \ -struct edac_pci_dev_attribute edac_pci_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ +#define EDAC_PCI_ATTR(_name,_mode,_show,_store) \ +struct edac_pci_dev_attribute edac_pci_attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .value = &_name, \ - .show = _show, \ - .store = _store, \ + .show = _show, \ + .store = _store, \ }; -#define EDAC_PCI_STRING_ATTR(_name,_data,_mode,_show,_store) \ -struct edac_pci_dev_attribute edac_pci_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ +#define EDAC_PCI_STRING_ATTR(_name,_data,_mode,_show,_store) \ +struct edac_pci_dev_attribute edac_pci_attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .value = _data, \ - .show = _show, \ - .store = _store, \ + .show = _show, \ + .store = _store, \ }; - static struct list_control pci_whitelist_control = { .list = pci_whitelist, .count = &pci_whitelist_count @@ -578,8 +529,6 @@ EDAC_PCI_ATTR(check_pci_parity,S_IRUGO|S EDAC_PCI_ATTR(panic_on_pci_parity,S_IRUGO|S_IWUSR,edac_pci_int_show,edac_pci_int_store); EDAC_PCI_ATTR(pci_parity_count,S_IRUGO,edac_pci_int_show,NULL); - - /* Base Attributes of the memory ECC object */ static struct edac_pci_dev_attribute *edac_pci_attr[] = { &edac_pci_attr_check_pci_parity, @@ -591,20 +540,17 @@ static struct edac_pci_dev_attribute *ed }; /* No memory to release */ -static void -edac_pci_release(struct kobject * kobj) +static void edac_pci_release(struct kobject *kobj) { debugf1("EDAC PCI: " __FILE__ ": %s()\n", __func__); } - static struct kobj_type ktype_edac_pci = { .release = edac_pci_release, - .sysfs_ops = &edac_pci_sysfs_ops, + .sysfs_ops = &edac_pci_sysfs_ops, .default_attrs = (struct attribute **) edac_pci_attr, }; - /** * edac_sysfs_pci_setup() * @@ -615,24 +561,22 @@ static int edac_sysfs_pci_setup(void) debugf1("MC: " __FILE__ ": %s()\n", __func__); - memset(&edac_pci_kobj, 0, sizeof (edac_pci_kobj)); + memset(&edac_pci_kobj, 0, sizeof(edac_pci_kobj)); kobject_init(&edac_pci_kobj); edac_pci_kobj.parent = &edac_class.kset.kobj; edac_pci_kobj.ktype = &ktype_edac_pci; - err = kobject_set_name(&edac_pci_kobj,"pci"); + err = kobject_set_name(&edac_pci_kobj, "pci"); if (!err) { /* Instanstiate the csrow object */ /* FIXME: maybe new sysdev_create_subdir() */ err = kobject_register(&edac_pci_kobj); - if (err) { + if (err) debugf1("Failed to register '.../edac/pci'\n"); - } else { + else debugf1("Registered '.../edac/pci' kobject\n"); - } } - return err; } @@ -645,15 +589,12 @@ static void edac_sysfs_pci_teardown(void kobject_put(&edac_pci_kobj); } - - -/* EDAC sysfs CSROW data structures and methods */ - +/* EDAC sysfs CSROW data structures and methods */ /* Set of more detailed csrow attribute show/store functions */ static ssize_t csrow_ch0_dimm_label_show(struct csrow_info *csrow, char *data) { - ssize_t size=0; + ssize_t size = 0; if (csrow->nr_channels > 0) { size = snprintf(data, EDAC_MC_LABEL_LEN,"%s\n", @@ -664,7 +605,7 @@ static ssize_t csrow_ch0_dimm_label_show static ssize_t csrow_ch1_dimm_label_show(struct csrow_info *csrow, char *data) { - ssize_t size=0; + ssize_t size = 0; if (csrow->nr_channels > 0) { size = snprintf(data, EDAC_MC_LABEL_LEN, "%s\n", @@ -676,11 +617,11 @@ static ssize_t csrow_ch1_dimm_label_show static ssize_t csrow_ch0_dimm_label_store(struct csrow_info *csrow, const char *data, size_t size) { - ssize_t max_size=0; + ssize_t max_size = 0; if (csrow->nr_channels > 0) { - max_size=min((ssize_t)size,(ssize_t)EDAC_MC_LABEL_LEN-1); - strncpy( csrow->channels[0].label, data, max_size ); + max_size = min((ssize_t)size,(ssize_t)EDAC_MC_LABEL_LEN-1); + strncpy(csrow->channels[0].label, data, max_size); csrow->channels[0].label[max_size] = '\0'; } return size; @@ -689,17 +630,16 @@ static ssize_t csrow_ch0_dimm_label_stor static ssize_t csrow_ch1_dimm_label_store(struct csrow_info *csrow, const char *data, size_t size) { - ssize_t max_size=0; + ssize_t max_size = 0; if (csrow->nr_channels > 1) { - max_size=min((ssize_t)size,(ssize_t)EDAC_MC_LABEL_LEN-1); - strncpy( csrow->channels[1].label, data, max_size ); + max_size = min((ssize_t)size,(ssize_t)EDAC_MC_LABEL_LEN-1); + strncpy(csrow->channels[1].label, data, max_size); csrow->channels[1].label[max_size] = '\0'; } return max_size; } - static ssize_t csrow_ue_count_show(struct csrow_info *csrow, char *data) { return sprintf(data,"%u\n", csrow->ue_count); @@ -712,22 +652,20 @@ static ssize_t csrow_ce_count_show(struc static ssize_t csrow_ch0_ce_count_show(struct csrow_info *csrow, char *data) { - ssize_t size=0; + ssize_t size = 0; if (csrow->nr_channels > 0) { - size = sprintf(data,"%u\n", - csrow->channels[0].ce_count); + size = sprintf(data,"%u\n", csrow->channels[0].ce_count); } return size; } static ssize_t csrow_ch1_ce_count_show(struct csrow_info *csrow, char *data) { - ssize_t size=0; + ssize_t size = 0; if (csrow->nr_channels > 1) { - size = sprintf(data,"%u\n", - csrow->channels[1].ce_count); + size = sprintf(data,"%u\n", csrow->channels[1].ce_count); } return size; } @@ -737,7 +675,6 @@ static ssize_t csrow_size_show(struct cs return sprintf(data,"%u\n", PAGES_TO_MiB(csrow->nr_pages)); } - static ssize_t csrow_mem_type_show(struct csrow_info *csrow, char *data) { return sprintf(data,"%s\n", mem_types[csrow->mtype]); @@ -753,56 +690,48 @@ static ssize_t csrow_edac_mode_show(stru return sprintf(data,"%s\n", edac_caps[csrow->edac_mode]); } - - - struct csrowdev_attribute { struct attribute attr; ssize_t (*show)(struct csrow_info *,char *); ssize_t (*store)(struct csrow_info *, const char *,size_t); }; - - #define to_csrow(k) container_of(k, struct csrow_info, kobj) #define to_csrowdev_attr(a) container_of(a, struct csrowdev_attribute, attr) /* Set of show/store higher level functions for csrow objects */ -static ssize_t -csrowdev_show(struct kobject * kobj, struct attribute * attr, char * buffer) +static ssize_t csrowdev_show(struct kobject *kobj, struct attribute *attr, + char *buffer) { - struct csrow_info *csrow = to_csrow(kobj); - struct csrowdev_attribute * csrowdev_attr = to_csrowdev_attr(attr); + struct csrow_info *csrow = to_csrow(kobj); + struct csrowdev_attribute *csrowdev_attr = to_csrowdev_attr(attr); - if (csrowdev_attr->show) - return csrowdev_attr->show(csrow, buffer); - return -EIO; + if (csrowdev_attr->show) + return csrowdev_attr->show(csrow, buffer); + return -EIO; } - -static ssize_t -csrowdev_store(struct kobject * kobj, struct attribute * attr, - const char * buffer, size_t count) +static ssize_t csrowdev_store(struct kobject *kobj, struct attribute *attr, + const char *buffer, size_t count) { - struct csrow_info *csrow = to_csrow(kobj); - struct csrowdev_attribute * csrowdev_attr = to_csrowdev_attr(attr); + struct csrow_info *csrow = to_csrow(kobj); + struct csrowdev_attribute * csrowdev_attr = to_csrowdev_attr(attr); - if (csrowdev_attr->store) - return csrowdev_attr->store(csrow, buffer, count); - return -EIO; + if (csrowdev_attr->store) + return csrowdev_attr->store(csrow, buffer, count); + return -EIO; } static struct sysfs_ops csrowfs_ops = { - .show = csrowdev_show, - .store = csrowdev_store + .show = csrowdev_show, + .store = csrowdev_store }; - -#define CSROWDEV_ATTR(_name,_mode,_show,_store) \ -struct csrowdev_attribute attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ - .show = _show, \ - .store = _store, \ +#define CSROWDEV_ATTR(_name,_mode,_show,_store) \ +struct csrowdev_attribute attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ + .show = _show, \ + .store = _store, \ }; /* cwrow/attribute files */ @@ -824,7 +753,6 @@ CSROWDEV_ATTR(ch1_dimm_label,S_IRUGO|S_I csrow_ch1_dimm_label_store); - /* Attributes of the CSROW object */ static struct csrowdev_attribute *csrow_attr[] = { &attr_dev_type, @@ -842,31 +770,26 @@ static struct csrowdev_attribute *csrow_ /* No memory to release */ -static void -edac_csrow_instance_release(struct kobject * kobj) +static void edac_csrow_instance_release(struct kobject *kobj) { debugf1("EDAC MC: " __FILE__ ": %s()\n", __func__); } - static struct kobj_type ktype_csrow = { .release = edac_csrow_instance_release, - .sysfs_ops = &csrowfs_ops, + .sysfs_ops = &csrowfs_ops, .default_attrs = (struct attribute **) csrow_attr, }; - /* Create a CSROW object under specifed edac_mc_device */ -static inline int edac_create_csrow_object( - struct kobject *edac_mci_kobj, - struct csrow_info *csrow, - int index ) +static int edac_create_csrow_object(struct kobject *edac_mci_kobj, + struct csrow_info *csrow, int index ) { - int err=0; + int err = 0; debugf0("MC: " __FILE__ ": %s()\n", __func__); - memset(&csrow->kobj, 0, sizeof (csrow->kobj)); + memset(&csrow->kobj, 0, sizeof(csrow->kobj)); /* generate ..../edac/mc/mc/csrow */ @@ -879,98 +802,90 @@ static inline int edac_create_csrow_obje if (!err) { /* Instanstiate the csrow object */ err = kobject_register(&csrow->kobj); - if (err) { + if (err) debugf0("Failed to register CSROW%d\n",index); - } else { + else debugf0("Registered CSROW%d\n",index); - } } return err; } - /* sysfs data structures and methods for the MCI kobjects */ - static ssize_t mci_reset_counters_store(struct mem_ctl_info *mci, - const char *data,size_t count ) + const char *data, size_t count ) { - int row,chan; + int row, chan; - mci->ue_noinfo_count = 0; - mci->ce_noinfo_count = 0; - mci->ue_count = 0; - mci->ce_count = 0; - for (row = 0; row < mci->nr_csrows; row++) { - struct csrow_info *ri = &mci->csrows[row]; - - ri->ue_count = 0; - ri->ce_count = 0; - for (chan = 0; chan < ri->nr_channels; chan++) - ri->channels[chan].ce_count = 0; - } - mci->start_time = jiffies; + mci->ue_noinfo_count = 0; + mci->ce_noinfo_count = 0; + mci->ue_count = 0; + mci->ce_count = 0; + for (row = 0; row < mci->nr_csrows; row++) { + struct csrow_info *ri = &mci->csrows[row]; + + ri->ue_count = 0; + ri->ce_count = 0; + for (chan = 0; chan < ri->nr_channels; chan++) + ri->channels[chan].ce_count = 0; + } + mci->start_time = jiffies; return count; } - -static ssize_t mci_ue_count_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_ue_count_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%d\n", mci->ue_count); } -static ssize_t mci_ce_count_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_ce_count_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%d\n", mci->ce_count); } -static ssize_t mci_ce_noinfo_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_ce_noinfo_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%d\n", mci->ce_noinfo_count); } -static ssize_t mci_ue_noinfo_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_ue_noinfo_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%d\n", mci->ue_noinfo_count); } -static ssize_t mci_seconds_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_seconds_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%ld\n", (jiffies - mci->start_time) / HZ); } - -static ssize_t mci_mod_name_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_mod_name_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%s %s\n", mci->mod_name, mci->mod_ver); } -static ssize_t mci_ctl_name_show(struct mem_ctl_info *mci, char *data) +static ssize_t mci_ctl_name_show(struct mem_ctl_info *mci, char *data) { return sprintf(data,"%s\n", mci->ctl_name); } - -static inline int mci_output_edac_cap(char *buf, unsigned long edac_cap) +static int mci_output_edac_cap(char *buf, unsigned long edac_cap) { - char *p = buf; - int bit_idx; + char *p = buf; + int bit_idx; - for (bit_idx = 0; bit_idx < 8 * sizeof(edac_cap); bit_idx++) { - if ((edac_cap >> bit_idx) & 0x1) - p += sprintf(p, "%s ", edac_caps[bit_idx]); - } + for (bit_idx = 0; bit_idx < 8 * sizeof(edac_cap); bit_idx++) { + if ((edac_cap >> bit_idx) & 0x1) + p += sprintf(p, "%s ", edac_caps[bit_idx]); + } - return p - buf; + return p - buf; } - -static ssize_t mci_edac_capability_show( - struct mem_ctl_info *mci, char *data) +static ssize_t mci_edac_capability_show(struct mem_ctl_info *mci, char *data) { - char *p=data; + char *p = data; p += mci_output_edac_cap(p,mci->edac_ctl_cap); p += sprintf(p, "\n"); @@ -978,10 +893,10 @@ static ssize_t mci_edac_capability_show( return p - data; } -static ssize_t mci_edac_current_capability_show( - struct mem_ctl_info *mci, char *data) +static ssize_t mci_edac_current_capability_show(struct mem_ctl_info *mci, + char *data) { - char *p=data; + char *p = data; p += mci_output_edac_cap(p,mci->edac_cap); p += sprintf(p, "\n"); @@ -989,25 +904,22 @@ static ssize_t mci_edac_current_capabili return p - data; } - -static inline int mci_output_mtype_cap(char *buf, - unsigned long mtype_cap) +static int mci_output_mtype_cap(char *buf, unsigned long mtype_cap) { - char *p = buf; - int bit_idx; + char *p = buf; + int bit_idx; - for (bit_idx = 0; bit_idx < 8 * sizeof(mtype_cap); bit_idx++) { - if ((mtype_cap >> bit_idx) & 0x1) - p += sprintf(p, "%s ", mem_types[bit_idx]); - } + for (bit_idx = 0; bit_idx < 8 * sizeof(mtype_cap); bit_idx++) { + if ((mtype_cap >> bit_idx) & 0x1) + p += sprintf(p, "%s ", mem_types[bit_idx]); + } - return p - buf; + return p - buf; } -static ssize_t mci_supported_mem_type_show( - struct mem_ctl_info *mci, char *data) +static ssize_t mci_supported_mem_type_show(struct mem_ctl_info *mci, char *data) { - char *p=data; + char *p = data; p += mci_output_mtype_cap(p,mci->mtype_cap); p += sprintf(p, "\n"); @@ -1015,26 +927,22 @@ static ssize_t mci_supported_mem_type_sh return p - data; } -static ssize_t mci_size_mb_show( - struct mem_ctl_info *mci, char *data) +static ssize_t mci_size_mb_show(struct mem_ctl_info *mci, char *data) { int total_pages, csrow_idx; - for (total_pages = csrow_idx = 0; csrow_idx < mci->nr_csrows; - csrow_idx++) { - struct csrow_info *csrow = &mci->csrows[csrow_idx]; - - if (!csrow->nr_pages) - continue; - total_pages += csrow->nr_pages; - } + for (total_pages = csrow_idx = 0; csrow_idx < mci->nr_csrows; + csrow_idx++) { + struct csrow_info *csrow = &mci->csrows[csrow_idx]; + + if (!csrow->nr_pages) + continue; + total_pages += csrow->nr_pages; + } return sprintf(data,"%u\n", PAGES_TO_MiB(total_pages)); } - - - struct mcidev_attribute { struct attribute attr; ssize_t (*show)(struct mem_ctl_info *,char *); @@ -1044,44 +952,40 @@ struct mcidev_attribute { #define to_mci(k) container_of(k, struct mem_ctl_info, edac_mci_kobj) #define to_mcidev_attr(a) container_of(a, struct mcidev_attribute, attr) -static ssize_t -mcidev_show(struct kobject * kobj, struct attribute * attr, char * buffer) +static ssize_t mcidev_show(struct kobject *kobj, struct attribute *attr, + char *buffer) { - struct mem_ctl_info *mem_ctl_info = to_mci(kobj); - struct mcidev_attribute * mcidev_attr = to_mcidev_attr(attr); + struct mem_ctl_info *mem_ctl_info = to_mci(kobj); + struct mcidev_attribute * mcidev_attr = to_mcidev_attr(attr); - if (mcidev_attr->show) - return mcidev_attr->show(mem_ctl_info, buffer); - return -EIO; + if (mcidev_attr->show) + return mcidev_attr->show(mem_ctl_info, buffer); + return -EIO; } -static ssize_t -mcidev_store(struct kobject * kobj, struct attribute * attr, - const char * buffer, size_t count) +static ssize_t mcidev_store(struct kobject *kobj, struct attribute *attr, + const char *buffer, size_t count) { - struct mem_ctl_info *mem_ctl_info = to_mci(kobj); - struct mcidev_attribute * mcidev_attr = to_mcidev_attr(attr); + struct mem_ctl_info *mem_ctl_info = to_mci(kobj); + struct mcidev_attribute * mcidev_attr = to_mcidev_attr(attr); - if (mcidev_attr->store) - return mcidev_attr->store(mem_ctl_info, buffer, count); - return -EIO; + if (mcidev_attr->store) + return mcidev_attr->store(mem_ctl_info, buffer, count); + return -EIO; } - static struct sysfs_ops mci_ops = { - .show = mcidev_show, - .store = mcidev_store + .show = mcidev_show, + .store = mcidev_store }; - -#define MCIDEV_ATTR(_name,_mode,_show,_store) \ -struct mcidev_attribute mci_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode }, \ - .show = _show, \ - .store = _store, \ +#define MCIDEV_ATTR(_name,_mode,_show,_store) \ +struct mcidev_attribute mci_attr_##_name = { \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ + .show = _show, \ + .store = _store, \ }; - /* Control file */ MCIDEV_ATTR(reset_counters,S_IWUSR,NULL,mci_reset_counters_store); @@ -1101,8 +1005,6 @@ MCIDEV_ATTR(supported_mem_type,S_IRUGO, mci_supported_mem_type_show,NULL); - - static struct mcidev_attribute *mci_attr[] = { &mci_attr_reset_counters, &mci_attr_module_name, @@ -1123,25 +1025,23 @@ static struct mcidev_attribute *mci_attr /* * Release of a MC controlling instance */ -static void -edac_mci_instance_release(struct kobject * kobj) +static void edac_mci_instance_release(struct kobject *kobj) { struct mem_ctl_info *mci; mci = container_of(kobj,struct mem_ctl_info,edac_mci_kobj); - debugf0("MC: " __FILE__ ": %s() idx=%d calling kfree\n", __func__, mci->mc_idx); + debugf0("MC: " __FILE__ ": %s() idx=%d calling kfree\n", + __func__, mci->mc_idx); kfree(mci); } - static struct kobj_type ktype_mci = { .release = edac_mci_instance_release, - .sysfs_ops = &mci_ops, + .sysfs_ops = &mci_ops, .default_attrs = (struct attribute **) mci_attr, }; - #define EDAC_DEVICE_SYMLINK "device" /* @@ -1157,11 +1057,11 @@ static int edac_create_sysfs_mci_device( int i; int err; struct csrow_info *csrow; - struct kobject *edac_mci_kobj=&mci->edac_mci_kobj; + struct kobject *edac_mci_kobj=&mci->edac_mci_kobj; debugf0("MC: " __FILE__ ": %s() idx=%d\n", __func__, mci->mc_idx); - memset(edac_mci_kobj, 0, sizeof (*edac_mci_kobj)); + memset(edac_mci_kobj, 0, sizeof(*edac_mci_kobj)); kobject_init(edac_mci_kobj); /* set the name of the mc object */ @@ -1179,10 +1079,8 @@ static int edac_create_sysfs_mci_device( return err; /* create a symlink for the device */ - err = sysfs_create_link( - edac_mci_kobj, - &mci->pdev->dev.kobj, - EDAC_DEVICE_SYMLINK); + err = sysfs_create_link(edac_mci_kobj, &mci->pdev->dev.kobj, + EDAC_DEVICE_SYMLINK); if (err) { kobject_unregister(edac_mci_kobj); return err; @@ -1224,7 +1122,6 @@ fail: return err; } - /* * remove a Memory Controller instance */ @@ -1250,19 +1147,17 @@ static void edac_remove_sysfs_mci_device /* END OF sysfs data and methods */ - - #ifdef CONFIG_EDAC_DEBUG EXPORT_SYMBOL(edac_mc_dump_channel); void edac_mc_dump_channel(struct channel_info *chan) { - debugf4( "\tchannel = %p\n", chan); - debugf4( "\tchannel->chan_idx = %d\n", chan->chan_idx); - debugf4( "\tchannel->ce_count = %d\n", chan->ce_count); - debugf4( "\tchannel->label = '%s'\n", chan->label); - debugf4( "\tchannel->csrow = %p\n\n", chan->csrow); + debugf4("\tchannel = %p\n", chan); + debugf4("\tchannel->chan_idx = %d\n", chan->chan_idx); + debugf4("\tchannel->ce_count = %d\n", chan->ce_count); + debugf4("\tchannel->label = '%s'\n", chan->label); + debugf4("\tchannel->csrow = %p\n\n", chan->csrow); } @@ -1270,17 +1165,17 @@ EXPORT_SYMBOL(edac_mc_dump_csrow); void edac_mc_dump_csrow(struct csrow_info *csrow) { - debugf4( "\tcsrow = %p\n", csrow); - debugf4( "\tcsrow->csrow_idx = %d\n", csrow->csrow_idx); - debugf4( "\tcsrow->first_page = 0x%lx\n", - csrow->first_page); - debugf4( "\tcsrow->last_page = 0x%lx\n", csrow->last_page); - debugf4( "\tcsrow->page_mask = 0x%lx\n", csrow->page_mask); - debugf4( "\tcsrow->nr_pages = 0x%x\n", csrow->nr_pages); - debugf4( "\tcsrow->nr_channels = %d\n", - csrow->nr_channels); - debugf4( "\tcsrow->channels = %p\n", csrow->channels); - debugf4( "\tcsrow->mci = %p\n\n", csrow->mci); + debugf4("\tcsrow = %p\n", csrow); + debugf4("\tcsrow->csrow_idx = %d\n", csrow->csrow_idx); + debugf4("\tcsrow->first_page = 0x%lx\n", + csrow->first_page); + debugf4("\tcsrow->last_page = 0x%lx\n", csrow->last_page); + debugf4("\tcsrow->page_mask = 0x%lx\n", csrow->page_mask); + debugf4("\tcsrow->nr_pages = 0x%x\n", csrow->nr_pages); + debugf4("\tcsrow->nr_channels = %d\n", + csrow->nr_channels); + debugf4("\tcsrow->channels = %p\n", csrow->channels); + debugf4("\tcsrow->mci = %p\n\n", csrow->mci); } @@ -1288,17 +1183,17 @@ EXPORT_SYMBOL(edac_mc_dump_mci); void edac_mc_dump_mci(struct mem_ctl_info *mci) { - debugf3( "\tmci = %p\n", mci); - debugf3( "\tmci->mtype_cap = %lx\n", mci->mtype_cap); - debugf3( "\tmci->edac_ctl_cap = %lx\n", mci->edac_ctl_cap); - debugf3( "\tmci->edac_cap = %lx\n", mci->edac_cap); - debugf4( "\tmci->edac_check = %p\n", mci->edac_check); - debugf3( "\tmci->nr_csrows = %d, csrows = %p\n", - mci->nr_csrows, mci->csrows); - debugf3( "\tpdev = %p\n", mci->pdev); - debugf3( "\tmod_name:ctl_name = %s:%s\n", - mci->mod_name, mci->ctl_name); - debugf3( "\tpvt_info = %p\n\n", mci->pvt_info); + debugf3("\tmci = %p\n", mci); + debugf3("\tmci->mtype_cap = %lx\n", mci->mtype_cap); + debugf3("\tmci->edac_ctl_cap = %lx\n", mci->edac_ctl_cap); + debugf3("\tmci->edac_cap = %lx\n", mci->edac_cap); + debugf4("\tmci->edac_check = %p\n", mci->edac_check); + debugf3("\tmci->nr_csrows = %d, csrows = %p\n", + mci->nr_csrows, mci->csrows); + debugf3("\tpdev = %p\n", mci->pdev); + debugf3("\tmod_name:ctl_name = %s:%s\n", + mci->mod_name, mci->ctl_name); + debugf3("\tpvt_info = %p\n\n", mci->pvt_info); } @@ -1373,10 +1268,9 @@ struct mem_ctl_info *edac_mc_alloc(unsig * hardcode everything into a single struct. */ mci = (struct mem_ctl_info *) 0; - csi = (struct csrow_info *) - align_ptr(&mci[1], sizeof(*csi)); + csi = (struct csrow_info *)align_ptr(&mci[1], sizeof(*csi)); chi = (struct channel_info *) - align_ptr(&csi[nr_csrows], sizeof(*chi)); + align_ptr(&csi[nr_csrows], sizeof(*chi)); pvt = align_ptr(&chi[nr_chans * nr_csrows], sz_pvt); size = ((unsigned long) pvt) + sz_pvt; @@ -1480,9 +1374,9 @@ static int add_mc_to_global_list (struct } else { if (edac_mc_find_mci_by_pdev(mci->pdev)) { printk(KERN_WARNING - "EDAC MC: %s (%s) %s %s already assigned %d\n", - mci->pdev->dev.bus_id, pci_name(mci->pdev), - mci->mod_name, mci->ctl_name, mci->mc_idx); + "EDAC MC: %s (%s) %s %s already assigned %d\n", + mci->pdev->dev.bus_id, pci_name(mci->pdev), + mci->mod_name, mci->ctl_name, mci->mc_idx); return 1; } @@ -1854,8 +1748,7 @@ void edac_mc_handle_ue_no_info(struct me #ifdef CONFIG_PCI - -static inline u16 get_pci_parity_status(struct pci_dev *dev, int secondary) +static u16 get_pci_parity_status(struct pci_dev *dev, int secondary) { int where; u16 status; @@ -1872,10 +1765,8 @@ static inline u16 get_pci_parity_status( return status; } - typedef void (*pci_parity_check_fn_t) (struct pci_dev *dev); - /* Clear any PCI parity errors logged by this device. */ static void edac_pci_dev_parity_clear( struct pci_dev *dev ) { @@ -1890,12 +1781,11 @@ static void edac_pci_dev_parity_clear( s get_pci_parity_status(dev, 1); } - /* * PCI Parity polling * */ -static inline void edac_pci_dev_parity_test( struct pci_dev *dev ) +static void edac_pci_dev_parity_test(struct pci_dev *dev) { u16 status; u8 header_type; @@ -1938,11 +1828,12 @@ static inline void edac_pci_dev_parity_t debugf2("PCI HEADER TYPE= 0x%02x %s\n", header_type, dev->dev.bus_id ); - if( (header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE ) { + if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { /* On bridges, need to examine secondary status register */ status = get_pci_parity_status(dev, 1); - debugf2("PCI SEC_STATUS= 0x%04x %s\n", status, dev->dev.bus_id ); + debugf2("PCI SEC_STATUS= 0x%04x %s\n", + status, dev->dev.bus_id ); /* check the secondary status reg for errors */ if (status) { @@ -1973,7 +1864,6 @@ static inline void edac_pci_dev_parity_t } } - /* * check_dev_on_list: Scan for a PCI device on a white/black list * @list: an EDAC &edac_pci_device_list white/black list pointer @@ -1985,9 +1875,8 @@ static inline void edac_pci_dev_parity_t * Returns: 0 not found * 1 found on list */ -static int check_dev_on_list( struct edac_pci_device_list *list, - int free_index, - struct pci_dev *dev ) +static int check_dev_on_list(struct edac_pci_device_list *list, int free_index, + struct pci_dev *dev) { int i; int rc = 0; /* Assume not found */ @@ -2007,7 +1896,6 @@ static int check_dev_on_list( struct e return rc; } - /* * pci_dev parity list iterator * Scan the PCI device list for one iteration, looking for SERRORs @@ -2027,17 +1915,21 @@ static inline void edac_pci_dev_parity_i * devices on the whitelist */ if (pci_whitelist_count > 0 ) { - if ( check_dev_on_list( pci_whitelist, pci_whitelist_count, dev ) ) + if (check_dev_on_list(pci_whitelist, + pci_whitelist_count, dev)) fn(dev); } else { - /* if no whitelist, then check if this devices is blacklisted */ - if ( !check_dev_on_list( pci_blacklist, pci_blacklist_count, dev ) ) + /* + * if no whitelist, then check if this devices is + * blacklisted + */ + if (!check_dev_on_list(pci_blacklist, + pci_blacklist_count, dev)) fn(dev); } } } - static void do_pci_parity_check(void) { unsigned long flags; @@ -2092,10 +1984,6 @@ static inline void clear_pci_parity_erro #endif /* CONFIG_PCI */ - - - - /* * Iterate over all MC instances and check for ECC, et al, errors */ _