/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2012 Cavium, Inc. * * Copyright (C) 2009 Wind River Systems, * written by Ralf Baechle <ralf@linux-mips.org>
*/ #include <linux/module.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/io.h> #include <linux/edac.h>
#include <asm/octeon/cvmx.h>
#include"edac_module.h"
#define EDAC_MOD_STR "octeon-l2c"
staticvoid octeon_l2c_poll_oct1(struct edac_device_ctl_info *l2c)
{ union cvmx_l2t_err l2t_err, l2t_err_reset; union cvmx_l2d_err l2d_err, l2d_err_reset;
l2t_err_reset.u64 = 0;
l2t_err.u64 = cvmx_read_csr(CVMX_L2T_ERR); if (l2t_err.s.sec_err) {
edac_device_handle_ce(l2c, 0, 0, "Tag Single bit error (corrected)");
l2t_err_reset.s.sec_err = 1;
} if (l2t_err.s.ded_err) {
edac_device_handle_ue(l2c, 0, 0, "Tag Double bit error (detected)");
l2t_err_reset.s.ded_err = 1;
} if (l2t_err_reset.u64)
cvmx_write_csr(CVMX_L2T_ERR, l2t_err_reset.u64);
l2d_err_reset.u64 = 0;
l2d_err.u64 = cvmx_read_csr(CVMX_L2D_ERR); if (l2d_err.s.sec_err) {
edac_device_handle_ce(l2c, 0, 1, "Data Single bit error (corrected)");
l2d_err_reset.s.sec_err = 1;
} if (l2d_err.s.ded_err) {
edac_device_handle_ue(l2c, 0, 1, "Data Double bit error (detected)");
l2d_err_reset.s.ded_err = 1;
} if (l2d_err_reset.u64)
cvmx_write_csr(CVMX_L2D_ERR, l2d_err_reset.u64);
}
staticvoid _octeon_l2c_poll_oct2(struct edac_device_ctl_info *l2c, int tad)
{ union cvmx_l2c_err_tdtx err_tdtx, err_tdtx_reset; union cvmx_l2c_err_ttgx err_ttgx, err_ttgx_reset; char buf1[64]; char buf2[80];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.