From 5ff8a760bd2e5ce3366321274e2ffa25893de3e7 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Thu, 10 Jan 2013 13:31:47 -0300 Subject: [PATCH] --- yaml --- r: 359967 b: refs/heads/master c: 61734e1835867e6e38438c8365149748641e3525 h: refs/heads/master i: 359965: 539a8b29f63001ba7c78b3b9aafc61592a098b84 359963: cf6683257b4c164c5655128ebcba27bddf3a9b9b 359959: 3cc0de1ab21878c411188bd211798173c539f633 359951: 8e281fae37be9d582007503165de5740e84f5cf9 359935: 6ffb6bdf5f0fab6e6d187a005954665f2fa590cc v: v3 --- [refs] | 2 +- trunk/drivers/edac/i3200_edac.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 1cfe07c1460e..91efd62eb015 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5f466cb0257998549058c16e9d44bb74804a273d +refs/heads/master: 61734e1835867e6e38438c8365149748641e3525 diff --git a/trunk/drivers/edac/i3200_edac.c b/trunk/drivers/edac/i3200_edac.c index 20641925d313..aa44c1718f50 100644 --- a/trunk/drivers/edac/i3200_edac.c +++ b/trunk/drivers/edac/i3200_edac.c @@ -323,6 +323,9 @@ static unsigned long drb_to_nr_pages( int n; n = drbs[channel][rank]; + if (!n) + return 0; + if (rank > 0) n -= drbs[channel][rank - 1]; if (stacked && (channel == 1) && @@ -389,19 +392,19 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx) * cumulative; the last one will contain the total memory * contained in all ranks. */ - for (i = 0; i < mci->nr_csrows; i++) { + for (i = 0; i < I3200_DIMMS; i++) { unsigned long nr_pages; - struct csrow_info *csrow = mci->csrows[i]; - nr_pages = drb_to_nr_pages(drbs, stacked, - i / I3200_RANKS_PER_CHANNEL, - i % I3200_RANKS_PER_CHANNEL); + for (j = 0; j < nr_channels; j++) { + struct dimm_info *dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, + mci->n_layers, i, j, 0); - if (nr_pages == 0) - continue; + nr_pages = drb_to_nr_pages(drbs, stacked, j, i); + if (nr_pages == 0) + continue; - for (j = 0; j < nr_channels; j++) { - struct dimm_info *dimm = csrow->channels[j]->dimm; + edac_dbg(0, "csrow %d, channel %d%s, size = %ld Mb\n", i, j, + stacked ? " (stacked)" : "", PAGES_TO_MiB(nr_pages)); dimm->nr_pages = nr_pages; dimm->grain = nr_pages << PAGE_SHIFT;