Skip to content

Commit

Permalink
edac: Remove the legacy EDAC ABI
Browse files Browse the repository at this point in the history
Now that all drivers got converted to use the new ABI, we can
drop the old one.

Acked-by: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed May 28, 2012
1 parent e2acc35 commit ca0907b
Show file tree
Hide file tree
Showing 27 changed files with 32 additions and 151 deletions.
2 changes: 1 addition & 1 deletion drivers/edac/amd64_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -2596,7 +2596,7 @@ static int amd64_init_one_instance(struct pci_dev *F2)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = pvt->channel_count;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, 0);
if (!mci)
goto err_siblings;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/amd76x_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ static int amd76x_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = 1;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);

if (mci == NULL)
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/cell_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ static int __devinit cell_edac_probe(struct platform_device *pdev)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = num_chans;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(pdev->id, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(pdev->id, ARRAY_SIZE(layers), layers,
sizeof(struct cell_edac_priv));
if (mci == NULL)
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/cpc925_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -982,7 +982,7 @@ static int __devinit cpc925_probe(struct platform_device *pdev)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = nr_channels;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers,
sizeof(struct cpc925_mc_pdata));
if (!mci) {
cpc925_printk(KERN_ERR, "No memory for mem_ctl_info\n");
Expand Down
3 changes: 1 addition & 2 deletions drivers/edac/e752x_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1278,8 +1278,7 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = drc_chan + 1;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
sizeof(*pvt));
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (mci == NULL)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/e7xxx_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ static int e7xxx_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = drc_chan + 1;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (mci == NULL)
return -ENOMEM;

Expand Down
76 changes: 1 addition & 75 deletions drivers/edac/edac_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,7 @@ static inline void pci_write_bits32(struct pci_dev *pdev, int offset,

#endif /* CONFIG_PCI */

struct mem_ctl_info *edac_mc_alloc(unsigned sz_pvt, unsigned nr_csrows,
unsigned nr_chans, int edac_index);
struct mem_ctl_info *new_edac_mc_alloc(unsigned edac_index,
struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
unsigned n_layers,
struct edac_mc_layer *layers,
unsigned sz_pvt);
Expand All @@ -460,18 +458,6 @@ extern struct mem_ctl_info *find_mci_by_dev(struct device *dev);
extern struct mem_ctl_info *edac_mc_del_mc(struct device *dev);
extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
unsigned long page);

/*
* The no info errors are used when error overflows are reported.
* There are a limited number of error logging registers that can
* be exausted. When all registers are exhausted and an additional
* error occurs then an error overflow register records that an
* error occurred and the type of error, but doesn't have any
* further information. The ce/ue versions make for cleaner
* reporting logic and function interface - reduces conditional
* statement clutter and extra function arguments.
*/

void edac_mc_handle_error(const enum hw_event_mc_err_type type,
struct mem_ctl_info *mci,
const unsigned long page_frame_number,
Expand All @@ -484,66 +470,6 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,
const char *other_detail,
const void *mcelog);

static inline void edac_mc_handle_ce(struct mem_ctl_info *mci,
unsigned long page_frame_number,
unsigned long offset_in_page,
unsigned long syndrome, int row, int channel,
const char *msg)
{
edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci,
page_frame_number, offset_in_page, syndrome,
row, channel, -1, msg, NULL, NULL);
}

static inline void edac_mc_handle_ce_no_info(struct mem_ctl_info *mci,
const char *msg)
{
edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci,
0, 0, 0, -1, -1, -1, msg, NULL, NULL);
}

static inline void edac_mc_handle_ue(struct mem_ctl_info *mci,
unsigned long page_frame_number,
unsigned long offset_in_page, int row,
const char *msg)
{
edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci,
page_frame_number, offset_in_page, 0,
row, -1, -1, msg, NULL, NULL);
}

static inline void edac_mc_handle_ue_no_info(struct mem_ctl_info *mci,
const char *msg)
{
edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci,
0, 0, 0, -1, -1, -1, msg, NULL, NULL);
}

static inline void edac_mc_handle_fbd_ue(struct mem_ctl_info *mci,
unsigned int csrow,
unsigned int channel0,
unsigned int channel1,
char *msg)
{
/*
*FIXME: The error can also be at channel1 (e. g. at the second
* channel of the same branch). The fix is to push
* edac_mc_handle_error() call into each driver
*/
edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci,
0, 0, 0,
csrow, channel0, -1, msg, NULL, NULL);
}

static inline void edac_mc_handle_fbd_ce(struct mem_ctl_info *mci,
unsigned int csrow,
unsigned int channel, char *msg)
{
edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci,
0, 0, 0,
csrow, channel, -1, msg, NULL, NULL);
}

/*
* edac_device APIs
*/
Expand Down
52 changes: 6 additions & 46 deletions drivers/edac/edac_mc.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,13 @@ void *edac_align_ptr(void **p, unsigned size, int n_elems)
* on such scenarios, as grouping the multiple ranks require drivers change.
*
* Returns:
* NULL allocation failed
* struct mem_ctl_info pointer
* On failure: NULL
* On success: struct mem_ctl_info pointer
*/
struct mem_ctl_info *new_edac_mc_alloc(unsigned mc_num,
unsigned n_layers,
struct edac_mc_layer *layers,
unsigned sz_pvt)
struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
unsigned n_layers,
struct edac_mc_layer *layers,
unsigned sz_pvt)
{
struct mem_ctl_info *mci;
struct edac_mc_layer *layer;
Expand Down Expand Up @@ -370,46 +370,6 @@ struct mem_ctl_info *new_edac_mc_alloc(unsigned mc_num,
*/
return mci;
}
EXPORT_SYMBOL_GPL(new_edac_mc_alloc);

/**
* edac_mc_alloc: Allocate and partially fill a struct mem_ctl_info structure
* @mc_num: Memory controller number
* @n_layers: Number of layers at the MC hierarchy
* layers: Describes each layer as seen by the Memory Controller
* @size_pvt: Size of private storage needed
*
*
* FIXME: drivers handle multi-rank memories in different ways: some
* drivers map multi-ranked DIMMs as one DIMM while others
* as several DIMMs.
*
* Everything is kmalloc'ed as one big chunk - more efficient.
* It can only be used if all structures have the same lifetime - otherwise
* you have to allocate and initialize your own structures.
*
* Use edac_mc_free() to free mc structures allocated by this function.
*
* Returns:
* On failure: NULL
* On success: struct mem_ctl_info pointer
*/

struct mem_ctl_info *edac_mc_alloc(unsigned sz_pvt, unsigned nr_csrows,
unsigned nr_chans, int mc_num)
{
unsigned n_layers = 2;
struct edac_mc_layer layers[n_layers];

layers[0].type = EDAC_MC_LAYER_CHIP_SELECT;
layers[0].size = nr_csrows;
layers[0].is_virt_csrow = true;
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = nr_chans;
layers[1].is_virt_csrow = false;

return new_edac_mc_alloc(mc_num, ARRAY_SIZE(layers), layers, sz_pvt);
}
EXPORT_SYMBOL_GPL(edac_mc_alloc);

/**
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i3000_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ static int i3000_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = nr_channels;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (!mci)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i3200_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = nr_channels;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
sizeof(struct i3200_priv));
if (!mci)
return -ENOMEM;
Expand Down
3 changes: 1 addition & 2 deletions drivers/edac/i5000_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1396,8 +1396,7 @@ static int i5000_probe1(struct pci_dev *pdev, int dev_idx)
layers[2].type = EDAC_MC_LAYER_SLOT;
layers[2].size = num_dimms_per_channel;
layers[2].is_virt_csrow = true;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));

mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (mci == NULL)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i5100_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,7 @@ static int __devinit i5100_init_one(struct pci_dev *pdev,
layers[1].type = EDAC_MC_LAYER_SLOT;
layers[1].size = ranksperch;
layers[1].is_virt_csrow = true;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
sizeof(*priv));
if (!mci) {
ret = -ENOMEM;
Expand Down
3 changes: 1 addition & 2 deletions drivers/edac/i5400_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1280,8 +1280,7 @@ static int i5400_probe1(struct pci_dev *pdev, int dev_idx)
layers[2].type = EDAC_MC_LAYER_SLOT;
layers[2].size = DIMMS_PER_CHANNEL;
layers[2].is_virt_csrow = true;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));

mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (mci == NULL)
return -ENOMEM;

Expand Down
3 changes: 1 addition & 2 deletions drivers/edac/i7300_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,7 @@ static int __devinit i7300_init_one(struct pci_dev *pdev,
layers[2].type = EDAC_MC_LAYER_SLOT;
layers[2].size = MAX_SLOTS;
layers[2].is_virt_csrow = true;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));

mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (mci == NULL)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i7core_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -2147,7 +2147,7 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev)
layers[1].type = EDAC_MC_LAYER_SLOT;
layers[1].size = MAX_DIMMS;
layers[1].is_virt_csrow = true;
mci = new_edac_mc_alloc(i7core_dev->socket, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(i7core_dev->socket, ARRAY_SIZE(layers), layers,
sizeof(*pvt));
if (unlikely(!mci))
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i82443bxgx_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ static int i82443bxgx_edacmc_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = I82443BXGX_NR_CHANS;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (mci == NULL)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i82860_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ static int i82860_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_SLOT;
layers[1].size = 8;
layers[1].is_virt_csrow = true;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (!mci)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i82875p_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ static int i82875p_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = nr_chans;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (!mci) {
rc = -ENOMEM;
goto fail0;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/i82975x_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ static int i82975x_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = I82975X_NR_CSROWS(chans);
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
if (!mci) {
rc = -ENOMEM;
goto fail1;
Expand Down
3 changes: 1 addition & 2 deletions drivers/edac/mpc85xx_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -980,8 +980,7 @@ static int __devinit mpc85xx_mc_err_probe(struct platform_device *op)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = 1;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers,
sizeof(*pdata));
mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), sizeof(*pdata));
if (!mci) {
devres_release_group(&op->dev, mpc85xx_mc_err_probe);
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/mv64x60_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ static int __devinit mv64x60_mc_err_probe(struct platform_device *pdev)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = 1;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers,
sizeof(struct mv64x60_mc_pdata));
if (!mci) {
printk(KERN_ERR "%s: No memory for CPU err\n", __func__);
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/pasemi_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ static int __devinit pasemi_edac_probe(struct pci_dev *pdev,
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = PASEMI_EDAC_NR_CHANS;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(system_mmc_id++, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(system_mmc_id++, ARRAY_SIZE(layers), layers,
0);
if (mci == NULL)
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/ppc4xx_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1291,7 +1291,7 @@ static int __devinit ppc4xx_edac_probe(struct platform_device *op)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = ppc4xx_edac_nr_chans;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(ppc4xx_edac_instance, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(ppc4xx_edac_instance, ARRAY_SIZE(layers), layers,
sizeof(struct ppc4xx_edac_pdata));
if (mci == NULL) {
ppc4xx_edac_printk(KERN_ERR, "%s: "
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/r82600_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = R82600_NR_CHANS;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (mci == NULL)
return -ENOMEM;

Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/sb_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1640,7 +1640,7 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev)
layers[1].type = EDAC_MC_LAYER_SLOT;
layers[1].size = MAX_DIMMS;
layers[1].is_virt_csrow = true;
mci = new_edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers,
sizeof(*pvt));

if (unlikely(!mci))
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/tile_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ static int __devinit tile_edac_mc_probe(struct platform_device *pdev)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = TILE_EDAC_NR_CHANS;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(pdev->id, ARRAY_SIZE(layers), layers,
mci = edac_mc_alloc(pdev->id, ARRAY_SIZE(layers), layers,
sizeof(struct tile_edac_priv));
if (mci == NULL)
return -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/edac/x38_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = x38_channel_num;
layers[1].is_virt_csrow = false;
mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (!mci)
return -ENOMEM;

Expand Down

0 comments on commit ca0907b

Please sign in to comment.