linux/drivers/edac/cell_edac.c
<<
>>
Prefs
   1/*
   2 * Cell MIC driver for ECC counting
   3 *
   4 * Copyright 2007 Benjamin Herrenschmidt, IBM Corp.
   5 *                <benh@kernel.crashing.org>
   6 *
   7 * This file may be distributed under the terms of the
   8 * GNU General Public License.
   9 */
  10#undef DEBUG
  11
  12#include <linux/edac.h>
  13#include <linux/module.h>
  14#include <linux/init.h>
  15#include <linux/platform_device.h>
  16#include <linux/stop_machine.h>
  17#include <linux/io.h>
  18#include <asm/machdep.h>
  19#include <asm/cell-regs.h>
  20
  21#include "edac_core.h"
  22
  23struct cell_edac_priv
  24{
  25        struct cbe_mic_tm_regs __iomem  *regs;
  26        int                             node;
  27        int                             chanmask;
  28#ifdef DEBUG
  29        u64                             prev_fir;
  30#endif
  31};
  32
  33static void cell_edac_count_ce(struct mem_ctl_info *mci, int chan, u64 ar)
  34{
  35        struct cell_edac_priv           *priv = mci->pvt_info;
  36        struct csrow_info               *csrow = mci->csrows[0];
  37        unsigned long                   address, pfn, offset, syndrome;
  38
  39        dev_dbg(mci->pdev, "ECC CE err on node %d, channel %d, ar = 0x%016llx\n",
  40                priv->node, chan, ar);
  41
  42        /* Address decoding is likely a bit bogus, to dbl check */
  43        address = (ar & 0xffffffffe0000000ul) >> 29;
  44        if (priv->chanmask == 0x3)
  45                address = (address << 1) | chan;
  46        pfn = address >> PAGE_SHIFT;
  47        offset = address & ~PAGE_MASK;
  48        syndrome = (ar & 0x000000001fe00000ul) >> 21;
  49
  50        /* TODO: Decoding of the error address */
  51        edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
  52N   30ac/ow" class="srl26.18
t_pag"L48" class="lin.18
t_pag""driv+                   address, pfn, 
5a hre53"drivers/edac/cell_edac.c#L52" id0class="sref">priv->mci->mci->chan, chan, a hre55"drivers/edac/cell_edac.c#L49" id="L49" cde=chan"5class="sref">chan;
5a hre56"drivers/edac/cell_edac.c#L33" id="L33" class="uine" name="L33">  33static vuid cell_edac_count_ce(struct mem_ctl_info *mci, int chan, PAGE_SHIFT;
5a hre57"drivers/edac/cell_edac.c#L34" id="L34" c5SK" clas5="sref">PAGE_MASK;
5a hre5="drivers/edac/cell_edac.c#L35" id="L35" class="line" name="L35">  35        struct cell_edac_priv           *priv = mci->  36        struct csrow_info               *csrow = mci->  49
6a hre6="drivers/edac/cell_edac.c#L37" id="L37" class="line" name="L37">  37        unsigned long                   address, mci->mci, 1,
6a hre6="drivers/edac/cell_edac.c#L39" id="L39" class="line" name="L39">  39        dev_dbg(mci->pdev, "ECC CE err on node %d, channel %d, ar6t bogus,6to dbl check */
6a hre63"drivers/edac/cell_edac.c#L40" id="L40" class="line" name="L40">  40                priv->node, chan, chan,   42        /* Address decoding is likely a b6h@kernel..crashing.org>a hre6="drivers/edac/cell_edac.c#L43" id="L43" class="line" name="L43">  43        address = (ar & 0x6T" class6"sref">PAGE_SHIFT;
6a hre6="drivers/edac/cell_edac.c#L44" id="L44" class="line" name="L44">  44        if (priv->PAGE_MASK;
6a hre68"drivers/edac/cell_edac.c#L40" id="L45" class="line" name="L45">  45                address = (address << 1) |   46        pfn = address >>   49
7a hre70"drivers/edac/cell_edac.c#L47" id="L47" class="line" name="L47">  47        offset = address & ~mci, 1,
7a hre7="drivers/edac/cell_edac.c#L42" id="L40" class="line" name="L50">  50        /* TODO: Decodin7t bogus,7to dbl check */
7a hre7="drivers/edac/cell_edac.c#L51" id="L51" class="line" name="L51">  51        edac_mc_handle_errorHW_EVENT_ERR_CORRECTED,   29          52N   30ac/ow" class="srl26.18
t_pag"L48" class="lin.18
t_pag""driv+                   address, , priv->mci->mci->chan, chan,  *a hre77"drivers/edac/cell_edac.c#L41" id="L41" 7SK" clas7="sref">PAGE_MASK;
7a hre78"drivers/edac/cell_edac.c#L33" id="L33" cl clane" name="L33">  33sta clad cell_edac_count_ce(struct ->  49
8a hre80"drivers/edac/cell_edac.c#L35" id="L35" class="line" name="L35">  35        struct cell_edac_priv           *priv = mci->  29        u64no50privmci->mci, 1,
8a hre8="drivers/edac/cell_edac.c#L32" id="L32" 8t bogus,8to dbl check */
8a hre8="drivers/edac/cell_edac.c#Llass="sref">u64    in_be9" id="L29" classin_be9"d   44      >   44      lass="sref">u64lascode=chan" class="sref">chan,   28#ifdef u64    id="L44" class="line" name="L44">  44      64" class="sref">u64           ) vers/edac/cell_edac.c#L34" id="L34" c8h@kernel8.crashing.org>  29c/cell_edac.c#L39" id="L39" class="line" name="L39">  39        dev_dbg(mci->ge :class="strin">"ECC CE erac/cell_edac.c#Llass="sref">u64chan,  *  29c/cell_edac.c#Lid="L44" class="line" name="L44">  44      64" class="sref">u64           _edac_priv    lass="sref">u64chan, a hre88"drivers/eda}han" class="sref">chan,   49
9a hre90"drivers/edac/ceell_edac.c#L44" id="L44" class="line" name="L44">  44        if (u64u64
9a hre91ine" name="L29">  29c/cell_edac.c#Lo50    in_be9" id="L29" classin_be9"d   44      >   44      df_ecc_ 50_0s="sref">u64df_ecc_ 50_0    =chan" class="sref">chan, mci, 1,
9a hre9="drivers/edac/cell_eass="sref">privchan, 
9a hre93"drivers/edac/cell_edac.c#L40" id="id="L33" class="line" name="L33">  33static void HW0class="sref">privo50chan, chan,   44        if (u64u64  29c/cell_edac.c#Lo50    in_be9" id="L29" classin_be9"d   44      >   44      df_ecc_ 50_1s="sref">u64df_ecc_ 50_1iv" =chan" class="sref">chan,  *  29c/cell_edac.c#Lchan,   33static void HW1class="sref">privo50chan, a hre99"drivers/eda}han" class="sref">chan,  */
  44        if (u64u64DEBUG
<01 hr  29c/cell_edac.c#Lo50    in_be9" id="L29" classin_be9"d   44      >   44      df_ecc_ 50_0s="sref">u64df_ecc_ 50_0    =chan" class="sref">chan,   11
<02 hrprivchan, linux/edac.h>
<03 hr  33static vuid HW0class="sref">privo50chan, 0linux/module.h>
<04 hrchan, linux/init.h>
<05 hr  44        if (u64u64>
<06 hr  29c/cell_edac.c#Lo50    in_be9" id="L29" classin_be9"d   44      >   44      df_ecc_ 50_1s="sref">u64df_ecc_ 50_1iv" =chan" class="sref">chan, linux/0stop_machine.h>
<07 hr  29c/cell_edac.c#Lchan, linux/io.h>
<08 hr  33static vuid HW1class="sref">privo50chan, asm/machdep.h>
<09 hrchan,  */
<DEBUG
   9  11
<linux/edac.h>
<u64    CB"srIC_FIR_ECC_SET/"+code=address" claCB"srIC_FIR_ECC_SET/"+coiv" =chan" class="sref">chan, >linux/module.h>
<  29dac.c#L40" id="lass="sref">u64    CB"srIC_FIR_ECC_RESE=/"+code=address" claCB"srIC_FIR_ECC_RESE=/"+co    chan" class="sref">chan, linux/init.h>
<u64chan, >
<  29c/cell_edac.c#Lout_be9" id="L29" classout_be9"d   44      >   44      lass="sref">u64lascoderac/cell_edac.c#Llass="sref">u64chan, linux//stop_machine.h>
<  29(ac/c)ac_priv    in_be9" id="L29" classin_be9"d   44      >   44      lass="sref">u64lascode=chan" class="sref">chan, linux/io.h>
<asm/machdep.h>
<  29c/cell_edac.c#Lmbs="sref">u64   91asm/cell-regs.h>
1  28#ifdef   20
1  29c/cell_edac.c#Llass="sref">u64    in_be9" id="L29" classin_be9"d   44      >   44      lass="sref">u64lascode=chan" class="sref">chan,   11
priv39" id="L39" class="line" name="L39">  39        dev_dbg(mci->"ECC CE erac/cell_edac.c#Llass="sref">u64chan,   22
1cell_edac_priv
1chan,   24{
1chan, regs;
1chan, linux/ class="sref">node;
1,  =  e="L3href="+code=cell_edac_count_ce" class="sref">cell_edac_count_ce(struct ->chanmask;
1DEBUG
1  36        struct csrow_info               *csrow = mci->prev_fir;
1chan,   30#endif
1  35        struct cell_edac_priv           *priv = mci->  31};
1mci->linux/edac.h>
mci->ar)
1mci->  34{
1pvt_info;
1  39    np      NULL  mci->linux/s="sref">csrows[0];
1 39">  39    np      of>land_    _by_a>[0 id="L29" classof>land_    _by_a>[0e="L39">  39    np  mci->    NULL  syndrome;
1resourli"drivdac.c#L40" id="ss="sref">u64chan,   38
1,
1   9<"+code=ar1" class="sref">ar);
1ge    7" i id= willL9" id="L9" class="line" name="L9">   9<"ss="line1ne" name="L41">  41
1   8 * GN1it bogus,1 to dbl check */
1  49
  38
1  29c/cell_edac.c#Ldac.c#L2 e" name="L33">  33 e" name="L33">  33 e" name="L33">  5_716cha1n14  40                  29c/cell_edac.c#Ldac.c#L2 e" name=pvt_1af"" class="sref">PAGE_SHIF1T14PAGE_MAS1K1408 hr  52N   30ac/ow" class="srl26.18
t_pag"L48" class="lin.18
t_paE e=)_!edac_priv<
1pfn = address >>   29c/cell_e name="nr_pag" = r_sizrin_be9"d pfn = address >>   149  52N   30ac/ow" classrivl26.18
t_pag"L48" clarivl26.18r_paaE e=)_!edac_priv<+code=udrivers/edac52">  52N   30ac/ow" class="srl26.18
t_pag"L48" class="lin.18
t_pag""driv+          name="nr_pag" = ar &1Decoding 1of the error address */<1/span15mci, 11
  39< name="j    52N   30ac/ow" classf="ass="srnr_pag" = a27" class="line" name="j    52N   30ac/ow" classass="srnr_pag" = [7" class="line" name="j  chan,   29ac/ow" classcode=csdimms="line" name="domem" c"L44">  44typ8
t_pag"L48" cla>typ8e="daE e=)_!edac_privchan,   Herrenscchmidt, IBM Corp1.  5_716ac/ow" classcode=csdimms="line" name="domem" c"L44">  44  m              m   e="daE e=)_!edac_privedEDA_FIRCD" e="dimmcellchan" class="sref">chan, cha1n15  44  52N   30ac/ow" classf="ass="srnr_pag" = ammcellchan" class="sref">chan, PAGE_SHIF1T15chan, PAGE_MAS1K1508 hrpriv39" id="L39" class="line" name="L39">  39        dev_dbg(chan, mci-InitializrdfU"+code=pdev" class==pri=e <  :cx, _edoryquot;Ef="dri}han" class="sref">chan,   149mci- ss="lin.18=e <  :clx, f="+codn=e <  :cxstring">"ECC CE err on node %d, channel ode=csr6 1of the 6rror address */<1/span16  40                  44        if (mci, 116class=3="drivers/edac/cell_eie=)_!edac_priv<+code=udrivers/edac52">  52N   30ac/ow" class="srl26.18
t_pag"L48" class="lin.18
t_p=priv" class="sre name="nr_pag" = chan, chan, chan, chan, chan, PAGE_SHIF1T16mem_c#L33" __ hreni,   3probl_w e="L3href="+code=celplatersm_f="+co4" id="L44" claslatersm_f="+co_count_ce(struct f">dev_dbg(  29c/cell_edac.c#Ldac.c#L2 e" nammask" c6S1K" clas6="sref">PAGE_MAS1K16  25        struct cbe_mic_tm_regs __iomem  *  149cell_edac_counnnnnnnnnnnnnt_ce(struct __iomem  *  mc_laye class="line" name="L51"laye _counnnnnnnnnnnn/a>ac/ow" classriye s [2" class="sref">mci->mci, 117  35        struct mci->  29        mci->mci->a hre6="drivers/edac/cell_eregs   39<="L2f>lan30"cpuass="line" name="L2f>lan30"cpune" name="L39">  39dev_dbg(chan, 1 1*    NULL    29c/cell_edac.c#Ldac.c#L2 e" nam="L41" 7S1K" clas7="sref">PAGE_MAS1K1708 hredENODEVio50 class="sref">mci->  149  op_1f="            op_1f=" e="daE e=)_!edac_priv    NULL   io50 class="sref">mci->mci, 1187a hre7="drivers/edac/cell_edac.c#L42"Getlass="srepopulation27" clas*9">  49
      >   44   ma>stfivo50   ma>stfir_pa       =chan" class="sref">chan, priv39" id="L39" class="line" n9"d dev_dbg(dev_dbg(mci-claCMNT_CFG>, "ECvers/edac/cell_eprivo50chan, mci->  29c/cell_edac.c#Ldac.c#L2 e" nama href=8>1 1*  29c/cell_e>        if (ar &1a href=8e1d under  the terms of th1ea hre88"drivers/edac/cell_edac.regvo50  29c/cell_edac.c#Ldac.c#L2 e" namaef="+c60100000018e00000ul) >&g1t; 2118  29c/cell_e>        if (ar &1 class=9l1ass="li9e" name="L49">  149  29c/cell_eass=warpriv->dev_dbg(dev_dbg(mci, 11
9a hre9="drivers/edac name="L29mci" class="sref">mci-Yuck ! Nolass="srepopulated ? Abort"l"E       =chan" class="sref">chan, edENODEVio50 class="sref">mci->chan, <1a href=9 1Herrens9chmidt, IBM Corp1.priv39" id="L39" class="line" n9"d dev_dbg(dev_dbg(mci-Initialle "ECC CE err on node %d, channel "L34" c9h1@kernel9.crashing.org>1;  29c/cell_e/a>    in_be9" id="L29" classin_be9"d       >   44      lass="sref">u64l       =chan" class="sref">chan, 1 1*a hre77"drivers/edac/cell_edac.c#L41" id1a href=9e1d under9 the terms of th1e  49
ar &2 href=10s2an classs="comment"> */<2span>20DEB2G208a hre8="drivers/edac/cell_eriye s [0].e=)_!edac_privmci->  212<02 hr [0].e=)_!edac_privar &2 3ref=10l2sbogus,9to dbl check */<2>>208a hre8="drivers/edac/cell_eriye s [0].e=)_!edac_privar &2 4ref=10l2sfffffe9000000ul) >&g2>>20 [1].e=)_!edac_privar &2 5ref=10l2serrens9chmidt, IBM Corp2>>208a hre8="drivriv" class="sreriye s [1].e=)_!edac_privmci->>20>a hre6="drivers/edac/cell_eriye s [1].e=)_!edac_privmci-> 2>>2<07 hr(struct   39dev_dbg(  39 )Cvers/edac/cell_eriye s CC CE err on node %d, channel   href=10c2ass="fr0ef">linux/io.h>2<08 hr e="L3href="+code=cel35" id="L35" class="line" name="L35">  35  l       =chan" class="sref">chan, <2 href=10s2="falt"0>asm/machdep.h>2<09 hr    NULL    29c/cell_edac.c#Ldac.c#L2 e" na2 href=1 */<2span>21edENOMEMio50 class="sref">mci->DEB2G218a hre8="drivers/edac/cell_e=cell_edac_priv" class="sref">cell_edac_priv           *priv = mci->  212102 hr  44      > __iomem  *linux/edac.h>218a hre8="drivers/edac/cell_e0" id="L40" class="line" name="L40">  40                dev_dbg(__iomem  *>linux/module.h>21  44        if (__iomem  *linux/init.h>218a hre8="drivriv" class="sre/a>        dev_dbg(dev_dbg(dev_dbg(__iomem  *>21>a hre6="drivers/edac/cell_e/a>        typ8_ca"v" cla e=)_!edac_priv__iomem  *linux//stop_machine.h>2107 hr(struct   44  ell_ca"iedac.c#L35Nh)o5">  ell_ca"e="daE e=)_!edac_privedEDA_FFLAG_IRCD" "+coomem" class="sref">__iomem  *linux/io.h>2187 hr(struct   44  ea"iedac.c#L35Nh)o5">  ea"e="daE e=)_!edac_privedEDA_FFLAG_IRCD" "+coomem" class="sref">__iomem  *asm/machdep.h>216a hre6="drivers/edac/cell_e/a>        od    _e="daE emci" class="sref">mci-em  *ring">"Eomem" class="sref">__iomem  *1asm/cell-regs.h>227a hre70"drivers/edac/cell_e            *mci-MICring">"Eomem" class="sref">__iomem  *  20228a hre8="drivers/edac/cell_e            *[0 id="L29ass=   _e="dn9"d dev_dbg(dev_dbg(chan, <2 h"+co1cl2ss="linee" name="L11">  212202 hr  44  eL33" cl clane" name5">  eL33"v" cla e=)_!edac_priv<+"L33">  33L33" cl clane" name="L33">  33sta       =chan" class="sref">chan, <2 34" c1la2ss="li1ne" name="L22">  22228a hre8="drivers/edac/cell_e0" id="id="L33" ceni<_w = chan, <2 4ref=10l2ass="s1ref">cell_edac_pr2v21chan, <2 5ref=10l2s="lin1e" name="L24">  22{228a hre8="drivrrs/edac/cell_edac.c#L42"Register with EDA_ copro7" clas*9">  49
reg2;22>a hre6="drivers/edac/cell_ercvo50chan, <2 74" c10l2>linux/ class="sref">nod2;226a hre6="drivers/edac/cell_edac.rcvo50chanmas2;2208 hrper lass="sref"f">per ne" n9"d dev_dbg(dev_dbg(mci-faillas*anregister with EDA_ coprstring">"E       =chan" class="sref">chan, <2L34" c1de2DEBUG"1 class="sref">DEB2G22  29c/cell_eme="L51"fre            m1"fre _wchan, <2L34" c1_f2r" cla1ss="sref">prev_fi2;23chan, <2LL20" 1de2ne" na1me="L30">  302endif21chan, <2e=pvt_1as2="line1" name="L31">  312/a>};2 classrs/eda}han" class="sref">chan, <2e34" c1la2s="fref"">linux/edac.h>2mci->a2)21chan, <2e5ref=10l2s="lin1e" name="L34">  32{21pvt_inf2;21mem_c#L33ex__ hreni,   3removl_w e="L3href="+code=celplatersm_f="+co4" id="L44" claslatersm_f="+co_count_ce(struct f">dev_dbg(  29c/cell_edac.c#Ldac.c#L2 e" na2e=pvt_1af2>linux/s="sref">csrows[0];21syndrom2;21 e="L3href="+code=cell_edac_count_ce" class="sref">cell_edac_count_ce(struct dev_dbg(dev_dbg(chan, <2 href=1cl2ss="li1ne" name="L38">  282309 hr  29c/cell_edac.c#Ldac.c#L2 e" na2"L49" 1 =20xų016llx\n",21  29c/cell_eme="L51"fre            m1"fre _wchan, <2 9<"+2ode=ar1" class="sref">ar2/a>);241a hr133"drivreturn cell_ed0sref">mci->  2121chan, <2> * GN1it2bogus,1 to dbl check */<2span>21chan, <2>=pvt_1ac2n"ivers/an"ivers/an"6   2     2      1f="dri> e="L3href="+code=celplatersm_f clas4" id="L44" claslatersm_f clasa hr1ers/edac/cell_e0" id="id=f clas4" id="L44" cla0" id="id=f clasl_inaE ss="s) vers/edac/cell_edac.c#L34" id=2e="L33"> 233 e" name="L33">  33 e"2name=2L33">  5_716cha2n24mci-ebe-micring">"ECC CE err on node %d, channel  e=pvt_1af2" class="sref">PAGE_SHIF2T24CC CE err on node %d, channel  h34" c1ro2K" class="sref">PAGE_MAS2K2408 hr  3problass="uine" name="L33">  3probl_w  249  3removl_w<"+2of the error address */<2/span25mci->mci, 125classrs/eda}han" class="sref">chan, <2ef="+codt2 bogus,5to dbl check */<2/span2
5a hr1f="dri" class="sref">mem_c#" __ hreni,  =   2rs/eda}han" class="sref">chan, <2e=pvt_1ac2ffffffe5000000ul) >&g2t; 2925classss="s) vers/edac/cell_edac.c#L34" id=2a="L33"> 2Herrenscchmidt, IBM Corp2.nregisters datavers/ed pro7" clas*9">  49
cha2n25>a hre6="drivers/edac/cell_eBUILD_BUG_ON_w =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  ==pvt_1af2" class5"sref">PAGE_SHIF2T25  29c/cell_e>      df_ecc_ 50_0s="sref">u64df_ecc_ 50 CE 0xf8       =chan" class="sref">chan, <2"L34" c5S2K" clas5="sref">PAGE_MAS2K2587 hr(struct BUILD_BUG_ON_w =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  =href=1cl200000015e00000ul) >&g2t; 2125  29c/cell_e>      df_ecc_ 50_1s="sref">u64df_ecc_ 50 CE 0x1b8       =chan" class="sref">chan, <2ode=csr6l2ass="li6e" name="L49">  249 =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  ode=csr6 2of the 6rror address */<2/span26  29c/cell_e>      confiivo50      confii0 CE 0x218       =chan" class="sref">chan, <2of="+code2=mci" c6ass="sref">mci, 12602 hr =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  of="+codt2 bogus,6to dbl check */<2/span2
6a hre63"drivers/edacers/edacs/edac/">  29c/cell_e>      lass="sref">u64l CE 0x230       =chan" class="sref">chan, <2o=pvt_1ac2ffffffe6000000ul) >&g2t; 2926 =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  o="L33"> 2Herrens6chmidt, IBM Corp2.  5_716  29c/cell_e>   ma>stfivo50   ma>stfir_pa  CE 0x210       =chan" class="sref">chan, <2oL49" 1in2@kernel..crashing.org>2;a hre6="drivers/edac/cell_eBUILD_BUG_ON_w =  e="L3href="+code=cel35" id="L25" class="line" name="L25">  25    CC CE err on node %d, channel  amp; 0x6T2" class6"sref">PAGE_SHIF2T26  29c/cell_e>   ex1class="line" na>   ex1r_pa  CE 0x208       =chan" class="sref">chan, <2oL34" c5S2K" clas6="sref">PAGE_MAS2K26chan, <2AGE_SHI7l2ass="li7e" name="L49">  249chan, <2Ade=csr6 2of the 7rror address */<2/span27mci, 127  2rs/eda}han" class="sref">chan, <2=;d, ar6t2 bogus,7to dbl check */<2/span2
7a hrss="s) vers/edac/cell_edac.c#L34" id=2= href=5f2ffffffe7000000ul) >&g2t; 2927chan, <2A="L33"> 2Herrens7chmidt, IBM Corp2.chan, <2a href=7h2@kernel7.crashing.org>2;chan, <2a href=7>2 2*  29c/cell_e>odule="L33_w = odule="L33_w = chan, <2AL34" c5S2K" clas7="sref">PAGE_MAS2K2708 hr/">  29c/cell_e>odule=ex__ hreni, odule=ex___wchan, <2Aef="+c60200000017e00000ul) >&g2t; 2127  249mci-GPLring">"E       =chan" class="sref">chan, <2de=pvt_8 2of the 8rror address */<2/span28mci-Benjamin Herrenschmidtlass=benh@kernel.crashf">.org " cling">"E       =chan" class="sref">chan, <2d"L41" 7e2=mci" c8ass="sref">mci, 1287a hrers/edac/cell_eMODULE_DESCRIPTION_w = mci-EC_ count"lch MICring">"E       =chan" class="sref">chan, <2d;d, ar6t2 bogus,8to dbl check */<2/span2
8a hr


The original LXR soft" bylas*a =chanhttp://L33">rersge.net/projects/lxr4>LXR _edauL33y"+code">ge experiac.cal lassion2byl =chanmailto:lxr@dblux.no">lxr@dblux.no"+co.
lxr.dblux.no kindly hosted byl =chanhttp://www.redpill-dblpro.no">Redpill Lblpro AS"+codeprovider of Lbluxlclasult"l