linux/drivers/edac/edac_mc.c
<<
>>
Prefs
   1/*
   2 * edac_mc kernel module
   3 * (C) 2005, 2006 Linux Networx (http://lnxi.com)
   4 * This file may be distributed under the terms of the
   5 * GNU General Public License.
   6 *
   7 * Written by Thayne Harbaugh
   8 * Based on work by Dan Hollis <goemon at anime dot net> and others.
   9 *      http://www.anime.net/~goemon/linux-ecc/
  10 *
  11 * Modified by Dave Peterson and Doug Thompson
  12 *
  13 */
  14
  15#include <linux/module.h>
  16#include <linux/proc_fs.h>
  17#include <linux/kernel.h>
  18#include <linux/types.h>
  19#include <linux/smp.h>
  20#include <linux/init.h>
  21#include <linux/sysctl.h>
  22#include <linux/highmem.h>
  23#include <linux/timer.h>
  24#include <linux/slab.h>
  25#include <linux/jiffies.h>
  26#include <linux/spinlock.h>
  27#include <linux/list.h>
  28#include <linux/ctype.h>
  29#include <linux/edac.h>
  30#include <linux/bitops.h>
  31#include <asm/uaccess.h>
  32#include <asm/page.h>
  33#include <asm/edac.h>
  34#include "edac_core.h"
  35#include "edac_module.h"
  36
  37#define CREATE_TRACE_POINTS
  38#define TRACE_INCLUDE_PATH ../../include/ras
  39#include <ras/ras_event.h>
  40
  41/* lock to memory controller's control array */
  42static DEFINE_MUTEX(mem_ctls_mutex);
  43static LIST_HEAD(mc_devices);
  44
  45unsigned edac_dimm_info_location(struct dimm_info *dimm, char *buf,
  46                                 unsigned len)
  47{
  48        struct mem_ctl_info *mci = dimm->mci;
  49        int i, n, count = 0;
  50        char *p = buf;
  51
  52        for (i = 0; i < mci->n_layers; i++) {
  53                n = snprintf(p, len, "%s %d ",
  54                              edac_layer_name[mci->layers[i].type],
  55                              dimm->location[i]);
  56                p += n;
  57                len -= n;
  58                count += n;
  59                if (!len)
  60                        break;
  61        }
  62
  63        return count;
  64}
  65
  66#ifdef CONFIG_EDAC_DEBUG
  67
  68static void edac_mc_dump_channel(struct rank_info *chan)
  69{
  70        edac_dbg(4, "  channel->chan_idx = %d\n", chan->chan_idx);
  71        edac_dbg(4, "    channel = %p\n", chan);
  72        edac_dbg(4, "    channel->csrow = %p\n", chan->csrow);
  73        edac_dbg(4, "    channel->dimm = %p\n", chan->dimm);
  74}
  75
  76static void edac_mc_dump_dimm(struct dimm_info *dimm, int number)
  77{
  78        char location[80];
  79
  80        edac_dimm_info_location(dimm, location, sizeof(location));
  81
  82        edac_dbg(4, "%s%i: %smapped as virtual row %d, chan %d\n",
  83                 dimm->mci->mem_is_per_rank ? "rank" : "dimm",
  84                 number, location, dimm->csrow, dimm->cschannel);
  85        edac_dbg(4, "  dimm = %p\n", dimm);
  86        edac_dbg(4, "  dimm->label = '%s'\n", dimm->label);
  87        edac_dbg(4, "  dimm->nr_pages = 0x%x\n", dimm->nr_pages);
  88        edac_dbg(4, "  dimm->grain = %d\n", dimm->grain);
  89        edac_dbg(4, "  dimm->nr_pages = 0x%x\n", dimm->nr_pages);
  90}
  91
  92static void edac_mc_dump_csrow(struct csrow_info *csrow)
  93{
  94        edac_dbg(4, "csrow->csrow_idx = %d\n", csrow->csrow_idx);
  95        edac_dbg(4, "  csrow = %p\n", csrow);
  96        edac_dbg(4, "  csrow->first_page = 0x%lx\n", csrow->first_page);
  97        edac_dbg(4, "  csrow->last_page = 0x%lx\n", csrow->last_page);
  98        edac_dbg(4, "  csrow->page_mask = 0x%lx\n", csrow->page_mask);
  99        edac_dbg(4, "  csrow->nr_channels = %d\n", csrow->nr_channels);
 100        edac_dbg(4, "  csrow->channels = %p\n", csrow->channels);
 101        edac_dbg(4, "  csrow->mci = %p\n", csrow->mci);
 102}
 103
 104static void edac_mc_dump_mci(struct mem_ctl_info *mci)
 105{
 106        edac_dbg(3, "\tmci = %p\n", mci);
 107        edac_dbg(3, "\tmci->mtype_cap = %lx\n", mci->mtype_cap);
 108        edac_dbg(3, "\tmci->edac_ctl_cap = %lx\n", mci->edac_ctl_cap);
 109        edac_dbg(3, "\tmci->edac_cap = %lx\n", mci->edac_cap);
 110        edac_dbg(4, "\tmci->edac_check = %p\n", mci->edac_check);
 111        edac_dbg(3, "\tmci->nr_csrows = %d, csrows = %p\n",
 112                 mci->nr_csrows, mci->csrows);
 113        edac_dbg(3, "\tmci->nr_dimms = %d, dimms = %p\n",
 114                 mci->tot_dimms, mci->dimms);
 115        edac_dbg(3, "\tdev = %p\n", mci->pdev);
 116        edac_dbg(3, "\tmod_name:ctl_name = %s:%s\n",
 117                 mci->mod_name, mci->ctl_name);
 118        edac_dbg(3, "\tpvt_info = %p\n\n", mci->pvt_info);
 119}
 120
 121#endif                          /* CONFIG_EDAC_DEBUG */
 122
 123/*
 124 * keep those in sync with the enum mem_type
 125 */
 126const char *edac_mem_types[] = {
 127        "Empty csrow",
 128        "Reserved csrow type",
 129        "Unknown csrow type",
 130        "Fast page mode RAM",
 131        "Extended data out RAM",
 132        "Burst Extended data out RAM",
 133        "Single data rate SDRAM",
 134        "Registered single data rate SDRAM",
 135        "Double data rate SDRAM",
 136        "Registered Double data rate SDRAM",
 137        "Rambus DRAM",
 138        "Unbuffered DDR2 RAM",
 139        "Fully buffered DDR2",
 140        "Registered DDR2 RAM",
 141        "Rambus XDR",
 142        "Unbuffered DDR3 RAM",
 143        "Registered DDR3 RAM",
 144};
 145EXPORT_SYMBOL_GPL(edac_mem_types);
 146
 147/**
 148 * edac_align_ptr - Prepares the pointer offsets for a single-shot allocation
 149 * @p:          pointer to a pointer with the memory offset to be used. At
 150 *              return, this will be incremented to point to the next offset
 151 * @size:       Size of the data structure to be reserved
 152 * @n_elems:    Number of elements that should be reserved
 153 *
 154 * If 'size' is a constant, the compiler will optimize this whole function
 155 * down to either a no-op or the addition of a constant to the value of '*p'.
 156 *
 157 * The 'p' pointer is absolutely needed to keep the proper advancing
 158 * fbres the pointRn)2"include/ras/ras_event.h" class="fref">rasan>
 141        "Rambus XDR",
 * @n_elemos="fref">rasan>
 141s/edac/ed60">  60            1     15ine" name="L150"> 150_ass="c_mc.c#L1()156@p:irved
 151   7   7;
 * @        polass="commene:       Size of the daented tmenta to becass"line" name="L7">   7  64}
 * This file m clasral constan="line" name="L7">   7  166 155] = {
CONFIG_EDAC_DEBUG
"lass="com class="line" name="lass="comers/e"srefcref="drivers/edac/edac_mc.c#L52" id=",48" id="L48" class="line" cla/edac_mc.c#L52" claid=",478" id="L78" class="*  67
edac_mc_dump1_chan16s="string">&q8" id="L48" class="line"lass="L113" class="llass=name="L118"> 118 m class="line" nmers/a href="drivers/edac/edac_mc.c#L17" i     ef">rank_info *&com class="line" ncomers/ =href="drivers/edac/edac_mc.c#L52" id="a href="drivers/edac/edac_mc.c#L17" is/edac/edc_dbg(4, chref="drivers/edac/edac_mc.c#L52" id="s="sref">len)
< cla/edac_mc.c#L52" claid="e mid="L78" class="*(struct , "Re
 * This filesref">chrolass="commencommpossibM&qu *  176 15sref">chrolass= class="c.  Adjustolass="commensoc/edacibres t le RAMae href="drivers/edac/edac_mc.c#L125" id="L1&lass="sr1s="sref">edac_mc_dump_di1mmsref">chro145" i5">baspan t to either a noc.c#Lbusvideo a pX c#L1ment"> href="drivers/edac/edac_mc.c#L125" id="L1& class="1mm_info *chro"> *   7location[80];
 158chroHere w * *ba hre"L145"mos= mos=_mc.c#Lip:    mosrved
  79
chro145" i5">baass=55">btn t to either a no:   edriLbusvideoby default="line" name="L7">   7edac_dimm_inf1o_loc17ine" name="L150"> 150chroAal arbaspI &quo * @sizmmentre Ronat;   7dimm,  151chr] = {
edac1_dbg(4, &qudrivref">len)
< cla/edac_mc.c#L52" claid="ec_mcc__mc.c#mos=)>        /**
mem_1s_per_rankelriverivref">len)
< cla/edac_mc.c#L52" claid="ec_mcc__mc.c#78")>        di1mm/**
dim1);
len)
< cla/edac_mc.c#L52" claid="ec_mcc__mc.c#shor")>          57                /**
dimelriverivref">len)
< cla/edac_mc.c#L52" claid="ec_mcc__mc.c# id=3dac_mc.cmment">/**  73        sd=L63" id=1href="+code=chan" class=1"srefss="sref">dimelass=nby defaulstring">"  dimm->1;nr_p1ges = 0x%xss="an" class=1"srefss="sref">dimelass="L91">  911
rank_info *dimelass=L92">  921static void edac_m1c_dump_cs1row(struct ,   73        sd=L63" ihan" class=1"srefss="sref">dimelass=L__mc.c#mo4        edac_mn class="1string">"csrow->1csrow1idx = %d\nref1span>, )
< cla/edac_mc.c#L52" claid="n class="1string">"  csrow = 1%19s="sref">location name="(" id=")   ef">rank_info *dimelass=L_mcc__mc.string">"  csrow-&g1t;fir19*
"  csrow-&g1t;las1_page = 0x%n"<1/span>, chre  sd=L63" id-8" id="L48" class="line"lass="L113" class="llass=name="L118"> 118 m cn class="1string">"  csrow-&g1t;pag1_mask ass="llass=name="L118"> 118 m cnby defaulstring">"  csrow-&g1t;nr_1hannels = % name="(  )(((annel" c18" cl"<1/span>,  *chre  sd=L63" id-8" id="L48" class="line"lass="L113" cchan" class=1"srefss="sref">dimelass2pan class2"string">"  csrow-&2t;cha20c_mc.c#L92" id="L92" class="line" name="2pan class2"string">"  csrow-&2t;mci20edac_mc_dump_csrow" class="sref">edac_m2ame="L1032> 103
csrow_in_ref">ed_freode=di1mm" c1ass_ref">ed_freo="str href="drivers/edac/edac_mc.c#L105" id="L105" class="line" name="L105"> 105{
static void edac_dbg(4, (struct count = 0;
&q8" id="L48" class id="L102" class=ine" nahan" class=1"srefss="sref">dimelass2p5dump_mc2"  csrow = 2"+cod20s="sref">loca href="drivers/edac/edac_mc.c#L93" id="L93" class="line" name="L93">  93{
dimelass2p6dump_mc2"  csrow-&g237;p\2",c#L127annel" c1rf">count = 0;
="sref">dimms);
lenmci->dimms);
dimelass2p7dump_mc2"  csrow-&g2mtype2cap = %lx\c#L127annel" c1rf">count = 0;
="sr 101        lenmci->dimelass2p8dump_mc2"  csrow-&g2edac_2tl_cap = %c#L127annel" c1rf">count = 0;
="sr /a>          ers/ class="sref">lenmci->csrows);
dimelass2p9dump_mc2"  csrow-&g2edac_20c_mc.c#L17" is/edac/edc_dbg(4, "\tmci->2edac_2heck = %p\ref1span>,  115        "Empty csrow",
"\tmci->2nr_cs2ows = %d,         ass="sref">mci->n_layers; dimms);
  53                nr_2srows,  115        p += "\tmci->2nr_di2ms = %d, doped as virtual row kfreode=di1mm" c1asskfreo="strspan>,  115        p += tot2dimms, "\tdev = &237;p\2",ref1span>,  115        "Empty csrow",
"\tmod_nam2:ctl_21edac_dbg" cli class="ass="sref">mci-&s id="L102" class=ine" naayers" class="sref">ns id="L102" class=ine" naa+code=i" class="sref="sr /a>          ers/s" class="sref">ns id="L102" class=ine" naode=n" class="sref">n = lenmci->        "\tpvt_inf2 = .4s="line" name="L73",ref1span>, n = ,ref1span>,  101        n = #endif          2     22/a>        }
mci-&chid="L74" class="ling">&ayers" class="sref">nchid="L74" class="ling">&a+code=i" class="sref="sr 101        nchid="L74" class="ling">&ode"Empty csrow",

 101        &e=p" class="sref">p += 22rows,  101        p += mci-><  virtual row kfreode=di1mm" c1asskfreo="strspan>, p += location[ 115        edac_dbg(3, <2an>,
edac_dbg(3, <2n>,
edac_m2uot;,
 * edac_align_ptr - Prepares the pointer 2/span>,
<2 href="drivers/edac/edac2mc.c#23 class="com1#class="co">  64ed_150  f2,
&qcontrolan>,,
 layrep:&qControlan>f= edac_align_ptr - Prepares the pointer 2/href="+c2ers/edac/edac_mc.c#L138"2id="L23 f= edac_align_ptr - Prepares the pointer 2/n>,
 141         141s/edac/ed60">  6f= edac_align_ptr - Prepares the pointer 2an>,
e efficiriv>chroAal arbaspI &quo * @sizmmentre Ronat;2ref="driv2rs/edac/edac_mc.c#L142" 2d="L124ac/edac_mc.c#L152" id="L152" cOn>  cl17ent"> * ref150/a>,
,
chroAal arbaspI &quo * @sizmmentre Ronat;2rspan>,
<2ef="drivers/edac/edac_mc2c#L1424154 * If 'size' is a constant, the c2name="L142"> 145ed_freo()"do>freo mc/a> * This file m cla2( * This file m cla2<6dump_mc2 14724157 NOTE: ment">  handlo multi- claring">ispern di     nt wayp:< 125omc * edac_align_ptr - Prepares the pointer 2ahref="+c2"L148" class="line" name2"L1482> 148y/a>ick"is line" nameone ommry, while",48 * edac_align_ptr - Prepares the pointer 2an>,

multi- claring">y/a>ick"wclass="cline" nindo>srsreass="commene:       Size of the daented tme2the memor2 offset to be used. At
2a href="drivers/edac/edac_mc.c#ommrisp. Cur  ntly, qua href="dri,
chrscenarioine" ngroupef="drivmultipliv clas requi>e ment">  ="+cg2" id16"line" name="L151"> 151
 151,

 151,
<2L154" class="line" name=2L154"2 154ef="+cOn failn c: NULL id16"line" name="L151"> 151ccesp: 151(
 151 105{
ed_150ed_150edaed_num id="L115" class=_numg">&qt1ion" 18"line" name="L151"> 151, edan_layrepcsrows);
&qt1ion" 18"line" name="L151"> 151,
rasan>
,ed_layre" id="L105" claref">ed_layreme="L105"> 105{
);
&qt1ion" 18"line" name="L151"> 151rasan>
,   annel" c1lass="sref">edasz_pvtcsrows);

n =    7<2a> 105{
edac_dbg(3, <2ss="comme2t""line" name="L7">   7<2a>ed_layre" id="L105" claref">ed_layreme="L105"> 105{
);
edac_dbg(3, <2sspan>,
<2ss"line" name="L7">   7<2a>  93{
dimelass2ral const2n="line" name="L7">   7<2a>  93{
<"+c        dimelass2r/a>(loca href="drivers/edac/ed  93{
_mc.c#L90" id="L90" class="han" class=1"srefss="sref">dimelass2r157" id=2/spa6        ,
  93{
        "drivMAX_LAYERS" id="L105" cla"drivMAX_LAYERSg">&e,3"L93">  93{
ue_per_layre" id="L105" claue_per_layreedac  56        "drivMAX_LAYERS" id="L105" cla"drivMAX_LAYERSg">&ehan" class=1"srefss="sref">dimelass2rhref="+c2 1ref="d/edac_mc.c#L128"2id="L228" class="lihannel" c1lass="sref">edapopcsrows);
        "drivMAX_LAYERS" id="L105" cla"drivMAX_LAYERSg">&ehan" class=1"srefss="sref">dimelass2rn>,
dimms);
);
dimelass2rhe memor252" id="a href="drivers/2dac/e269_mc.c#L17" i"comers/e"srefcref="driv="sr /a>          ers/ cl1/edac_mc.c#L50" i="sr 101        &ayersan" class=1"srefss="sref">dimelass2 class1="2tr16ion(rank_infovtcsrows);
  93{
lass="line" name="lass=    ef">rank_info *rank_infNULLa> *dimelass2lass="li*2/spa6count = 0;
&q8" id="L48" clasid="L74" class="ng">&q8" id="L48" clasleid="L74" class="leig">&q8" id="L48" clasoffd="L74" class="off i="han" class=1"srefss="sref">dimelass2ls="comme2ef17>(struct rank_infoer_ claa> *rank_inffals/edac/edac_mc.c#fals/ i="han" class=1"srefss="sref">dimelass2lspan>,
<2edac_2__mc.c#X)2re href="drivers/edac/ed2c_mc.274;smapped as virtual row BUG_ONedac/edac_mc.c#BUG_ON="strspan>, );
&dimelr 56        "drivMAX_LAYERS" id="L105" cla"drivMAX_LAYERSg">& ||1lass="sref">edan_layrepcsrows);
&d== 0ehan" class=1"srefss="sref">dimelass2l/a>(, "2X c#L1men2"> href="drivers/edac/ed2c_mc.2#L125" id="L1& class="1mm_info *     hro1 /a>  /l85  s while"+code=ch1an" c17pan class="string">"2Xhref="+c2t="line" name="L7">   7<2a>location[8incdrivold API emulhrdri, "2Xn>,

  79 151   7<2a>mci->n_layers;   53                n =    7<2a>        }
dimms);
rank_inflayrepcsrows);
&  56                dimelass2>c2r] = {
 edac_mc.c#L106" id="L106" class="line" 2ec_mcc__m2.c#mos=)>                  ers/ *as   ef">rank_inflayrepcsrows);
&  56                dimelass2>span>,
<2s= mos=>28gt;dimelass2"ec_mcc__2c.c#78")>                rank_inflayrepcsrows);
&  56                dimelass2>/a>(2**dimelass2> c#L1men2c#shor")>         *>&d==  56        "drivMC_LAYER_CHIP_SELECT" id="L105" cla"drivMC_LAYER_CHIP_SELECTedac_mc.c#L106" id="L106" class="line" 2ehref="+c2c.c#78")28me, rank_inftruc        dimelass2>n>,
/2*"  dimm->2;nr_p28c_mc.c#L17" is/edac/edc_dbg(4,   921
 122
 variousfiless from"driv 15i, cde=locat1ion" 18"line" name="L151"> 151  922static void  1" name="L158"> 1each ilesrtmmentlass="c.  Adjustolass="commensoc/edacibr2c_dump_cs2row(struct srefwlassame=simplydjustolass="commensoc/edacibr2cspan>,
<24        a> 151"csrow->2csrow29L125" id="L1&="driversass="line" nameode=locat1ion" 18"line" name="L151"> 151"  csrow = 2%29s="sref">loca05"> 105{
rank_inf151">G_EDAC_DEBUG
  * 105{
dimelass2L_mcc__mc2string">"  csrow-&g2t;fir29me = %s:%s\n");
rank_inf151">G_EDAC_DEBUG
  * 105{
);
);
&ehan" class=1"srefss="sref">dimelass2Lhref="+c2string">"  csrow-&g2t;las2_page = 0x%ass="sref">mci->n_layers;   53                n = "  csrow-&g2t;pag29.4s="line" name="L73">  73      countcsrows);
rank_inflayrepcsrows);
&  56                dimelass2nby defau2string">"  csrow-&g2t;nr_290" class="line" name=   ef">rank_inf151">de=mci" class="sref">mci-&g4;);
dimelass3pan class3"string">"  csrow-&3t;cha30/a>        }
                rank_inf151">G_EDAC_DEBUG
  *,
);
dimelass3p1n class3"/a>static void   93{
ue_per_layre" id="L105" claue_per_layreedac  56                rank_inf151">G_EDAC_DEBUG
  *,
);
dimelass3p2n class3"ow(struct &a+= 252" id="s="sref">lcountcsrows);
dimelass3p3n class3"        "  csrow = 3"+cod30s="sref">loca05"> 105{
<151">de=mci" class="sref">mci-&g4;&ehan" class=1"srefss="sref">dimelass3p6dump_mc3"  csrow-&g337;p\30me = %s:%s\n");
rank_inf151">G_EDAC_DEBUG
  *dimelass3p7dump_mc3"  csrow-&g3mtype3cap = %lx\"srefcref="drivers/edac/edac_mc.c#L52" id=d=1((annel" c18" cl"<1/span>, vtcsrows);
chreez_pvtcsrows);
dimelass3p8dump_mc3"  csrow-&g3edac_30mask ass="llass=name="L118"> 118 m 3p9dump_mc3"  csrow-&g3edac_30id="L130" clasirtual row ౏">de=mci" class="sref">mci-&g1;  /l101)>);
 118 m 3pan class3"string">"\tmci->3edac_31/a>        }
 118 m 3p1n class3"string">"\tmci->3nr_cs3ows = %d,         ==i" class="sref="sref">dimms);
 118 m 3p2n class3de=nr_csrows" class="sre3">nr_3srows,  118 m 3p3n class3"string">"\tmci->3nr_di3ms = %d, doped as ==i" class="sref="sr /a>          ers/ *==i" class="sref="sr 101        dimelass3p_dump_mc3de=tot_dimms" class="sre3">tot31dx = #L92" id="L92" class="line" name="3pan class3"string">"\tdev = &337;p\31s="sref">loca05"> 105{
rank_infkz150, dimelass3p6dump_mc3"string">"\tmod_nam3:ctl_31edac_dbg" cliref1span>, dimelass3p8dump_mc3"string">"\tpvt_inf3 = mask ass="llass=name="L118"> 118 m 3 9dump_mc3> 120
 122
ey/a>incdriving">y/we ss="l,
 151#endif          3     32 class="com1f">dimm, &qchunk ofving">y/ 151
 151327;smapped as virtual row layrecsrows);
 1_layre" id="L105" claref">ed_layreme="L1)(((" id=")   ef">rank_infa href="drivers/edac/edac_ +l((annel" c18" cl"<1/span>,layrecsrows);
dimelass3man class3L124" class="line" name=3L124"32gt;mci->n_layers;   53                n = rank_infa href="drivers/edac/edac" name="L115"> 115                rank_infa href="drivers/edac/edac +l((annel" c18" cl"<1/span>,                dimelass3man class3"L126" class="line" name3"L12632s="sref">location   ef">rank_infa href="drivers/edac/edac" name="L115"> 115                rank_infa href="drivers/edac/edac +l((annel" c18" cl"<1/span>,ue_per_layre" id="L105" claue_per_layreedac  56                dimelass3m6dump_mc3[] = {
rank_infez_pvtcsrows);
rank_infa href="drivers/edac/edac_ +l((annel" c18" cl"<1/span>, vtcsrows);
        NULLa> *dimelass3an>,
 118 m 3p9dump_mc3f="drivers/edac/edac_mc.3#L130320" class="linass="line" na"> 122
 151,
 115rank_infed_num id="L115" class=_numg">&han" class=1"srefss="sref">dimelass3span>,
 115dimms);
len<="sref">dimms);
dimelass3uot;,
 115len< vtcsrows);
dimelass3uan class3 href="drivers/edac/edac3mc.c#333;smapped as virtual row a href="drivers/edac/edac" name="L115"> 115);
&d=e=i" class="srefn_layrepcsrows);
&han" class=1"srefss="sref">dimelass3ue3,
 115);
&d=e=i" class="sreflayrecsrows);
edac_dbg(3, <3/an class3 href="drivers/edac/edac3mc.c#33s="sref">loca05"> 105{
 115);
&q8" id="L48" claslayrepcsrows);
&q8href="+105"> 105{
);
lenlayrepcsrows);
&ehan" class=1"srefss="sref">dimelass3/6dump_mc3,
mci->csrows);
len<="sr /a>          ers/san" class=1"srefss="sref">dimelass3/href="+c3ers/edac/edac_mc.c#L138"3id="L33ap = %lx\"srefcref="drivsref">mci->len<="sr 101        dimelass3/n>,
mci->len< er_ claa> *dimelass3/9dump_mc3ef="drivers/edac/edac_mc3c#L1433c_mc.c#L17" is/edac/edc_dbg(4, ,
 122
de=locat1ion" 18"line" name="L151"> 151 /l101>a>br3an>,
 151,
<3ef="drivers/edac/edac_mc3c#L14343;smapped as virtual row a href="drivers/edac/edac" name="L115"> 115        rank_infkc150 105{
 115          ers/",=i" class="srefGFP_KERNELa> *dimelass3name="L143"> 145 105{
 115        dimelass3nan class3ef="+code=edac_mem_types3 clas34s="sref">locationgoto"drivers/edac/ed1rrss" id="L105" clarrrssan csan" class=1"srefss="sref">dimelass3<6dump_mc3 14734me = %s:&ass="sref">mci-&s id="L102" class=ine" naayers" class="sref">ns id="L102" class=ine" naa+code=i" class="sref="sr /a>          ers/s" class="sref">ns id="L102" class=ine" naode=n" class="sref">n = , len 105{
 115         *dimelass3nn>,
 105{
<dimelass3n9dump_mc3 offset to be used. At
340" class="line" name=me="L73"goto"drivers/edac/ed1rrss" id="L105" clarrrssan csan" class=1"srefss="sref">dimelass3mented to3point to the next offset3/span35/a>        }
mci->        len<dimelass3 to be re3erved
  93{
 s="lindxref="drivers/ed s="lindx" na class="sref">lendimelass3 n>,

a href="drivers/edac/edaclas   ef">rank_infa href="drivers/edac/edacdbg" class="sref">edac_dbg(3, <3 span>,
<3L154" class="line" name=3L154"35s = %d, doped as virtual row  hre101        ers/ class="sref">len<="sr 101        dimelass3 ame="L143l optimize this whole fu3ction35ode=mci" class="sref"   ef">rank_inf 101        rank_infkc150 105{
< 101        ers/iass="llass=name="L118"> 118 m 3 /a>(location[rank_infGFP_KERNELa> *dimelass3L157" id=3L157" class="line" name=3L157"35edac_dbg" cli class="ref1!05"> 105{
< 101        dimelass3Lhref="+c3eep the proper advancing3/span35me, dimelass3mn>,
rasan>
 118 m 3Lhe memor3s="fref">rasan>
mci-&chid="L74" class="ling">&ayers" class="sref">nchid="L74" class="ling">&a+code=i" class="sref="sr 101        nchid="L74" class="ling">&ode=n" class="sref">n =         }
 101        len 105{
< 101         *dimelass3 a pexamp3s="line" name="L7">   7<3a> 105{
<<101        dimelass3ss="comme3t""line" name="L7">   7<3a>, dimelass3sspan>,
<3ss"line" name="L7">   7<3a> a 3" id="L93" class=" na="line" name="L101"> 101        &e class="sref">len<<"+c        dimelass3ral const3n="line" name="L7">   7<3a> 101indxref="drivers/ed 101indx" na class="sref">len&han" class=1"srefss="sref">dimelass3r/a>(location[ /a>         edac class="sref">len<dimelass3r157" id=3/spa6         118 m 3rhe memor352" id="a href="drivers/3dac/e360" class="linass="line" na"> 122
de=locat1ion" 18"line" name="L151"> 151(dimm, a>br3lass="li*3/spa6 151(struct  115        rank_infkc150 105{
 115        dimms);
 *dimelass3lspan>,
<3 105{
 115        dimelass3lal const3re href="drivers/edac/ed3c_mc.37edac_dbg" cli="drivergoto"drivers/edac/ed1rrss" id="L105" clarrrssan csan" class=1"srefss="sref">dimelass3l/a>(dimelass3X c#L1men3"> href="drivers/edac/ed3c_mc.37me = %s:%s\n");
 opcsrows);
dimelass3Xhref="+c3t="line" name="L7">   7<3a>dimelass3Xn>,

&ayersan" class=1"srefss="sref">dimelass3Xhe memor3t="line" name="L7">   7<3a>mci->n_layers; dimms);
  53                n =    7<3a>        }
lenmci->         101        &esan" class=1"srefss="sref">dimelass3>c3r] = {
len<"drivDIMM_OFFd="L74" class=""drivDIMM_OFF="strass="sref">len);
);
&q8" id="L48" claspopcsrows);
);
);
dimelass3ec_mcc__m3.c#mos=)>        , edaoffd="L74" class="off i=" +linclass="sref">len<="sref">dimms);
n = 38gt;ed_printaa> *ed_printa="strass="sref">lenmci->mci->KERN_ERRhrefq8" href="+code=pvt_info" cla"dri c">e bug: "drivDIMM_OFF"is tryef="do do15i,illegal 152);
dimelass3eal const3c.c#78")>        dimelass3>/a>(38s="sref">locationc#L92" id="L92" class="line" name="3> c#L1men3c#shor")>        38me,  115       len 105{
 115        dimelass3>n>,
/3* 105{
       dimelass3nby defau3string">"  dimm->3;nr_p380" class="line" name=me="L73"goto"drivers/edac/ed1rrss" id="L105" clarrrssan csan" class=1"srefss="sref">dimelass3"L91">  931
mci->        len<_mc.c#L90" id="L90" class="han" class=1"srefss="sref">dimelass3L92">  923static void         _mc.c#L90" id="L90" class="="line" name="L101">a href="drivers/edac/edaclas   ef">rank_infa href="drivers/edac/edacdbg" class="sref">edac_dbg(3, <3c_dump_cs3row(struct edac_dbg(3, <3cspan>,
<34         122
de=locat1ion" 18"line" name="L151"> 151"csrow->3csrow39L125" id="L1&="driversass="line" nammmmmmmmm* Copy DIMM/ 151"  csrow = 3%39.
 151"  csrow-&g3t;fir39edac_dbg" cli class="ass="sref">len&lashref="+#37;s\n"lab        dimelass3Lhref="+c3string">"  csrow-&g3t;las39me,  115len<_mc.c#L90" id="L90" class="="line" name="L101">lab        dimelass3Ln>,
"  csrow-&g3t;pag39.4s="line" name="L73">  73      id="L74" class="ng">&las   ef">rank_infenprintfd="L74" class="enprintf="strass="sref">lenlen&q8" href="+code=pvt_info" clamc#_infou;
&ehan" class=1"srefss="sref">dimelass3Lby defau3string">"  csrow-&g3t;nr_390" class="line" name=   ef">rank_inflass="line" name="las +=e=i" class="srefnd="L74" class="ng">&han" class=1"srefss="sref">dimelass4pan class4"string">"  csrow-&4t;cha40/a>        }
&l-=e=i" class="srefnd="L74" class="ng">&han" class=1"srefss="sref">dimelass4p1n class4"/a>static void mci-&ja href="driversjedacayers" class="sref">nja href="driversjedaca+code=i" class="srefn_layrepcsrows);
&h">  53      ja href="driversjedacode=n" class="sref">n = (struct   73      id="L74" class="ng">&las   ef">rank_infenprintfd="L74" class="enprintf="strass="sref">lenlen&q8" href="+code=pvt_info" cla_infos#_infou;
n =           73       *layre_ref=edac  56        layrepcsrows);
&  56        ja href="driversjedace."srefcref="drivedac         *>&]i" class="sref">n = "csrow->4e=mem40edac_dbg" cli="driverrank_inflopcsrows);
        ja href="driversjedaceehan" class=1"srefss="sref">dimelass4c5dump_mc4"  csrow = 4"+cod40s="sref">location[&han" class=1"srefss="sref">dimelass4p6dump_mc4"  csrow-&g437;p\40edac_dbg" cli class="[&l-=e=i" class="srefnd="L74" class="ng">&han" class=1"srefss="sref">dimelass4p7dump_mc4"  csrow-&g4mtype40me, la hrdrid="L74" class="la hrdriedac  56        ja href="driversjedace class="sref">len< opcsrows);
        ja href="driversjedacehan" class=1"srefss="sref">dimelass4p8dump_mc4"  csrow-&g4edac_40mask ass="llass=name="L118"> 118 m 4p9dump_mc4"  csrow-&g4edac_400" class="line" name=me="L73"ref1span>, &l+cod= 0eass="llass=name="L118"> 118 m 4pan class4"string">"\tmci->4edac_41/a>        }
dimelass4p1n class4"string">"\tmci->4nr_cs4ows = %d,         c#L92" id="L92" class="line" name="4p2n class4de=nr_csrows" class="sre4">nr_41dac/ebg" class="sref">edac_dbg(3, <4p3n class4"string">"\tmci->4nr_di4ms = %d, doped as ass="line" na"> 122
 svold API 152 151tot41ode=mci" class="sref"   ef">rank_inf<"+c        a>       len<_mc.c#L90" id="L90" class="han" class=1"srefss="sref">dimelass4pan class4"string">"\tdev = &437;p\41s="sref">location   ef">rank_inf_mc.c#L90" id="L90" class="="line" name="L101"> /a>         edac class="sref">lendimelass4p6dump_mc4"string">"\tmod_nam4:ctl_41edac_dbg" cli class="ass="sref">len<_mc.c#L90" id="L90" class="="line" name="L101"> /5        len&han" class=1"srefss="sref">dimelass4 href="+c4de=mod_name" class="sref4>mod_4amedimelass4 8dump_mc4"string">"\tpvt_inf4 = ).4s="line" name="L73">ss="line" na"> 122
 / 151 120
rank_infs id="L102" class=ine" naodhan" class=1"srefss="sref">dimelass4me="L121"4 121#endif          4     42/a>        }
, len<="sr /a>          ers/e=n" class="sref">n = , dimelass4me="L123"4 12342edac_dbg" clirtual rome="L73">  73      chid="L74" class="ling">&odsan" class=1"srefss="sref">dimelass4m3n class4L124" class="line" name=4L124"42s = %d, doped as c#L92" id="L92" class="line" name="4pe4location ss="line" na"> 122
 151mci-&ja href="driversjedacaye=i" class="srefn_layrepcsrows);
& - 1s" class="sref">nja href="driversjedaca+linclrs" class="sref">nja href="driversjedac--e=n" class="sref">n = );
        ja href="driversjedaceodsan" class=1"srefss="sref">dimelass4m8dump_mc4ef="drivers/edac/edac_mc4c#L1242.4s="line" name="L73"""""""""ref1span>, );
        ja href="driversjedacea+code=i" class="sreflayrepcsrows);
&  56        ja href="driversjedace."srefcref="drivers/edac/edac_mc.c#L52" id=eass="llass=name="L118"> 118 m 4p9dump_mc4f="drivers/edac/edac_mc.4#L130420" class="line" name=me="L73"""""""""breakhan" class=1"srefss="sref">dimelass4n>,
oopcsrows);
        ja href="driversjedaceayersan" class=1"srefss="sref">dimelass4span>,
 115&han" class=1"srefss="sref">dimelass4/an class4 href="drivers/edac/edac4mc.c#43*dimelass4/6dump_mc4,
 122
<76" cislv1ers,  claroot kobj"is valid,,hro1in ords="tode=locat1ion" 18"line" name="L151"> 151dimm,  151dimm, ed_unregister_sysfs_main_kobj() ms="lbe c150edde=locat1ion" 18"line" name="L151"> 151dimm,  151,
dimm,  151,
 151,
edac_dbg(3, <4rspan>,
<4ef="drivers/edac/edac_mc4c#L14443;smapped as  name=" 56        a href="drivers/edac/edacdbg" class="sref">edac_dbg(3, <4name="L144"> 14544me = %s:%s\n"ed_free" id="L105" cla_ref">ed_free="strass="sref">lenedac_dbg(3, <4nhref="+c4"L148" class="line" name4"L14844medimelass4nn>,
dimelass4n9dump_mc4 offset to be used. At
440" clc#L92" id="L92" class="line" name="4mented to4point to the next offset4/span45/a>   56        EXPORT_SYMBOL_GPLa> *lened_150ed_150edac_dbg(3, <4 to be re4erved
edac_dbg(3, <4 n>,

 151,
<4L154" class="line" name=4L154"45L125" id="L1", * ref">ed_free="=locat1ion" 18"line" name="L151"> 151 151
 151
 151        ref">ed_free" id="L105" claref">ed_free="str href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 118 m 4mn>,
rasan>
n = rasan>
de=mci" class="sref">mci-&g1;);
dimelass4L1()156@p4irved
dimelass4Lto be re4s="line" name="L7">   7<4a> 122
 sysfs free onlylwh76"wasl,
 151   7<4a>ed_150 151,
<4ss"line" name="L7">   7<4a> 151   7<4a> 105{
-&g&ne" name="L119">sref">mci->n = location#37;s\n"ed_free" id="L105" cla_ref">ed_free="strass="sref">lenedac_dbg(3, <4r157" id=4/spa6        edac_dbg(3, <4rhref="+c4 1ref="d/edac_mc.c#L128"4id="L428" class="lihc#L92" id="L92" class="line" name="4rn>,
 118 m 4rhe memor452" id="a href="drivers/4dac/e460" class="linass="line" na"> 122
cdrivici1instance"is freed here,lwhlncdrivsysfs objecs is dropped *ode=locat1ion" 18"line" name="L151"> 151(unregister_sysfsmci" class="sref">mcunregister_sysfs="strass="sref">lenedac_dbg(3, <4lass="li*4/spa6(struct lened_free" id="L105" claref">ed_free="st_dbg" class="sref">edac_dbg(3, <4lspan>,
<4
 151 href="drivers/edac/ed4c_mc.47edac_an>
 151   7<4a>dimm,  151,

dimm, br4Xhe memor4t="line" name="L7">   7<4a>dimm, br4/   7<4a>dimm,  drivMCIdjustolass="commensoc/edacibr4/ass="li*4r] = {
 151         105{
 1i_by_ evref="drivers/edfind> 1i_by_ evedstr href="drivers/edac/ed evicec#L90" id="L90" evice4s="l105"> 105{
 151,
<4s= mos=>48gt;n =          105{
edac_dbg(3, <4>/a>(48s="sref">loca href="drivers/edac/edlist_headc#L90" id="L90"list_head4s="l105"> 105{
edac_dbg(3, <4> c#L1men4c#shor")>        48ap = %lx\"srefcref="drivref">de=mci" class="sref">mci-&g3;);
dimelass4>n>,
/4* 118 m 4nby defau4string">"  dimm->4;nr_p480" class="lin 56        list_ass_eachc#L90" id="L90"list_ass_each="strass="sref">lensr_ evicesmci" class="sresr_ evicesers/e=n" class="sref">n =   941
mci->lenlen *edac_dbg(3, <4L92">  924static void edac_dbg(3, <4c_dump_cs4row(struct ,  115len 151,
<44        edac_dbg(3, <4n class="4string">"csrow->4csrow49edac_dbg" clic#L92" id="L92" class="line" name="4n class="4string">"  csrow = 4%49*dimelass4L_mcc__mc4string">"  csrow-&g4t;fir49edac_dbg" cli name=" 56        NULLa> *dimelass4Lhref="+c4string">"  csrow-&g4t;las49me"  csrow-&g4t;pag49.4s=" 56        EXPORT_SYMBOL_GPLa> *len 1i_by_ evref="drivers/edfind> 1i_by_ evedst_dbg" class="sref">edac_dbg(3, <4Lby defau4string">"  csrow-&g4t;nr_49c_mc.c#L17" is/edac/edc_dbg(4, "  csrow-&5t;cha50 class="com1f">dimm, <>
de=locat1ion" 18"line" name="L151"> 151static void  handl" "hasl,sserred ers/eruptde=locat1ion" 18"line" name="L151"> 151(struct  151                ref">ed_,sserr_rrrss_check_and_cleas" id="L105" claref">ed_,sserr_rrrss_check_and_cleas="strvoidet1ion" 18"line" name="L151"> 151"csrow->5e=mem50edac_n" class="sref">n = "  csrow = 5"+cod50s="sref">locaers  56        old_stat/edac/edac_mc.c#old_stat/ i="han" class=1"srefss="sref">dimelass5p6dump_mc5"  csrow-&g537;p\50edac_#L92" id="L92" class="line" name="5p7dump_mc5"  csrow-&g5mtype50me, , len<"drivOPSTATE_POLLa> * 151"  csrow-&g5edac_50.4s="line" name="L73" name="1han" class=1"srefss="sref">dimelass5p9dump_mc5"  csrow-&g5edac_50c_mc.c#L17" is/edac/edc_dbg(4, "\tmci->5edac_510p = %lx\"srefcref="drivold_stat/edac/edac_mc.c#old_stat/ i="d=e=i" class="sref/a>(4rrr_,sserredac/edac_mc.c#ine" rrr_,sserr i="han" class=1"srefss="sref">dimelass5p1n class5"string">"\tmci->5nr_cs511p = %lx\"srefcref="driv/a>(4rrr_,sserredac/edac_mc.c#ine" rrr_,sserr i="ayersan" class=1"srefss="sref">dimelass5p2n class5de=nr_csrows" class="sre5">nr_51dac/ebg" class="sref">edac_dbg(3, <5p3n class5"string">"\tmci->5nr_di513;smapped as  name=" 56        old_stat/edac/edac_mc.c#old_stat/ i="han" class=1"srefss="sref">dimelass5p_dump_mc5de=tot_dimms" class="sre5">tot51ode=mc#L92" id="L92" class="line" name="5pan class5"string">"\tdev = &537;p\51*dimelass5p6dump_mc5"string">"\tmod_nam5:ctl_51edac_an>
 151mod_51ap = s="com1f">dimm, ed_workq_funcrdride=locat1ion" 18"line" name="L151"> 151"\tpvt_inf5 = Ȇp = s="com1f">dimm,  151 120
dimm,  151#endif          5     52/a>  static void  56        ref">ed_workq_funcrdri" id="L105" claref">ed_workq_funcrdridestr href="drivers/edac/edwork_ href=" id="L105" clawork_ href=4s="l105"> 105{
 151
n = 52edac_dbg" cli href="drivers/edac/ed elayrd_workc#L90" id="L90" elayrd_work4s="l105"> 105{
len<="_ elayrd_workc#L90" id="L90"="_ elayrd_work="strass="sref">lendimelass5m3n class5L124" class="line" name=5L124"52s = %d, d href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
len<="_f">dims="ctlrworkc#L90" id="L90"="_f">dims="ctlrwork="strass="sref">lendimelass5m_dump_mc5loca05"> 105{
 *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass5m6dump_mc5[] = {
 122
cref cislcontrold href="haslmovd ="loffac_m stat/, we are done"code=locat1ion" 18"line" name="L151"> 151,  115n =  105{
 *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass5n>,
edac_dbg(3, <5span>,
edac_dbg(3, <5u3n class5 href="drivers/edac/edac5mc.c#533e,  122
cOnlylpollvcontroll" n t10="are runnef="polled hro1have alcheckocode=locat1ion" 18"line" name="L151"> 1515,
ed_,sserr_rrrss_check_and_cleas" id="L105" claref">ed_,sserr_rrrss_check_and_cleas="str) &n&nf1span>,  115check" id="L105" claref">checkx = &!ye=i" class="srefNULLa> * 151location#37;s\n" 115check" id="L105" claref">checkx = rass="sref">lenedac_dbg(3, <5/6dump_mc5,
-&g&ne" name="L119">ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass5n8dump_mc5ef="drivers/edac/edac_mc5c#L1353mask ass="llass=name="L118"> 118 m 5/9dump_mc5ef="drivers/edac/edac_mc5c#L14530" class="linass="line" na"> 122
cRescheduleocode=locat1ion" 18"line" name="L151"> 151,
len<151">workqueue" id="L105" claref">workqueueedac, &ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115n = len<151">ed_get_poll_ssec" id="L105" claref">ed_get_poll_ssec="str))ehan" class=1"srefss="sref">dimelass5an>,
 145 151
ed_workq_snampde=locat1ion" 18"line" name="L151"> 15154edac_an>
 151dimm, def="incdrivnew  elay perioo1in ssec="=locat1ion" 18"line" name="L151"> 151dimm,  151
54c_mc.s="com1f">dimm,  151dimm,  151,

 drivas="ctls_sutex heldde=locat1ion" 18"line" name="L151"> 151,

 151,
<5L154" class="line" name=5L154"55gt;        ref">ed_workq_snamp" id="L105" claref">ed_workq_snampdestr href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 151n = loca05"> 105{
<mci-&g0;);
dimelass5 6dump_mc5L157" class="line" name=5L157"55edac_#L92" id="L92" class="line" name="5Lhref="+c5eep the proper advancing5/span55me,  122
cref cislinstance"is not incdrivPOLL stat/,  clncsimplyl name="code=locat1ion" 18"line" name="L151"> 151rasan>
,  115 151rasan>
edac_dbg(3, <5L1()156@p5irved
dimelass5Lto be re5s="line" name="L7">   7<5a>-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115        ref">ed_workq_funcrdri" id="L105" claref">ed_workq_funcrdridestehan" class=1"srefss="sref">dimelass5ss="comme5t""line" name="L7">   7<5a>len<151">workqueue" id="L105" claref">workqueueedac, &ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115, lendimelass5sspan>,
<5ss"line" name="L7">   7<5a>   7<5a>
 151        
ed_workq_teardowide=locat1ion" 18"line" name="L151"> 151dimm,  151,
dimm,  151dimm,  151(dimm,  151 151(struct  151,
<5ed_workq_teardowi" id="L105" claref">ed_workq_teardowidestr href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 118 m 5lal const5re href="drivers/edac/ed5c_mc.57edac_n" class="sref">n = locaers  56        statusmci" class="srestatus i="han" class=1"srefss="sref">dimelass5X c#L1men5"> href="drivers/edac/ed5c_mc.57edac_#L92" id="L92" class="line" name="5Xhref="+c5t="line" name="L7">   7<5a>, ,  115 151,

dimelass5Xhe memor5t="line" name="L7">   7<5a>(4,    7<5a>len-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115dimelass5/ass="li*5r] = {
n =  105{
<mci-&g0; drivqueue>);
dimelass5espan>,
<5s= mos=>583;sma#L92" id="L92" class="line" name="5eal const5c.c#78")>         122
cworkq instance"migh"lbe runnef=, wait"ass=it"code=locat1ion" 18"line" name="L151"> 151/a>(58s="sref">location05"> 105{
>workqueue" id="L105" claflus>>workqueuex = rass="sref">len<151">workqueue" id="L105" claref">workqueueedacehan" class=1"srefss="sref">dimelass5e c#L1men5c#shor")>        58me/5* 118 m 5nby defau5string">"  dimm->5;nr_p58c_mc.s="com1f">dimm,  151  951
dimm, ed_reset_ elay_perioo(unsigned lof="value)de=locat1ion" 18"line" name="L151"> 151static void  151(struct  151,
<54        br5n class="5string">"csrow->5csrow59L125" id="L1&="driversass="lcode=locat1ion" 18"line" name="L151"> 151"  csrow = 5%59*        ref">ed_reset_ elay_perioo" id="L105" claref">ed_reset_ elay_perioox = rers  56        value" id="L105" clavalue="stet1ion" 18"line" name="L151"> 151"  csrow-&g5t;fir59edac_n" class="sref">n = "  csrow-&g5t;las59me,  105{
edac_dbg(3, <5nn>,
"  csrow-&g5t;pag59.4s="line" na href="drivers/edac/edlist_headc#L90" id="L90"list_head4s="l105"> 105{
edac_dbg(3, <5Lby defau5string">"  csrow-&g5t;nr_59c_mc.c#L17" is/edac/edc_dbg(4, "  csrow-&6t;cha600p = %lx\"srefcref="drivautex_locaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass6p1n class6"/a>static void edac_dbg(3, <6p2n class6"ow(struct  122
csccomdrivlist hro11me="offl,
, doef="so unds="locaa>=locat1ion" 18"line" name="L151"> 151         151"csrow->6e=mem604;smapped as virtual row list_ass_eachc#L90" id="L90"list_ass_each="strass="sref">lensr_ evicesmci" class="sresr_ evicesers/e=n" class="sref">n = "  csrow = 6"+cod60s="sref">location05"> 105{
lenlen *edac_dbg(3, <6p6dump_mc6"  csrow-&g637;p\60edac_#L92" id="L92" class="line" name="6p7dump_mc6"  csrow-&g6mtype60me,  115 151"  csrow-&g6edac_60.4s="line" name="L73"tion05"> 105{
-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115dimelass6p9dump_mc6"  csrow-&g6edac_600" class="linc#L92" id="L92" class="line" name="6pan class6"string">"\tmci->6edac_61/a>  an" class=1"srefss="sref">dimelass6p1n class6"string">"\tmci->6nr_cs611p = %lx\"srefcref="drivautex_unlocaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass6p2n class6de=nr_csrows" class="sre6">nr_61dac/ebg" class="sref">edac_dbg(3, <6p3n class6"string">"\tmci->6nr_di613;sma#L92" id="L92" class="line" name="6p_dump_mc6de=tot_dimms" class="sre6">tot61ode=mci" clasass="line" na"> 122
cre-walkmdrivlist,,hro1 nset drivpollv elay *ode=locat1ion" 18"line" name="L151"> 151"\tdev = &637;p\61s="sref">loca05"> 105{
 *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass6p6dump_mc6"string">"\tmod_nam6:ctl_61edac_#L92" id="L92" class="line" name="6 href="+c6de=mod_name" class="sref6>mod_61ap = %lx\"srefcref="drivlist_ass_eachc#L90" id="L90"list_ass_each="strass="sref">lensr_ evicesmci" class="sresr_ evicesers/e=n" class="sref">n = "\tpvt_inf6 = =.4s="line" name="L73">5"> 105{
lenlen *n = (4, #endif          6     62/a>        }
        ref">ed_workq_snamp" id="L105" claref">ed_workq_snampdestr>5"> 105{
n = 62dac/ebg" class="sref">edac_dbg(3, <6m3n class6L124" class="line" name=6L124"62s = %d, d"srefcref="drivautex_unlocaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass6m_dump_mc6dimelass6m6dump_mc6[] = {
dimelass6m8dump_mc6ef="drivers/edac/edac_mc6c#L12628p = s="com1f">dimm, <>
cRe1me="0"on=succesp, 1"on=failure" id16"line" name="L151"> 151dimm,  151,
dimm, dign a unique1value ="lac/" named_idx" id16"line" name="L151"> 151,
 151,
 151, *de=locat1ion" 18"line" name="L151"> 151,
 151
 151,
 105{
 118 m 6/href="+c6ers/edac/edac_mc.c#L138"6id="L63ap = n" class="sref">n =  105{
 105{
edac_dbg(3, <6/9dump_mc6ef="drivers/edac/edac_mc6c#L14630" class="lin href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
edac_dbg(3, <6an>,
dimelass6apan>,
sr_ evicesmci" class="sresr_ evicesers/dbg" class="sref">edac_dbg(3, <6aot;edac_dbg(3, <6rspan>,
<6ef="drivers/edac/edac_mc6c#L1464s = %d, d"srefcref="drivp" id="L105" clapedacd=e=i" class="sreffind> 1i_by_ evref="drivers/edfind> 1i_by_ evedstre" name="L119">srhref="drivers/edac/edac" name="L115"> 115dimelass6name="L146"> 145p" id="L105" clapedacd!ye=i" class="srefNULLa> * 151locationgo="l=i" class="sreffail0ref="drivers/edfail0ers/dbg" class="sref">edac_dbg(3, <6a6dump_mc6 14764edac_#L92" id="L92" class="line" name="6nhref="+c6"L148" class="line" name6"L14864ap = %lx\"srefcref="drivlist_ass_eachc#L90" id="L90"list_ass_each="strass="sref">lensr_ evicesmci" class="sresr_ evicesers/e=n" class="sref">n = 5"> 105{
lenlen *n = (4,         }
        p" id="L105" clapedac" name="L115"> 115 115n =         unlikelyref="drivers/edunlikelyedstre" name="L119">p" id="L105" clapedac" name="L115"> 115 115 151,

locationgo="l=i" class="sreffail1ref="drivers/edfail1ers/dbg" class="sref">edac_dbg(3, <6 span>,
<6L154" class="line" name=6L154"653;sma#L92" id="L92" class="line" name="6 ame="L146l optimize this whole fu6ction65edac_dbg" cli="driverme="L73">5"> 105{
 105{
edac_dbg(3, <6 an class6ant to the value of ƌ*pŭs="sref">location>>>>>>>>breakdbg" class="sref">edac_dbg(3, <6 6dump_mc6L157" class="line" name=6L157"65edac_dbg" cli class="c#L92" id="L92" class="line" name="6Lhref="+c6eep the proper advancing6/span658" class="lihc#L92" id="L92" class="line" name="6 8dump_mc6s="fref">rasan>
 118 m 6 9dump_mc6s="fref">rasan>
tail_rcua>-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115 *lenn = -&g&ne" name="L119">mchandl" sedac_dbg" cls="sref">n =    7<6a>dimelass6ss="comme6t""line" name="L7">   7<6a>edac_dbg(3, <6sspan>,
<6ss"line" name="L7">   7<6a>edac_dbg(3, <6same="L146n="line" name="L7">   7<6a>printkedstre" name="L119">KERN_WARNING" id="L105" claKERN_WARNING="sts=ass="sref">len<"drivMC" id="L105" cla"drivMC="stsbg" class="sref">edac_dbg(3, <6san class65] = {
location# href="+code=pvt_info" cla%s (%s) %s %s already ">digned %d>);
len< ev_rive" id="L105" cla ev_riveedstre" name="L119">p" id="L105" clapedac" name="L115"> 115edac_dbg(3, <6s6dump_mc6/spa6        srhref="drivers/edac/edac)s=ass="sref">len 115len 115len 115dimelass6shref="+c6 1ref="d/edac_mc.c#L128"6id="L628" class="lih name="1han" class=1"srefss="sref">dimelass6rn>,
 118 m 6rhe memor652" id="a href="drivers/6dac/e66c_mc.si" class="sreffail1ref="drivers/edfail1ers/:bg" class="sref">edac_dbg(3, <6 class1="6tr16ion(printk" id="L105" claref">printkedstre" name="L119">KERN_WARNING" id="L105" claKERN_WARNING="sts=ass="sref">len<"drivMC" id="L105" cla"drivMC="stsbg" class="sref">edac_dbg(3, <6lass="li*6/spa6edac_dbg(3, <6ls="comme6ef17>(struct );
len 115len<__func__mci" class="sre__func__a>  esan" class=1"srefss="sref">dimelass6lspan>,
<6dimelass6lal const6re href="drivers/edac/ed6c_mc.67ode=mc#L92" id="L92" class="line" name="6l/a>(dimelass6X c#L1men6"> href="drivers/edac/ed6c_mc.67edac_static void  56        del> 1_from_global_listref="drivers/eddel> 1_from_global_listdestr href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 118 m 6Xhref="+c6t="line" name="L7">   7<6a>n = -&g&ne" name="L119">mchandl" sedac_dbg" cls="sref">n =    7<6a>rcua>-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115 *n =    7<6a>  an" class=1"srefss="sref">dimelass6/ass="li*6r] = {
dimm, <>
cthese are ass=safe  nmoval of  evices from globalvlist whileref="drbg" class="sref">edac_dbg(3, <6ec_mcc__m6.c#mos=)>        ef="listdef="drbg" class="sref">edac_dbg(3, <6espan>,
<6s= mos=>68L125" id="L1", """"""""*ode=locat1ion" 18"line" name="L151"> 151        rcuref="drivers/edsynchronize>rcua>-&g_dbg" cls="sref">n = 68s="sref">loca05"> 105{
-&g&ne" name="L119">srhref="drivers/edac/edac" name="L115"> 115 *n =         68medimelass6>n>,
/6*dimm, <>
*de=locat1ion" 18"line" name="L151"> 151"  dimm->6;nr_p68c_mc.s="com1f">dimm, ed_find: Search ass=a as="ctlref="  href=ure whose index"is 'idx'" id16"line" name="L151"> 151  961
dimm,  151static void  151(struct  151,
<64         151"csrow->6csrow69L125" id="L1&="driversass="lc C150er ms=" holdvas="ctls_sutex" id16"line" name="L151"> 151("  csrow = 6%69.
 151"  csrow-&g6t;fir69edac_stref="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
ed_findmci" class="sref">mced_finda>-&gers  56        idxmci" class="sreidxa>  et1ion" 18"line" name="L151"> 151"  csrow-&g6t;las69ap = n" class="sref">n = "  csrow-&g6t;pag69.4s="line" na href="drivers/edac/edlist_headc#L90" id="L90"list_head4s="l105"> 105{
edac_dbg(3, <6Lby defau6string">"  csrow-&g6t;nr_690" class="lin href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
edac_dbg(3, <7pan class7"string">"  csrow-&7t;cha70/a>  an" class=1"srefss="sref">dimelass7p1n class7"/a>static void lensr_ evicesmci" class="sresr_ evicesers/e=n" class="sref">n = (struct  105{
lenlen *n =         "csrow->7e=mem70edac_dbg" cli="driverref1span>,  115n = "  csrow = 7"+cod70s="sref">location="driverref1span>,  115 151"  csrow-&g737;p\70edac_dbg" cli class=""""""""""""""""" name=" 56        a href="drivers/edac/edacdbg" class="sref">edac_dbg(3, <7p7dump_mc7"  csrow-&g7mtype70medimelass7p8dump_mc7"  csrow-&g7edac_70.4s="line" name="L73"tionbreakdbg" class="sref">edac_dbg(3, <7p9dump_mc7"  csrow-&g7edac_700" class="linnnnnnnnnc#L92" id="L92" class="line" name="7pan class7"string">"\tmci->7edac_710p = %lx\c#L92" id="L92" class="line" name="7p1n class7"string">"\tmci->7nr_cs71ws = bg" class="sref">edac_dbg(3, <7p2n class7de=nr_csrows" class="sre7">nr_71edac_dbg" cli name=" 56        NULLa> *edac_dbg(3, <7p3n class7"string">"\tmci->7nr_di71L125"c#L92" id="L92" class="line" name="7p_dump_mc7de=tot_dimms" class="sre7">tot71ode=mass="sref">len<"XPORT_SYMBOLa> *lened_findmci" class="sref">mced_finda>-&_dbg" cls="sref">n = "\tdev = &737;p\71*dimelass7p6dump_mc7"string">"\tmod_nam7:ctl_71edac_an>
 151mod_71ap = s="com1f">dimm, mced_add> 1: Inserrldriv'ac/'  href=ure ers"ldrivac/ globalvlist andde=locat1ion" 18"line" name="L151"> 151"\tpvt_inf7 = ˎp = s="com1f">dimm, creativ ysfs "L1riesli>docihred  ac/  href=urede=locat1ion" 18"line" name="L151"> 151 120
dimm,  151#endif          7     72 class="com1f">dimm,  151
 15172 class="com1##L153" idcountocg" cli0ionSuccespde=locat1ion" 18"line" name="L151"> 151, * "L73"!0ion 151 151dimelass7m6dump_mc7[] = {

 FIXME - should"a warnef="be printed refno rrrss detecrdri? correcrdri? code=locat1ion" 18"line" name="L151"> 151        f">mced_add> 1mci" class="sref">mced_add> 1destr href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 118 m 7m8dump_mc7ef="drivers/edac/edac_mc7c#L12728p = n" class="sref">n = mci-&g0;);
dimelass7n>,
dimelass7span>,
        CONFIG_"drivDEBUG" id="L105" claCONFIG_"drivDEBUGa>  an" class=1"srefss="sref">dimelass7se="L123"7>,
        ref">debug_level" id="L105" clabg    nam=e3eass="llass=name="L118"> 118 m 7u3n class7 href="drivers/edac/edac7mc.c#733e, srhref="drivers/edac/edac)han" class=1"srefss="sref">dimelass7n_dump_mc7,
locaref1 56        ref">debug_level" id="L105" clabg    nam=e4e=n" class="sref">n = edac_dbg(3, <7/href="+c7ers/edac/edac_mc.c#L138"7id="L73medimelass7n8dump_mc7ef="drivers/edac/edac_mc7c#L1373.4s="line" name="L73"ass=rass="sref">len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n =  105{
 115        imci" class="srei i="]dbg" class="sref">edac_dbg(3, <7an>,
        u>,
 115edac_dbg(3, <7apan>,
edac_dbg(3, <7aot;edac_dbg(3, <7rspan>,
<7ef="drivers/edac/edac_mc7c#L14743e, len        jmci" class="srej i=" <  56        csrowref="drivers/edcsrowedac" name="L115"> 115        jmci" class="srej i="++ebg" class="sref">edac_dbg(3, <7r_dump_mc7"> 145len 115        jmci" class="srej i="]" name="L115"> 115 115edac_dbg(3, <7aan class7ef="+code=edac_mem_types7 clas74s="sref">location        eef1!e="L115"> 115edac_dbg(3, <7r6dump_mc7 14774edac_dbg" cli class="""""""""""""""""continuedbg" class="sref">edac_dbg(3, <7ahref="+c7"L148" class="line" name7"L14874me,         csrowref="drivers/edcsrowedac)han" class=1"srefss="sref">dimelass7n8dump_mc7 a single-shot allocatio7len        jmci" class="srej i=" <  56        csrowref="drivers/edcsrowedac" name="L115"> 115        jmci" class="srej i="++ebg" class="sreffss="sref">dimelass7n9dump_mc7 offset to be used. At
740" class="linnnnnnnnnnnnnnnnn        eef1ass="sref">len 115        jmci" class="srej i="]" name="L115"> 115 115dimelass7mented to7point to the next offset7/span75/a>        }
,         csrowref="drivers/edcsrowedac" name="L115"> 115        jmci" class="srej i="])han" class=1"srefss="sref">dimelass7mpan>,

len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e#L92" id="L92" class="line" name="7 span>,
<7L154" class="line" name=7L154"753e, ,  115        imci" class="srei i="]" name="L115"> 115dimelass7m_dump_mc7l optimize this whole fu7ction75edac_dbg" cli="driverme="L73"ass="lin 56        srhref="drivers/edac/edac" name="L115"> 115        imci" class="srei i="]s=ass="sref">lendimelass7man class7ant to the value of ƍ*pŷs="sref">locac#L92" id="L92" class="line" name="7 6dump_mc7L157" class="line" name=7L157"75edac_#endif#L92" id="L92" class="line" name="7 href="+c7eep the proper advancing7/span75ap = %lx\"srefcref="drivautex_locaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass7 8dump_mc7s="fref">rasan>
 118 m 7 9dump_mc7s="fref">rasan>
srhref="drivers/edac/edac)ebg" class="sreffss="sref">dimelass7L1()156@p7irved
edac_dbg(3, <7Lpan>,
   7<7a>edac_dbg(3, <7ss="comme7t""line" name="L7">   7<7a> 122
cset load timf"so that rrrss rativccombe tracked code=locat1ion" 18"line" name="L151"> 151,
<7ss"line" name="L7">   7<7a> 115edac_dbg(3, <7L_dump_mc7n="line" name="L7">   7<7a>locaref1 56        ref">creati_ ysfs_a h_ evicec#L90" id="L90"srhref="drivers/edac/edac)e=n" class="sref">n = printk" id="L105" claref">m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_WARNING" id="L105" claKERN_WARNING="sts" class="sref">n = );
dimelass7rn>,
edac_dbg(3, <7rhe memor752" id="a href="drivers/7dac/e760" class="linc#L92" id="L92" class="line" name="7 class1="7tr16ion(dimelass7lass="li*7/spa6, dimm, <>
cIfmdrire IS a check rout="d,mdrin we are runnef= POLLED code=locat1ion" 18"line" name="L151"> 151(struct         arhref="drivers/edac/edac" name="L115"> 115 *n = , dimm, <>
cT"is instance"is NOW RUNNING code=locat1ion" 18"line" name="L151"> 151        arhref="drivers/edac/edac" name="L115"> 115edac_dbg(3, <7l/a>(dimelass7X c#L1men7"> href="drivers/edac/ed7c_mc.77edac_dbg" cli class="virtual row bgworkq_snamp" id="L105" claref">ed_workq_snampdestr>5"> 105{
get_poll_msec" id="L105" clabgget_poll_msecdestr)ehan" class=1"srefss="sref">dimelass7Xhref="+c7t="line" name="L7">   7<7a>n = 5"> 105{
 115edac_dbg(3, <7lhe memor7t="line" name="L7">   7<7a>   7<7a>  an" class=1"srefss="sref">dimelass7/ass="li*7r] = {
dimm, <>
cReport acrdri takin code=locat1ion" 18"line" name="L151"> 151        printk" id="L105" claref">m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_INFO" id="L105" claKERN_INFOedac, e href="+code=pvt_info" claGivef= out  evice tom'%s' '%s':;
edac_dbg(3, <7espan>,
<7s= mos=>783e, dim=pvt_info" clalDEVc%s>);
len 115len 115lensrhref="drivers/edac/edac)ehan" class=1"srefss="sref">dimelass7eal const7c.c#78")>        78s="sref">loca05"> 105{
 *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass7/ c#L1men7c#shor")>        dimelass7>href="+c7c.c#78")78medimelass7>n>,
/7*edac_dbg(3, <7nby defau7string">"  dimm->7;nr_p780" class="lin 56        del> 1_from_global_listref="drivers/eddel> 1_from_global_listdestre" name="L119">srhref="drivers/edac/edac)san" class=1"srefss="sref">dimelass7"L91">  971
dimelass7"ass="li*7static void edac_dbg(3, <7"c_mcc__m7row(struct  *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass7"span>,
<74        dimelass7"al const7string">"csrow->7csrow79ode=mc#L92" id="L92" class="line" name="7"/a>("  csrow = 7%79."XPORT_SYMBOL_GPLa> *ref">m">add> 1mci" class="sref">mced_add> 1destehan" class=1"srefss="sref">dimelass7" c#L1men7string">"  csrow-&g7t;fir79edac_#L92" id="L92" class="line" name="7Lhref="+c7string">"  csrow-&g7t;las79ap = s="com1f">dimm, <>
*de=locat1ion" 18"line" name="L151"> 151,
"  csrow-&g7t;pag798p = s="com1f">dimm,  1:cRemoviv ysfs "L1rieslass=specifiedvac/  href=ure andde=locat1ion" 18"line" name="L151"> 151"  csrow-&g7t;nr_79c_mc.s="com1f">dimm,  151"  csrow-&8t;cha80 class="com1f">dimm,  151static void  151(struct  151         151"csrow->8e=mem80edac_stref="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
ed_ el> 1c#L90" id="L90" 1destrstref="drivers/edac/ed evicec#L90" id="L90" evicedestl105"> 105{
 151"  csrow = 8"+cod80s="srn" class="sref">n = "  csrow-&g837;p\80edac_dbg" cli href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
edac_dbg(3, <8p7dump_mc8"  csrow-&g8mtype80medimelass8p8dump_mc8"  csrow-&g8edac_80.4s="line" na"srefcref="drivbgmci-&g0;);
dimelass8p9dump_mc8"  csrow-&g8edac_80c_mc.c#L17" is/edac/edc_dbg(4, "\tmci->8edac_810p = %lx\"srefcref="drivautex_locaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass8p1n class8"string">"\tmci->8nr_cs81ws = bg" class="sref">edac_dbg(3, <8p2n class8de=nr_csrows" class="sre8">nr_81edac_dbg" cliass="line" na"> 122
cfindmdrivrequestidvac/  href="incdrivglobalvlist *ode=locat1ion" 18"line" name="L151"> 151"\tmci->8nr_di81s = %d, d"srefcref="drivarhref="drivers/edac/edacd=e=i" class="sreffind> 1i_by_ evref="drivers/edfind> 1i_by_ evedstre" name="L119">aevc#L90" id="L90" evedacehan" class=1"srefss="sref">dimelass8p4n class8de=tot_dimms" class="sre8">tot81dx = %d\nref1 56        arhref="drivers/edac/edacd=ye=i" class="srefNULLa> *n = "\tdev = &837;p\81s="sref">location#irtual row autex_unlocaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass8p6dump_mc8"string">"\tmod_nam8:ctl_81edac_dbg" cli class=" name=" 56        NULLa> *edac_dbg(3, <8 href="+c8de=mod_name" class="sref8>mod_818" class="lihc#L92" id="L92" class="line" name="8 8dump_mc8"string">"\tpvt_inf8 = Qmask ass="llass=name="L118"> 118 m 8 9dump_mc8> 120
 1_from_global_listdestre" name="L119">srhref="drivers/edac/edac)san" class=1"srefss="sref">dimelass8me="L121"8 121#endif          8     820p = %lx\"srefcref="drivautex_unlocaa> *ss="ctls_sutexref="drivers/edas="ctls_sutex4s="ehan" class=1"srefss="sref">dimelass8EDAC_DEBU8 */
edac_dbg(3, <8me="L123"8 12382edac_dbg" cliass="line" na"> 122
cflush workq procespesl*ode=locat1ion" 18"line" name="L151"> 151ed_workq_teardown" id="L105" claref">ed_workq_teardowndestre" name="L119">srhref="drivers/edac/edac)san" class=1"srefss="sref">dimelass8m4n class8 122
cmarkingvMCI offs="ll*ode=locat1ion" 18"line" name="L151"> 151 115edac_dbg(3, <8mhref="+c8ers/edac/edac_mc.c#L128"8id="L82medimelass8m8dump_mc8ef="drivers/edac/edac_mc8c#L12828dac_dbg" cliass="line" na"> 122
cremovivfrom  ysfs *ode=locat1ion" 18"line" name="L151"> 151        srhref="drivers/edac/edac)san" class=1"srefss="sref">dimelass8n>,
dimelass8span>,
diprintk" id="L105" claref">printkedstre" name="L119">KERN_INFO" id="L105" claKERN_INFOedac, e" name="L119">"drivMC" id="L105" cla"drivMC="stsbg" class="sref">edac_dbg(3, <8se="L123"8>,
);
len 115edac_dbg(3, <8s3n class8 href="drivers/edac/edac8mc.c#833e,  115len 115lensrhref="drivers/edac/edac)ehan" class=1"srefss="sref">dimelass8n_dump_mc8,
loca name=" 56        a href="drivers/edac/edacdbg" class="sref">edac_dbg(3, <8/6dump_mc8,
"XPORT_SYMBOL_GPLa> *ref">m"> el> 1c#L90" id="L90" 1destehan" class=1"srefss="sref">dimelass8n8dump_mc8ef="drivers/edac/edac_mc8c#L1383mask ass="llass=name="L118"> 118 m 8/9dump_mc8ef="drivers/edac/edac_mc8c#L14830" clstatic void  56         *  sbg" class="sref">edac_dbg(3, <8an>,
 115 151,
n =  105{
edac_dbg(3, <8rspan>,
<8ef="drivers/edac/edac_mc8c#L14843e,  105{
edac_dbg(3, <8r_dump_mc8"> 145        flagsmci" class="sreflagsedacayersan" class=1"srefss="sref">dimelass8aan class8ef="+code=edac_mem_types8 clas84*dimelass8r6dump_mc8 147846 = %d, d"srefcref="drivbgmci-&g3;);
dimelass8ahref="+c8"L148" class="line" name8"L14884medimelass8n8dump_mc8 a single-shot allocatio8 122
cECC rrrss page was not in ourvas=ory. Ignore et. *ode=locat1ion" 18"line" name="L151"> 151
840" class="lineef1!e="L115"> 115pagea> *dimelass8mented to8point to the next offset8/span85/a>        }
dimelass8mpan>,

edac_dbg(3, <8 n>,

 122
cFindmdrivactual page  href=ure =rin map et and fix *ode=locat1ion" 18"line" name="L151"> 151,
<8L154" class="line" name=8L154"85s = %d, d"srefcref="drivp=mci" class="srepgedacaye=i" class="srefpfn_to_pagea> *pagea> *dimelass8m_dump_mc8l optimize this whole fu8ction85dx = #L92" id="L92" class="line" name="8man class8ant to the value of Ǝ*pƁs="sref">locaref1 56        PageHighMe.c#L90" id="L90"PageHighMe.destre" name="L119">p=mci" class="srepgedac)ebg" class="sreffss="sref">dimelass8m6dump_mc8L157" class="line" name=8L157"85edac_dbg" cli class="virtual row local_irq_savea> *flagsmci" class="sreflagsedac)han" class=1"srefss="sref">dimelass8mhref="+c8eep the proper advancing8/span85medimelass8 8dump_mc8s="fref">rasan>
p=mci" class="srepgedac)han" class=1"srefss="sref">dimelass8m9dump_mc8s="fref">rasan>
(4, 
 122
cPerform architecrure specific atomir scrub operardri *ode=locat1ion" 18"line" name="L151"> 151,
   7<8a>virt_addrmci" class="srevirt_addredaca+v 56        offsetref="drivers/edoffseta>  sde="L115"> 115dimelass8ss="comme8t""line" name="L7">   7<8a>edac_dbg(3, <8sspan>,
<8ss"line" name="L7">   7<8a> 122
cUnmap and "> pletll*ode=locat1ion" 18"line" name="L151"> 151   7<8a>virt_addrmci" class="srevirt_addredacehan" class=1"srefss="sref">dimelass8san class85] = {
dimelass8s6dump_mc8/spa6                PageHighMe.c#L90" id="L90"PageHighMe.destre" name="L119">p=mci" class="srepgedac)ebg" class="sreffss="sref">dimelass8shref="+c8 1ref="d/edac_mc.c#L128"8id="L86me, flagsmci" class="sreflagsedac)han" class=1"srefss="sref">dimelass8rn>,
(4, dimm, <>
 FIXME - should" name="-1l*ode=locat1ion" 18"line" name="L151"> 151        f">mced_find>csrowrby_pagea> *mced_find>csrowrby_pagedestr href="drivers/edac/edss="ctlref="ref="drivers/edas="ctlref="4s="l105"> 105{
 151(struct n = ,  105{
 115dimelass8l_dump_mc8re href="drivers/edac/ed8c_mc.87edac_dbg" cliers  56        rowref="drivers/edrowedacs=ass="sref">lenlenlendimelass8lan class8ae href="drivers/edac/ed8c_mc.87*dimelass8X c#L1men8"> href="drivers/edac/ed8c_mc.876 = %d, d"srefcref="drivbgmci-&g1;);
len 115dimelass8lhref="+c8t="line" name="L7">   7<8a>dimelass8ln>,

 118 m 8lhe memor8t="line" name="L7">   7<8a>len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n =    7<8a>        }
 105{
        imci" class="srei i="]dbg" class="sref">edac_dbg(3, <8/ass="li*8r] = {
lendimelass8ec_mcc__m8.c#mos=)>        len        jmci" class="srej i=" <  56        csrowref="drivers/edcsrowedac" name="L115"> 115        jmci" class="srej i="++e=n" class="sref">n = 883e,  105{
 115        jmci" class="srej i="]" name="L115"> 115dimelass8e_dump_mc8c.c#78")>        lenlen 115edac_dbg(3, <8//a>(88s="sref">locationc#L92" id="L92" class="line" name="8/ c#L1men8c#shor")>         151href="+c8c.c#78")88me, edac_dbg(3, <8>n>,
/8* 118 m 8nby defau8string">"  dimm->8;nr_p880" class="linme="L73"ass="sref">lenmci-&g3;);
 118 m 8"L91">  981
len 115 118 m 8"ass="li*8static void  115 * 115 *  sass="llass=name="L118"> 118 m 8"c_mcc__m8row(struct  115 *dimelass8"span>,
<84        dimelass8"_dump_mc8string">"csrow->8csrow89edac_dbg" cli="drivereef1re" name="L119">pagea> * 115 *dimelass8"/a>("  csrow = 8%89s="sref">location    re" name="L119">pagea> * 115 *  ) &n&nan" class=1"srefss="sref">dimelass8" c#L1men8string">"  csrow-&g8t;fir89edac_dbg" cli class="""""1re" name="L119">pagea> * 115 *dimelass8"href="+c8string">"  csrow-&g8t;las89me, csrowref="drivers/edcsrowedac" name="L115"> 115 * 115 *n = "  csrow-&g8t;pag89.4s="line" name="L73"me="L73""srefcref="drivrowref="drivers/edrowedacd=e 56        imci" class="srei i="nan" class=1"srefss="sref">dimelass8"by defau8string">"  csrow-&g8t;nr_890" class="linnnnnnnnnnnnnnnnnbreaknan" class=1"srefss="sref">dimelass9pan class9"string">"  csrow-&9t;cha90/a>        }
static void (struct edac_dbg(3, <9p3n class9"        ,         rowref="drivers/edrowedacd==e-1)t1ion" 18"line" name="L151"> 151"csrow->9e=mem90edac_dbg" cli="drivera56        f">mced_printk" id="L105" claref">m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_ERRref="drivers/edKERN_ERRa>  sass="llass=name="L118"> 118 m 9p5n class9"tring">"  csrow = 9"+cod90s="sref">location        a href="+code=pvt_info" clacould"not look up page rrrss address %lx>);
 118 m 9p6n class9"tring">"  csrow-&g937;p\90edac_dbg" cli class="""""""""rundigned long) 56        pagea> *dimelass9p7dump_mc9"  csrow-&g9mtype90medimelass9p8dump_mc9"  csrow-&g9edac_90.4s="line" na name=" 56        rowref="drivers/edrowedachan" class=1"srefss="sref">dimelass9p9dump_mc9"  csrow-&g9edac_90c_mc.c#L92" id="L92" class="line" name="9pan class9"string">"\tmci->9edac_910p =  56        "XPORT_SYMBOL_GPLa> *ref">m">find>csrowrby_pagea> *mced_find>csrowrby_pagedest)han" class=1"srefss="sref">dimelass9p1n class9"string">"\tmci->9nr_cs91ws = bg" class="sref">edac_dbg(3, <9p2n class9de=nr_csrows" class="sre9">nr_91edac_const charl105"> 105{
layer_rive" id="L105" clabgn = "\tmci->9nr_di91s = %d, d[ 56        "drivMC_LAYER_BRANCHa> * 118 m 9p4n class9de=tot_dimms" class="sre9">tot91dx = %d\n[ 56        "drivMC_LAYER_CHANNELa> * 118 m 9p5n class9"string">"\tdev = &937;p\91s="sref">loca[ 56        "drivMC_LAYER_SLOTa> * 118 m 9p6n class9"string">"\tmod_nam9:ctl_91edac_dbg" cli[ 56        "drivMC_LAYER_CHIP_SELECTa> * 118 m 9p7dump_mc9de=mod_name" class="sref9>mod_918" cl}han" class=1"srefss="sref">dimelass9p8dump_mc9"string">"\tpvt_inf9 = Ζp = si" class="sref"XPORT_SYMBOL_GPLa> *ref">layer_rive" id="L105" clabgdimelass9p9dump_mc9> 120
(4, #endif          9     920p = static void  56         105{
(4, 
        (4, 92edac_dbg" clirtual ro        eeeeeeconst ers  56        posmci" class="srepos i="[ 56        "drivMAX_LAYERSa> *(4, , &qers/edu1edac_d=i" class="srefcount" id="L105" clacount i=")c#L17" is/edac/edc_dbg(4, n =         imci" class="srei i="s=ass="sref">lendimelass9m6dump_mc9[] = {
 115 1c#L90" id="L90"ce> 1 i="a+class="sref">lendimelass9m8dump_mc9ef="drivers/edac/edac_mc9c#L1292mask ass="llass=name="L118"> 118 m 9m9dump_mc9f="drivers/edac/edac_mc.9#L130920" class="lineef1!e="L115"> 115n =         }
 115noef="_count" id="L105" clace>noef="_count i="a+class="sref">lendimelass9span>,
dimelass9se="L123"9>,
dimelass9n_dump_mc9,
len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n = locationeef1 56        posmci" class="srepos i="[ 56        imci" class="srei i="] < 0)t1ion" 18"line" name="L151"> 151,
dimelass9/href="+c9ers/edac/edac_mc.c#L138"9id="L93me, len        imci" class="srei i="]nan" class=1"srefss="sref">dimelass9/8dump_mc9ef="drivers/edac/edac_mc9c#L1393.4s="line" name="L73">5"> 105{
 115per_layer i="[ 56        imci" class="srei i="][ 56        indexref="drivers/edindex i="]a+class="sref">lendimelass9s9dump_mc9ef="drivers/edac/edac_mc9c#L1493c_mc.c#L17" is/edac/edc_dbg(4, ,
        a href="drivers/edac/edac" name="L115"> 115 151,
 115        imci" class="srei i=" + 1]. 56        sizfref="drivers/edsizfedacsan" class=1"srefss="sref">dimelass9aot; 145         105{
(4, 94edac_dbg" cli class="""""""""            virtual row boolref="drivers/edbools = & 56        (4, ,         posmci" class="srepos i="[ 56        "drivMAX_LAYERSa> *(4,         u"string">&qers/edu1edac_d=i" class="srefcount" id="L105" clacount i=")c#L17" is/edac/edc_dbg(4, 
940" cln" class="sref">n = lendimelass9mpan>,

edac_dbg(3, <9 n>,

 115 1c#L90" id="L90"ue> 1 i="a+class="sref">lendimelass9 span>,
<9L154" class="line" name=9L154"953;smaan" class=1"srefss="sref">dimelass9m_dump_mc9l optimize this whole fu9ction95dx = %d\nref1!e="L115"> 115n = location"srefcref="driva href="drivers/edac/edac" name="L115"> 115noef="_count" id="L105" clace>noef="_count i="a+class="sref">lendimelass9m6dump_mc9L157" class="line" name=9L157"95edac_dbg" cli class=" name=han" class=1"srefss="sref">dimelass9mhref="+c9eep the proper advancing9/span958" class="lihc#L92" id="L92" class="line" name="9 8dump_mc9s="fref">rasan>
 118 m 9m9dump_mc9s="fref">rasan>
len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n =         }
        posmci" class="srepos i="[ 56        imci" class="srei i="] < 0)t1ion" 18"line" name="L151"> 151,
   7<9a>dimelass9ss="comme9t""line" name="L7">   7<9a>len        imci" class="srei i="]nan" class=1"srefss="sref">dimelass9sspan>,
<9ss"line" name="L7">   7<9a>,  115per_layer" id="L105" claue>per_layer i="[ 56        imci" class="srei i="][ 56        indexref="drivers/edindex i="]a+class="sref">lendimelass9L_dump_mc9n="line" name="L7">   7<9a>locationeef1 56        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115 151         115        imci" class="srei i=" + 1]. 56        sizfref="drivers/edsizfedacsan" class=1"srefss="sref">dimelasf9"href="+c9 1ref="d/edac_mc.c#L128"9id="L968" class="lihc#L92" id="L92" class="line" name="9rn>,
(4,          105{
(4, &qers/edu1edac_d=i" class="srefrrrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4, (struct         posmci" class="srepos i="[ 56        "drivMAX_LAYERSa> *(4, ,
<9 105{
(4,  105{
(4, location        eeconst charl105"> 105{
(4,  href="drivers/edac/ed9c_mc.97edac_dbg" cli class="""""""""  const charl105"> 105{
(4,    7<9a>,  105{
(4, ,

        boolref="drivers/edbools = & 56        (4,    7<9a>        page_fr>  _number" id="L105" clapage_fr>  _numberedacsc#L17" is/edac/edc_dbg(4,    7<9a>        }
        offsetref_pagea> *(4,         graiimci" class="sregraii i=")c#L17" is/edac/edc_dbg(4,         n = 983e,         remapped_pagea> *dimelasf9e_dump_mc9c.c#78")>        98s="sref">locaeef1 56        ine" na_getrlog_cec#L90" id="L90"n =          105{
(4, 98me,         ine" na_printk" id="L105" claref">m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_WARNINGref="drivers/edKERN_WARNINGedacsc#L17" is/edac/edc_dbg(4, ,
/9*);
 118 m 9nby defau9string">"  dimm->9;nr_p980" class="linme="L73",         irrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4,   991
        ms=mci" class="srems=edacsdvirtual row labelref="drivers/edlabeledacsdvirtual row locardrimci" class="srelocardriedacsc#L17" is/edac/edc_dbg(4, static void         detailref="drivers/eddetailedacsv 56        other_detailref="drivers/edother_detailedac)san" class=1"srefss="sref">dimelasf9"c_mcc__m9row(struct dimelasf9"span>,
<94                ine" na_printk" id="L105" claref">m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_WARNINGref="drivers/edKERN_WARNINGedacsc#L17" is/edac/edc_dbg(4, "csrow->9csrow99edac_dbg" cli="driver, );
 118 m 9"/a>("  csrow = 9%99s="sref">location     hrass="lin        irrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4, "  csrow-&g9t;fir99edac_dbg" cli class=""""" hrass="lin        ms=mci" class="srems=edacsdvirtual row labelref="drivers/edlabeledacsdvirtual row locardrimci" class="srelocardriedacsc#L17" is/edac/edc_dbg(4, "  csrow-&g9t;las99me, dimelasf9"n>,
"  csrow-&g9t;pag99.4s="line" nac#L92" id="L92" class="line" name="9"by defau9string">"  csrow-&g9t;nr_990" class="lin 56        ine" inc_ce_rrrss" id="L105" clabga href="drivers/edac/edac, e" name="L119">        posmci" class="srepos i=", e" name="L119">dimelasf10pan class10pan ng">"  csrow-&g10pan>10pax = #L/pre>
&qudo;  cclas46/bc/5e7a3caa22d92d3d3e52f67d324ca47a6681_3/10pan>n" class=1"srefss="sref">dimelasf10p1n class10p/a>static void 10pws = %d, eef1 56        a href="drivers/edac/edac" name="L115"> 115SCRUB_SW_SRC" id="L105" claSCRUB_SW_SRCedace=n" class="sref">n = 10pedac_dbg" clirtual ro0 href="+codem, <>
de=locat1ion" 18"line" name="L151"> 151        ,  151"csrow->10ptr>10p4e 151"  csrow = 10ptr>10p5e 151"  csrow-&g10ptr>10p6e 151"  csrow-&g10ptr>10p7e 151"  csrow-&g10ptr>10p8e 151"  csrow-&g10ptr>10p9e 151"\tmci->10"st>10"se 151"\tmci->10"st>10"1e 15110"2e 151"\tmci->10"st>10"3e,  115 15110"edac_dbg" cli="driverme="L73"ass="sref">len 115a href="drivers/edac/edac, e" name="L119">page_fr>  _number" id="L105" clapage_fr>  _numberedac) :t1ion" 18"line" name="L151"> 151"\tdev = &10"st>10"s="sref">location        a" name="L119">page_fr>  _number" id="L105" clapage_fr>  _numberedacsan" class=1"srefss="sref">dimelasf1016n class10"string">"\tmod_nam10"st>10"edac_#L92" id="L92" class="line" name="10"7n class10de=mod_name" class="sref10de=>10"me, m">scrub_blocaa> *(4, "\tpvt_inf10"st>10".4s="line" name="L73"me="L73"nnnnnnnnnnnn   v 56        offsetref_pagea> *dimelasf1019n class10> 120
10 ws = bg" class="sref">edac_dbg(3, <10 2n class10 123 105{
(4, 10 3e, &qers/edu1edac_d=i" class="srefrrrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4,         posmci" class="srepos i="[ 56        "drivMAX_LAYERSa> *(4, 10 s="sref">location        eeconst charl105"> 105{
(4,  105{
(4, 10 me,  105{
(4,  105{
(4, 10 0" class="linme="L73"me="L73"nnconst charl105"> 105{
(4, 10f=4s="line" name="L73"me="L73"nnconst  56        boolref="drivers/edbools = & 56        (4, n = ,
>10fedac_dbg" clieef1 56        ine" na_getrlog_uec#L90" id="L90"n = 10f3e,  105{
(4, ,
lenm">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_WARNINGref="drivers/edKERN_WARNINGedacsc#L17" is/edac/edc_dbg(4, location     hrass="lin);
 118 m 10f6n class10,
(4, 10fme, (4,         other_detailref="drivers/edother_detailedac)san" class=1"srefss="sref">dimelasf10f9n class10ef="drivers/edac/edac_mc10ef=>10f0" class="linme="L73"elsean" class=1"srefss="sref">dimelasf104an class10ef="drivers/edac/edac_mc10ef=>10efdac_dbg" cli="driverme="L73"ass="sref">lenm">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_WARNINGref="drivers/edKERN_WARNINGedacsc#L17" is/edac/edc_dbg(4, 10ews = %d,                 e="+codass="lin  href="+code=pvt_info" cla%d"UE=%s on=%s (%s %s)>);
 118 m 1042n class10ef="drivers/edac/edac_mc10ef=>10eedac_dbg" clirtual ro        eeeeeerme="L73"ass="sref">len(4, lendimelasf1044n class10"> 145 >10eedac_dbg" clic#L92" id="L92" class="line" name="1045n class10ef="+code=edac_mem_types10ef=>10e*dimelass10e6n class10 147        ine" na_getr="dic_on_uec#L90" id="L90"n = 10eme,  105{
(4, 10e.4s="line" name="L73"me="L73""srefcref="driv="dic" id="L105" clapadicedstre href="+code=pvt_info" claUE=%s on=%s (%s%s - %s)>);
 118 m 1049n class10 offset to be used. At10e0" class="linme="L73", len        other_detailref="drivers/edother_detailedac)san" class=1"srefss="sref">dimelasf105an class10point to the next offset10poi>10po" class="linme="L73"elsean" class=1"srefss="sref">dimelasf1051n class10erved
);
 118 m 1052n class10served
lendimelasf1053n class10L154" class="line" name=10L15>10p3dac_dbg" clic#L92" id="L92" class="line" name="1054n class10l optimize this whole fu10l o>10pdx = #L92" id="L92" class="line" name="10p5n class10ant to the value of ཆant>10ps="sref">loca 56        ine" inc_ue_rrrss" id="L105" clabga href="drivers/edac/edac, e" name="L119">        posmci" class="srepos i=", e" name="L119">dimelasf10p6n class10L157" class="line" name=10L15>10p64s="c#L92" id="L92" class="line" name="1057n class10eep the proper advancing10eep>10pmedimelass10p8n class10s="fref">rasan>
10p.4s="#defan> e" name="L119">OTHER_LABELa> *dimelass10p9n class10s="fref">rasan>
10pc_mc.c#L17" is/edac/edc_dbg(4, 
,  151   7<10s=">10i1e 151   7<10t"">10i2e 151   7<10ss">10i3e 151   7<10n=">10i4e 15110i5e 151        10i6e 15110i7e 15110i8e 15110i9e 151(,  15110t1e 151(struct ,  15110t3e 15110t4e 15110t5e 151 href="drivers/edac/ed10"> >10t6e 151   7<10t=">10t7e 151
        hw_eventrna_rrr_typec#L90" id="L90"hw_eventrna_rrr_types = & 56        typec#L90" id="L90"types = sass="llass=name="L118"> 118 m 1079n class10t="line" name="L7">   7<10t=">10t0" class="linme="L73",  105{
(4,    7<10n=">10n=e, &qers/edu1edac_d=i" class="srefrrrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4,   _numberedacsc#L17" is/edac/edc_dbg(4,         10nedac_dbg" clirtual ro        eeconst undigned longv 56        offsetref_pagea> *(4,         syndromea> *(4,         10nedac_dbg" cli="driverme="L73"eeconst ers  56        top_layerc#L90" id="L90"top_layeredacsc#L17" is/edac/edc_dbg(4, location        eeconst ers  56        aid_layerref="drivers/edaid_layeredacsc#L17" is/edac/edc_dbg(4,         10nedac_dbg" cli class="""""""""  const ers  56        low_layermci" class="srelow_layeredacsc#L17" is/edac/edc_dbg(4,  105{
(4, /10.c#>10n.4s="line" name="L73"me="L73"nnconst charl105"> 105{
(4, "  dimm->10str>10n0" cln" class="sref">n = 101<="sref">loca  href="+codem,  151static void 101ws = %d, charl 56        detailref="drivers/eddetailedac[80]sdvirtual row locardrimci" class="srelocardriedac[80]san" class=1"srefss="sref">dimelasf1092n class10row(struct "drivMC_LABEL_LENref="drivers/ed"drivMC_LABEL_LENs = &+ 1&+ sizfofre" name="L119">OTHER_LABELa> * 105{
 115dimelasf1093n class104         105{
dimelasf1094n class10string">"csrow->10str>101dx = %d\nrrs  56        row" id="L105" clarowx = &= -1sdvirtual row chaimci" class="srechaix = &= -1san" class=1"srefss="sref">dimelasf1095n class10string">"  csrow = 10str>1015dac_dbg" cliers  56        posmci" class="srepos i="[ 56        "drivMAX_LAYERSa> *        aid_layerref="drivers/edaid_layeredacs  56        low_layermci" class="srelow_layeredac }san" class=1"srefss="sref">dimelasf1096n class10string">"  csrow-&g10str>1016dac_dbg" cliers  56        imci" class="srei i="san" class=1"srefss="sref">dimelasf1097n class10string">"  csrow-&g10str>101me,         graiimci" class="sregraii i="san" class=1"srefss="sref">dimelasf1098n class10string">"  csrow-&g10str>101.4s="line" na 56        boolref="drivers/edbools = & 56        dimelasf1099n class10string">"  csrow-&g10str>1010" class="lin 56        u8a> *dimelasf11pan class11pan ng">"  csrow-&g11pan>11pax = #L" class=1"srefss="sref">dimelasf11p1n class11p/a>static void 11pws = %d,  56        );
 105{
 115dimelasf11p2n class11pow(struct dimelasf11p3n class11p        , <>
de=locat1ion" 18"line" name="L151"> 151"csrow->11ptr>11p4e 151"  csrow = 11ptr>11p5e 151"  csrow-&g11ptr>11p6e 151"  csrow-&g11ptr>11p7e,ed.ed=locat1ion" 18"line" name="L151"> 151"  csrow-&g11ptr>11p8e 151"  csrow-&g11ptr>1100" class="linass=rass="sref">len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n 151"\tmci->11"st>111/a>        }
        posmci" class="srepos i="[ 56        imci" class="srei i="] &nam= (ers) 56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="]. 56        sizfref="drivers/edsizfedace=n" class="sref">n 151"\tmci->11"st>111ws = %d,                 eef1 56        typec#L90" id="L90"types =  ==e=i" class="srefHW_EVENT_ERR_CORRECTEDc#L90" id="L90"HW_EVENT_ERR_CORRECTEDedac)c#L17" is/edac/edc_dbg(4,  105{
dimelasf11"3n class11"string">"\tmci->11"st>11"3e, dimelasf11"4n class11de=tot_dimms" class="sre11de=>11"edac_dbg" cli="driverme="L73"eeeeeerm05"> 105{
dimelasf11"5n class11"string">"\tdev = &11"st>111*dimelass1116n class11"string">"\tmod_nam11"st>111edac_dbg" cli class="""""""""virtual row m">printkedstre" name="L119">a href="drivers/edac/edac, e" name="L119">KERN_ERRref="drivers/edKERN_ERRedacsc#L17" is/edac/edc_dbg(4, , );
 118 m 11"8n class11"string">"\tpvt_inf11"st>11".4s="line" name="L73"me="L73"nnnnnnnnnnnn   virtual row layer_pvt_ i="[ 56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="]. 56        typec#L90" id="L90"types = ]sc#L17" is/edac/edc_dbg(4,  120
        imci" class="srei i="]s 05"> 105{
 115        imci" class="srei i="]. 56        sizfref="drivers/edsizfedacesan" class=1"srefss="sref">dimelasf112an class11 121#endif          11 12>112fdac_dbg" cli="driverme="L73"a href="+codem, <>
de=locat1ion" 18"line" name="L151"> 151
,  151, , routn cn anded=locat1ion" 18"line" name="L151"> 1511123e 1511124e 1511125e 15111 edac_dbg" cli class=""""""""" 56        posmci" class="srepos i="[ 56        imci" class="srei i="] = -1san" class=1"srefss="sref">dimelasf11 7n class11ers/edac/edac_mc.c#L128"11ers>11 me, 11 .4s="line" name="L73"eef1 56        posmci" class="srepos i="[ 56        imci" class="srei i="] &nam= 0)t1ion" 18"line" name="L151"> 15111 0" class="linme="L73"me="L73" 56        dimelasf113an class11f="drivers/edac/edac_mc.11f=">11f=4s="line" nac#L92" id="L92" class="line" name="11f1n class11href="drivers/edac/edac_11hre>113ws = bg" class="sref">edac_dbg(3, <11f2n class11>,
 1511133e 151,
,  1511135e 151,
,  1511137e 1511138e 1511139e 151114se 1511141e 1511142e 15111e3e,         graiimci" class="sregraii i=" = 0;t1ion" 18"line" name="L151"> 151 145 >11eedac_dbg" cli05"> 105{
        labelref="drivers/edlabeledac;t1ion" 18"line" name="L151"> 1511145dac_dbg" cli105"> 105{
dimelasf11e6n class11 147len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115n 15111eme,  105{
        a href="drivers/edac/edac" name="L115"> 115dimelasf11e8n class11 a single-shot allocatio11 a >11e.4s="an" class=1"srefss="sref">dimelasf11e9n class11 offset to be used. At11e0" class="linme="L73"eef1 56        top_layerc#L90" id="L90"top_layeredac &nam= 0 &n&nl 56        top_layerc#L90" id="L90"top_layeredac !=e=56        dimmref="drivers/eddimms = " name="L115"> 115 15111po" class="linme="L73"""""""""continuesan" class=1"srefss="sref">dimelasf1151n class11erved
        aid_layerref="drivers/edaid_layeredac !=e=56        dimmref="drivers/eddimms = " name="L115"> 115 151
dimelasf1153n class11L154" class="line" name=11L15>1153e,  115 151115edac_dbg" cli="driverme="L73"continuesan" class=1"srefss="sref">dimelasf1155n class11ant to the value of ཇant>115*dimelass11p6n class11L157" class="line" name=11L15>115edac_dbg" cli class="  href="+codem,  151115me,  115        graiimci" class="sregraii i=")t1ion" 18"line" name="L151"> 151rasan>
115.4s="line" name="L73"me="L73""srefcref="drivgraiimci" class="sregraii i=" =  56        dimmref="drivers/eddimms = " name="L115"> 115dimelasf1159n class11s="fref">rasan>
11pc_mc.c#L17" is/edac/edc_dbg(4, 
 151   7<11s=">11i1e 151   7<11t"">11i2e 151   7<11ss">11i3e 151   7<11n=">11i4e 15111i5e 151        116edac_dbg" cli class="eef1 56        inable_per_layer_report" id="L105" clabnable_per_layer_reportedacd&n&nl 56        dimmref="drivers/eddimms = " name="L115"> 115n 151116me,         p" id="L105" claps = d!=e=56        labelref="drivers/edlabeledace=n" class="sref">n 151116.4s="line" name="L73"me="L73"nnnnnnnn 56        strcpyref="drivers/edstrcpyedstre" name="L119">p" id="L105" claps = s 05"> 105{
 *dimelasf1169n class1152" id="a href="drivers/1152">1160" class="linme="L73",         strleimci" class="srestrleiedstre" name="L119">OTHER_LABELa> *dimelasf117an class11tr16ion(117ws = %d,                 virtual row strcpyref="drivers/edstrcpyedstre" name="L119">p" id="L105" claps = s 05"> 105{
 115dimelasf1172n class11ef17>(struct         p" id="L105" claps = d+=e=56        strleimci" class="srestrleiedstre" name="L119">p" id="L105" claps = esan" class=1"srefss="sref">dimelasf1173n class11 105{
dimelasf1174n class11re href="drivers/edac/ed11re >117dx = #L92" id="L92" class="line" name="1175n class11ae href="drivers/edac/ed11ae >117s="sref">location        a href="+codem, <>
de=locat1ion" 18"line" name="L151"> 151 href="drivers/edac/ed11"> >11t6e 151   7<11t=">11t7e,t_i =ri m 151
,  151   7<11t=">11t0" class="linme="L73",         id hrdb=mci" class="sre);
 118 m 118an class11n="line" name="L7">   7<11n=">11n=e,  115?&  href="+code=pvt_info" clarank;
 118 m 1181n class11r] = {
 115 105{
 115dimelasf11n2n class11.c#mos=)>        11nedac_dbg" clirtual ro        eef1 56        row" id="L105" clarowx = &== -1)t1ion" 18"line" name="L151"> 151        row" id="L105" clarowx = &=  56        dimmref="drivers/eddimms = " name="L115"> 115dimelasf11n4n class11c.c#78")>        11nedac_dbg" cli="driverme="L73"else eef1 56        row" id="L105" clarowx = &&nam= 0 &n&nl 56        row" id="L105" clarowx = &!=e=56        dimmref="drivers/eddimms = " name="L115"> 115 151location        ee        row" id="L105" clarowx = &= -2san" class=1"srefss="sref">dimelasf11n6n class11c#shor")>        118edac_#L92" id="L92" class="line" name="11n7n class11c.c#78") 151/11.c#>11n.4s="line" name="L73"me="L73"nn        chaimci" class="srechaix = &= 05"> 105{
 115dimelasf11n9n class11string">"  dimm->11str>1180" class="linme="L73",         chaimci" class="srechaix = &&nam= 0 &n&nl 56        chaimci" class="srechaix = &!=e=56        dimmref="drivers/eddimms = " name="L115"> 115dimelasf119an class111
        chaimci" class="srechaix = &= -2san" class=1"srefss="sref">dimelasf1191n class11static void 119ws = %d,         c#L92" id="L92" class="line" name="1192n class11row(struct 1113s = #L92" id="L92" class="line" name="1194n class11string">"csrow->11str>111dx = %d\nref1! 56        inable_per_layer_report" id="L105" clabnable_per_layer_reportedace=n" class="sref">n 151"  csrow = 11str>119s="sref">locationvirtual row strcpyref="drivers/edstrcpyedstre" name="L119">labelref="drivers/edlabeledacsdv href="+code=pvt_info" claany as=ory;
dimelasf1196n class11string">"  csrow-&g11str>1116dac_dbg" cli}eelse n" class="sref">n 151"  csrow-&g11str>119me, ,: (%d,%d)>);
dimelasf1198n class11string">"  csrow-&g11str>119.4s="line" name="L73"eef1 56        p" id="L105" claps = d==e=56        labelref="drivers/edlabeledacean" class=1"srefss="sref">dimelasf1199n class11string">"  csrow-&g11str>1190" class="linme="L73",         strcpyref="drivers/edstrcpyedstre" name="L119">labelref="drivers/edlabeledacsdv href="+code=pvt_info" claunknown as=ory;
dimelasf12pan class12pan ng">"  csrow-&g12pan>120/a>        }
        typec#L90" id="L90"types =  ==e=i" class="srefHW_EVENT_ERR_CORRECTEDc#L90" id="L90"HW_EVENT_ERR_CORRECTEDedac) n" class="sref">n 151static void 120ws = %d,                 eef1 56        row" id="L105" clarowx = &&nam= 0) n" class="sref">n 151(struct  105{
 115        row" id="L105" clarowx = ]" name="L115"> 115        rrrss_count" id="L105" clarrrss_countedacsan" class=1"srefss="sref">dimelasf12p3n class12p                chaimci" class="srechaix = &&nam= 0ean" class=1"srefss="sref">dimelasf12p4n class12ptring">"csrow->12ptr>120edac_dbg" cli="driverme="L73"eeeeeermeeeeeerm05"> 105{
 115        row" id="L105" clarowx = ]" name="L115"> 115        chaimci" class="srechaix = ]" name="L115"> 115        rrrss_count" id="L105" clarrrss_countedacsan" class=1"srefss="sref">dimelasf12p5n class12ptring">"  csrow = 12ptr>120s="sref">location        c#L92" id="L92" class="line" name="12p6n class12ptring">"  csrow-&g12ptr>120edac_dbg" cli class="}nelsean" class=1"srefss="sref">dimelasf12p7n class12ptring">"  csrow-&g12ptr>120me,         row" id="L105" clarowx = &&nam= 0)an" class=1"srefss="sref">dimelasf12p8n class12ptring">"  csrow-&g12ptr>120.4s="line" name="L73"me="L73"nn        a href="drivers/edac/edac" name="L115"> 115        row" id="L105" clarowx = ]" name="L115"> 115        rrrss_count" id="L105" clarrrss_countedacsan" class=1"srefss="sref">dimelasf12p9n class12ptring">"  csrow-&g12ptr>1200" class="linc#L92" id="L92" class="line" name="121an class12"string">"\tmci->12"st>121ax = #L" class=1"srefss="sref">dimelasf1211n class12"string">"\tmci->12"st>121ws = %d,   href="+codem,  151121edac_dbg" cli05"> 105{
locardrimci" class="srelocardriedacsan" class=1"srefss="sref">dimelasf12"3n class12"string">"\tmci->12"st>12"3e, len        imci" class="srei i=" <  56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="++e=n" class="sref">n 15112"edac_dbg" cli="drivereef1 56        posmci" class="srepos i="[ 56        imci" class="srei i="] < 0)an" class=1"srefss="sref">dimelasf12"5n class12"string">"\tdev = &12"st>121s="sref">location        continuesan" class=1"srefss="sref">dimelasf1216n class12"string">"\tmod_nam12"st>121edac_#L92" id="L92" class="line" name="12"7n class12de=mod_name" class="sref12de=>12"me,         sprintfref="drivers/edsprintfedstre" name="L119">p" id="L105" claps = s 0 href="+code=pvt_info" cla%s:%d &
 118 m 12"8n class12"string">"\tpvt_inf12"st>12".4s="line" name="L73"me="L73"nnnnn 56        id hrlayer_pvt_" id="L105" claref">layer_pvt_ i="[ 56        a href="drivers/edac/edac" name="L115"> 115        imci" class="srei i="]. 56        typec#L90" id="L90"types = ]sc#L17" is/edac/edc_dbg(4,  120
        imci" class="srei i="]esan" class=1"srefss="sref">dimelasf122an class12 121#endif          12 12>122=4s="line" nac#L92" id="L92" class="line" name="12 1n class12 */
        locardrimci" class="srelocardriedac)an" class=1"srefss="sref">dimelasf12 2n class12 123        p" id="L105" claps = d- 1)d=e= href="+code=pvt_info#39;\0o#39;ref="drsan" class=1"srefss="sref">dimelasf12 3n class12L124" class="line" name=12L12>1223s = #L92" id="L92" class="line" name="12 4n class12 151122*dimelass12 6n class12[] = {
        graii_bitsmci" class="sregraii_bits i="d=e=i" class="sreffls_longmci" class="srefls_longedstre" name="L119">graiimci" class="sregraii i=")&+ 1san" class=1"srefss="sref">dimelasf12 7n class12ers/edac/edac_mc.c#L128"12ers>12 me,         trace>m">eventc#L90" id="L90"trace>m">eventedstre" name="L119">typec#L90" id="L90"types = s  56        as=mci" class="srems=edacse=56        labelref="drivers/edlabeledacse=56        rrrss_count" id="L105" clarrrss_countedacsc#L17" is/edac/edc_dbg(4,         a href="drivers/edac/edac" name="L115"> 115        top_layerc#L90" id="L90"top_layeredacs  56        aid_layerref="drivers/edaid_layeredacs  56        low_layermci" class="srelow_layeredacsc#L17" is/edac/edc_dbg(4, 12 0" class="linme="L73"me="L73 56        PAGES_TO_MiBmci" class="srePAGES_TO_MiBedstre" name="L119">page_fr>  _number" id="L105" clapage_fr>  _numberedac) |v 56        offsetref_pagea> *(4, 123=e,         syndromea> *dimelasf12f1n class12href="drivers/edac/edac_12hre>123ws = bg" class="sref">edac_dbg(3, <12f2n class12>,
 1511233e,         typec#L90" id="L90"types =  ==e=i" class="srefHW_EVENT_ERR_CORRECTEDc#L90" id="L90"HW_EVENT_ERR_CORRECTEDedac) n" class="sref">n 151,
detailref="drivers/eddetailedac, sizfofre" name="L119">detailref="drivers/eddetailedac)sc#L17" is/edac/edc_dbg(4, location        a href="+code=pvt_info" clapage:0x%lx offset:0x%lx graii:%ld syndrome:0x%lx&
 118 m 12f6n class12,
        page_fr>  _number" id="L105" clapage_fr>  _numberedacsv 56        offsetref_pagea> *(4, 123me, graiimci" class="sregraii i="s  56        syndromea> *dimelasf12f8n class12ef="drivers/edac/edac_mc12ef=>123.4s="line" name="L73" 56        id hrce_rrrssc#L90" id="L90"        a href="drivers/edac/edacse=56        rrrss_count" id="L105" clarrrss_countedacsc 56        posmci" class="srepos i="s  56        as=mci" class="srems=edacse=56        locardrimci" class="srelocardriedacse=56        labelref="drivers/edlabeledacsan" class=1"srefss="sref">dimelasf12f9n class12ef="drivers/edac/edac_mc12ef=>1230" class="linme="L73", detailref="drivers/eddetailedac,  56        other_detailref="drivers/edother_detailedacse=56        rnable_per_layer_report" id="L105" clabnable_per_layer_reportedacsan" class=1"srefss="sref">dimelasf124an class12ef="drivers/edac/edac_mc12ef=>124=e,   _numberedacsv 56        offsetref_pagea> *dimelasf1241n class12rs/edac/edac_mc.c#L142" 12rs/>124ws = %d, }eelse n" class="sref">n 151124edac_dbg" clirtual ro 56        snprintfref="drivers/edsnprintfedstre" name="L119">detailref="drivers/eddetailedac, sizfofre" name="L119">detailref="drivers/eddetailedac)sc#L17" is/edac/edc_dbg(4,  118 m 1244n class12"> 145 >124edac_dbg" cli="driverme="L73" 56        page_fr>  _number" id="L105" clapage_fr>  _numberedacsv 56        offsetref_pagea> *dimelasf1245n class12ef="+code=edac_mem_types12ef=>124*dimelass12e6n class12 147        a href="drivers/edac/edacse=56        rrrss_count" id="L105" clarrrss_countedacsc 56        posmci" class="srepos i="s  56        as=mci" class="srems=edacse=56        locardrimci" class="srelocardriedacse=56        labelref="drivers/edlabeledacsan" class=1"srefss="sref">dimelasf1247n class12"L148" class="line" name12"L1>12eme,         other_detailref="drivers/edother_detailedacse=56        rnable_per_layer_report" id="L105" clabnable_per_layer_reportedac)san" class=1"srefss="sref">dimelasf1248n class12 a single-shot allocatio12 a >124.4s="line" nac#L92" id="L92" class="line" name="12e9n class12 offset to be used. At12e0" clc#L92" id="L92" class="line" name="125an class12point to the next offset12poi>12po" cl=56        EXPORT_SYMBOL_GPLa> *dimelasf1251n class12erved

The original LXR software byv=ri n" class=http://sourceforge.net/projects/lxr">LXR m,al refsdri byvn" class=mailto:lxr@>



lxr.>