|
@@ -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);
|
|
@@ -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,
|
|
@@ -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
|
|
|
*/
|