Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217360
b: refs/heads/master
c: 1288c18
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Oct 24, 2010
1 parent da51fd9 commit 2bc4ae1
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 18c29002f95bc2f67c1c78d7fc7932843aa66657
refs/heads/master: 1288c18f48d9bf373dbed6b688cde36dc970b1ed
8 changes: 4 additions & 4 deletions trunk/drivers/edac/edac_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -328,15 +328,15 @@ struct csrow_info {

struct mcidev_sysfs_group {
const char *name; /* group name */
struct mcidev_sysfs_attribute *mcidev_attr; /* group attributes */
const struct mcidev_sysfs_attribute *mcidev_attr; /* group attributes */
};

struct mcidev_sysfs_group_kobj {
struct list_head list; /* list for all instances within a mc */

struct kobject kobj; /* kobj for the group */

struct mcidev_sysfs_group *grp; /* group description table */
const struct mcidev_sysfs_group *grp; /* group description table */
struct mem_ctl_info *mci; /* the parent */
};

Expand All @@ -347,7 +347,7 @@ struct mcidev_sysfs_group_kobj {
struct mcidev_sysfs_attribute {
/* It should use either attr or grp */
struct attribute attr;
struct mcidev_sysfs_group *grp; /* Points to a group of attributes */
const struct mcidev_sysfs_group *grp; /* Points to a group of attributes */

/* Ops for show/store values at the attribute - not used on group */
ssize_t (*show)(struct mem_ctl_info *,char *);
Expand Down Expand Up @@ -440,7 +440,7 @@ struct mem_ctl_info {
* If attributes are desired, then set to array of attributes
* If no attributes are desired, leave NULL
*/
struct mcidev_sysfs_attribute *mc_driver_sysfs_attributes;
const struct mcidev_sysfs_attribute *mc_driver_sysfs_attributes;

/* work struct for this MC */
struct delayed_work work;
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/edac/edac_mc_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -783,7 +783,7 @@ static struct kobj_type ktype_inst_grp = {
* object tree.
*/
static int edac_create_mci_instance_attributes(struct mem_ctl_info *mci,
struct mcidev_sysfs_attribute *sysfs_attrib,
const struct mcidev_sysfs_attribute *sysfs_attrib,
struct kobject *kobj)
{
int err;
Expand Down Expand Up @@ -842,7 +842,7 @@ static int edac_create_mci_instance_attributes(struct mem_ctl_info *mci,
* directory of this mci instance.
*/
static void edac_remove_mci_instance_attributes(struct mem_ctl_info *mci,
struct mcidev_sysfs_attribute *sysfs_attrib,
const struct mcidev_sysfs_attribute *sysfs_attrib,
struct kobject *kobj, int count)
{
struct mcidev_sysfs_group_kobj *grp_kobj, *tmp;
Expand Down
117 changes: 77 additions & 40 deletions trunk/drivers/edac/i7core_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ struct pci_id_descr {
};

struct pci_id_table {
struct pci_id_descr *descr;
int n_devs;
const struct pci_id_descr *descr;
int n_devs;
};

struct i7core_dev {
Expand Down Expand Up @@ -276,7 +276,7 @@ struct i7core_pvt {
.func = (function), \
.dev_id = (device_id)

struct pci_id_descr pci_dev_descr_i7core_nehalem[] = {
static const struct pci_id_descr pci_dev_descr_i7core_nehalem[] = {
/* Memory controller */
{ PCI_DESCR(3, 0, PCI_DEVICE_ID_INTEL_I7_MCR) },
{ PCI_DESCR(3, 1, PCI_DEVICE_ID_INTEL_I7_MC_TAD) },
Expand Down Expand Up @@ -313,7 +313,7 @@ struct pci_id_descr pci_dev_descr_i7core_nehalem[] = {

};

struct pci_id_descr pci_dev_descr_lynnfield[] = {
static const struct pci_id_descr pci_dev_descr_lynnfield[] = {
{ PCI_DESCR( 3, 0, PCI_DEVICE_ID_INTEL_LYNNFIELD_MCR) },
{ PCI_DESCR( 3, 1, PCI_DEVICE_ID_INTEL_LYNNFIELD_MC_TAD) },
{ PCI_DESCR( 3, 4, PCI_DEVICE_ID_INTEL_LYNNFIELD_MC_TEST) },
Expand All @@ -335,7 +335,7 @@ struct pci_id_descr pci_dev_descr_lynnfield[] = {
{ PCI_DESCR( 0, 0, PCI_DEVICE_ID_INTEL_LYNNFIELD_NONCORE) },
};

struct pci_id_descr pci_dev_descr_i7core_westmere[] = {
static const struct pci_id_descr pci_dev_descr_i7core_westmere[] = {
/* Memory controller */
{ PCI_DESCR(3, 0, PCI_DEVICE_ID_INTEL_LYNNFIELD_MCR_REV2) },
{ PCI_DESCR(3, 1, PCI_DEVICE_ID_INTEL_LYNNFIELD_MC_TAD_REV2) },
Expand Down Expand Up @@ -366,8 +366,8 @@ struct pci_id_descr pci_dev_descr_i7core_westmere[] = {

};

#define PCI_ID_TABLE_ENTRY(A) { A, ARRAY_SIZE(A) }
struct pci_id_table pci_dev_table[] = {
#define PCI_ID_TABLE_ENTRY(A) { .descr=A, .n_devs = ARRAY_SIZE(A) }
static const struct pci_id_table pci_dev_table[] = {
PCI_ID_TABLE_ENTRY(pci_dev_descr_i7core_nehalem),
PCI_ID_TABLE_ENTRY(pci_dev_descr_lynnfield),
PCI_ID_TABLE_ENTRY(pci_dev_descr_i7core_westmere),
Expand Down Expand Up @@ -486,7 +486,7 @@ static struct pci_dev *get_pdev_slot_func(u8 socket, unsigned slot,
* to add a fake description for csrows.
* So, this driver is attributing one DIMM memory for one csrow.
*/
static int i7core_get_active_channels(u8 socket, unsigned *channels,
static int i7core_get_active_channels(const u8 socket, unsigned *channels,
unsigned *csrows)
{
struct pci_dev *pdev = NULL;
Expand Down Expand Up @@ -547,7 +547,7 @@ static int i7core_get_active_channels(u8 socket, unsigned *channels,
return 0;
}

static int get_dimm_config(struct mem_ctl_info *mci, int *csrow)
static int get_dimm_config(const struct mem_ctl_info *mci, int *csrow)
{
struct i7core_pvt *pvt = mci->pvt_info;
struct csrow_info *csr;
Expand Down Expand Up @@ -738,7 +738,7 @@ static int get_dimm_config(struct mem_ctl_info *mci, int *csrow)
we're disabling error injection on all write calls to the sysfs nodes that
controls the error code injection.
*/
static int disable_inject(struct mem_ctl_info *mci)
static int disable_inject(const struct mem_ctl_info *mci)
{
struct i7core_pvt *pvt = mci->pvt_info;

Expand Down Expand Up @@ -923,7 +923,7 @@ DECLARE_ADDR_MATCH(bank, 32);
DECLARE_ADDR_MATCH(page, 0x10000);
DECLARE_ADDR_MATCH(col, 0x4000);

static int write_and_test(struct pci_dev *dev, int where, u32 val)
static int write_and_test(struct pci_dev *dev, const int where, const u32 val)
{
u32 read;
int count;
Expand Down Expand Up @@ -1122,35 +1122,34 @@ DECLARE_COUNTER(2);
* Sysfs struct
*/


static struct mcidev_sysfs_attribute i7core_addrmatch_attrs[] = {
static const struct mcidev_sysfs_attribute i7core_addrmatch_attrs[] = {
ATTR_ADDR_MATCH(channel),
ATTR_ADDR_MATCH(dimm),
ATTR_ADDR_MATCH(rank),
ATTR_ADDR_MATCH(bank),
ATTR_ADDR_MATCH(page),
ATTR_ADDR_MATCH(col),
{ .attr = { .name = NULL } }
{ } /* End of list */
};

static struct mcidev_sysfs_group i7core_inject_addrmatch = {
static const struct mcidev_sysfs_group i7core_inject_addrmatch = {
.name = "inject_addrmatch",
.mcidev_attr = i7core_addrmatch_attrs,
};

static struct mcidev_sysfs_attribute i7core_udimm_counters_attrs[] = {
static const struct mcidev_sysfs_attribute i7core_udimm_counters_attrs[] = {
ATTR_COUNTER(0),
ATTR_COUNTER(1),
ATTR_COUNTER(2),
{ .attr = { .name = NULL } }
};

static struct mcidev_sysfs_group i7core_udimm_counters = {
static const struct mcidev_sysfs_group i7core_udimm_counters = {
.name = "all_channel_counts",
.mcidev_attr = i7core_udimm_counters_attrs,
};

static struct mcidev_sysfs_attribute i7core_sysfs_attrs[] = {
static const struct mcidev_sysfs_attribute i7core_sysfs_rdimm_attrs[] = {
{
.attr = {
.name = "inject_section",
Expand Down Expand Up @@ -1182,8 +1181,44 @@ static struct mcidev_sysfs_attribute i7core_sysfs_attrs[] = {
.show = i7core_inject_enable_show,
.store = i7core_inject_enable_store,
},
{ .attr = { .name = NULL } }, /* Reserved for udimm counters */
{ .attr = { .name = NULL } }
{ } /* End of list */
};

static const struct mcidev_sysfs_attribute i7core_sysfs_udimm_attrs[] = {
{
.attr = {
.name = "inject_section",
.mode = (S_IRUGO | S_IWUSR)
},
.show = i7core_inject_section_show,
.store = i7core_inject_section_store,
}, {
.attr = {
.name = "inject_type",
.mode = (S_IRUGO | S_IWUSR)
},
.show = i7core_inject_type_show,
.store = i7core_inject_type_store,
}, {
.attr = {
.name = "inject_eccmask",
.mode = (S_IRUGO | S_IWUSR)
},
.show = i7core_inject_eccmask_show,
.store = i7core_inject_eccmask_store,
}, {
.grp = &i7core_inject_addrmatch,
}, {
.attr = {
.name = "inject_enable",
.mode = (S_IRUGO | S_IWUSR)
},
.show = i7core_inject_enable_show,
.store = i7core_inject_enable_store,
}, {
.grp = &i7core_udimm_counters,
},
{ } /* End of list */
};

/****************************************************************************
Expand Down Expand Up @@ -1221,7 +1256,7 @@ static void i7core_put_all_devices(void)
i7core_put_devices(i7core_dev);
}

static void __init i7core_xeon_pci_fixup(struct pci_id_table *table)
static void __init i7core_xeon_pci_fixup(const struct pci_id_table *table)
{
struct pci_dev *pdev = NULL;
int i;
Expand Down Expand Up @@ -1264,9 +1299,10 @@ static unsigned i7core_pci_lastbus(void)
*
* Need to 'get' device 16 func 1 and func 2
*/
int i7core_get_onedevice(struct pci_dev **prev, int devno,
struct pci_id_descr *dev_descr, unsigned n_devs,
unsigned last_bus)
int i7core_get_onedevice(struct pci_dev **prev, const int devno,
const struct pci_id_descr *dev_descr,
const unsigned n_devs,
const unsigned last_bus)
{
struct i7core_dev *i7core_dev;

Expand Down Expand Up @@ -1375,11 +1411,11 @@ int i7core_get_onedevice(struct pci_dev **prev, int devno,
return 0;
}

static int i7core_get_devices(struct pci_id_table *table)
static int i7core_get_devices(const struct pci_id_table *table)
{
int i, rc, last_bus;
struct pci_dev *pdev = NULL;
struct pci_id_descr *dev_descr;
const struct pci_id_descr *dev_descr;

last_bus = i7core_pci_lastbus();

Expand Down Expand Up @@ -1450,15 +1486,6 @@ static int mci_bind_devs(struct mem_ctl_info *mci,
pvt->is_registered = 1;
}

/*
* Add extra nodes to count errors on udimm
* For registered memory, this is not needed, since the counters
* are already displayed at the standard locations
*/
if (!pvt->is_registered)
i7core_sysfs_attrs[ARRAY_SIZE(i7core_sysfs_attrs)-2].grp =
&i7core_udimm_counters;

return 0;

error:
Expand All @@ -1472,7 +1499,9 @@ static int mci_bind_devs(struct mem_ctl_info *mci,
Error check routines
****************************************************************************/
static void i7core_rdimm_update_csrow(struct mem_ctl_info *mci,
int chan, int dimm, int add)
const int chan,
const int dimm,
const int add)
{
char *msg;
struct i7core_pvt *pvt = mci->pvt_info;
Expand All @@ -1489,7 +1518,10 @@ static void i7core_rdimm_update_csrow(struct mem_ctl_info *mci,
}

static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci,
int chan, int new0, int new1, int new2)
const int chan,
const int new0,
const int new1,
const int new2)
{
struct i7core_pvt *pvt = mci->pvt_info;
int add0 = 0, add1 = 0, add2 = 0;
Expand Down Expand Up @@ -1643,7 +1675,7 @@ static void i7core_udimm_check_mc_ecc_err(struct mem_ctl_info *mci)
* fields
*/
static void i7core_mce_output_error(struct mem_ctl_info *mci,
struct mce *m)
const struct mce *m)
{
struct i7core_pvt *pvt = mci->pvt_info;
char *type, *optype, *err, *msg;
Expand Down Expand Up @@ -1848,7 +1880,7 @@ static int i7core_mce_check_error(void *priv, struct mce *mce)
}

static int i7core_register_mci(struct i7core_dev *i7core_dev,
int num_channels, int num_csrows)
const int num_channels, const int num_csrows)
{
struct mem_ctl_info *mci;
struct i7core_pvt *pvt;
Expand Down Expand Up @@ -1883,7 +1915,12 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev,
i7core_dev->socket);
mci->dev_name = pci_name(i7core_dev->pdev[0]);
mci->ctl_page_to_phys = NULL;
mci->mc_driver_sysfs_attributes = i7core_sysfs_attrs;

if (pvt->is_registered)
mci->mc_driver_sysfs_attributes = i7core_sysfs_rdimm_attrs;
else
mci->mc_driver_sysfs_attributes = i7core_sysfs_udimm_attrs;

/* Set the function pointer to an actual operation function */
mci->edac_check = i7core_check_error;

Expand Down

0 comments on commit 2bc4ae1

Please sign in to comment.