diff options
-rw-r--r-- | drivers/edac/amd64_edac.c | 37 | ||||
-rw-r--r-- | drivers/edac/i3200_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/i5000_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/i5100_edac.c | 2 | ||||
-rw-r--r-- | drivers/edac/i5400_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/i7300_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/i7core_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/mv64x60_edac.c | 1 | ||||
-rw-r--r-- | drivers/edac/ppc4xx_edac.c | 7 | ||||
-rw-r--r-- | drivers/edac/sb_edac.c | 2 | ||||
-rw-r--r-- | drivers/edac/tile_edac.c | 2 | ||||
-rw-r--r-- | drivers/edac/x38_edac.c | 5 |
12 files changed, 3 insertions, 78 deletions
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index 8126db0c8987..e2c5a94f683c 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c | |||
@@ -715,25 +715,6 @@ static inline u64 input_addr_to_sys_addr(struct mem_ctl_info *mci, | |||
715 | input_addr_to_dram_addr(mci, input_addr)); | 715 | input_addr_to_dram_addr(mci, input_addr)); |
716 | } | 716 | } |
717 | 717 | ||
718 | /* | ||
719 | * Find the minimum and maximum InputAddr values that map to the given @csrow. | ||
720 | * Pass back these values in *input_addr_min and *input_addr_max. | ||
721 | */ | ||
722 | static void find_csrow_limits(struct mem_ctl_info *mci, int csrow, | ||
723 | u64 *input_addr_min, u64 *input_addr_max) | ||
724 | { | ||
725 | struct amd64_pvt *pvt; | ||
726 | u64 base, mask; | ||
727 | |||
728 | pvt = mci->pvt_info; | ||
729 | BUG_ON((csrow < 0) || (csrow >= pvt->csels[0].b_cnt)); | ||
730 | |||
731 | get_cs_base_and_mask(pvt, csrow, 0, &base, &mask); | ||
732 | |||
733 | *input_addr_min = base & ~mask; | ||
734 | *input_addr_max = base | mask; | ||
735 | } | ||
736 | |||
737 | /* Map the Error address to a PAGE and PAGE OFFSET. */ | 718 | /* Map the Error address to a PAGE and PAGE OFFSET. */ |
738 | static inline void error_address_to_page_and_offset(u64 error_address, | 719 | static inline void error_address_to_page_and_offset(u64 error_address, |
739 | u32 *page, u32 *offset) | 720 | u32 *page, u32 *offset) |
@@ -2185,7 +2166,7 @@ static int init_csrows(struct mem_ctl_info *mci) | |||
2185 | { | 2166 | { |
2186 | struct csrow_info *csrow; | 2167 | struct csrow_info *csrow; |
2187 | struct amd64_pvt *pvt = mci->pvt_info; | 2168 | struct amd64_pvt *pvt = mci->pvt_info; |
2188 | u64 input_addr_min, input_addr_max, sys_addr, base, mask; | 2169 | u64 base, mask; |
2189 | u32 val; | 2170 | u32 val; |
2190 | int i, j, empty = 1; | 2171 | int i, j, empty = 1; |
2191 | enum mem_type mtype; | 2172 | enum mem_type mtype; |
@@ -2216,28 +2197,14 @@ static int init_csrows(struct mem_ctl_info *mci) | |||
2216 | csrow->nr_pages = amd64_csrow_nr_pages(pvt, 0, i); | 2197 | csrow->nr_pages = amd64_csrow_nr_pages(pvt, 0, i); |
2217 | if (csrow_enabled(i, 1, pvt)) | 2198 | if (csrow_enabled(i, 1, pvt)) |
2218 | csrow->nr_pages += amd64_csrow_nr_pages(pvt, 1, i); | 2199 | csrow->nr_pages += amd64_csrow_nr_pages(pvt, 1, i); |
2219 | find_csrow_limits(mci, i, &input_addr_min, &input_addr_max); | ||
2220 | sys_addr = input_addr_to_sys_addr(mci, input_addr_min); | ||
2221 | csrow->first_page = (u32) (sys_addr >> PAGE_SHIFT); | ||
2222 | sys_addr = input_addr_to_sys_addr(mci, input_addr_max); | ||
2223 | csrow->last_page = (u32) (sys_addr >> PAGE_SHIFT); | ||
2224 | 2200 | ||
2225 | get_cs_base_and_mask(pvt, i, 0, &base, &mask); | 2201 | get_cs_base_and_mask(pvt, i, 0, &base, &mask); |
2226 | csrow->page_mask = ~mask; | ||
2227 | /* 8 bytes of resolution */ | 2202 | /* 8 bytes of resolution */ |
2228 | 2203 | ||
2229 | mtype = amd64_determine_memory_type(pvt, i); | 2204 | mtype = amd64_determine_memory_type(pvt, i); |
2230 | 2205 | ||
2231 | debugf1(" for MC node %d csrow %d:\n", pvt->mc_node_id, i); | 2206 | debugf1(" for MC node %d csrow %d:\n", pvt->mc_node_id, i); |
2232 | debugf1(" input_addr_min: 0x%lx input_addr_max: 0x%lx\n", | 2207 | debugf1(" nr_pages: %u\n", csrow->nr_pages); |
2233 | (unsigned long)input_addr_min, | ||
2234 | (unsigned long)input_addr_max); | ||
2235 | debugf1(" sys_addr: 0x%lx page_mask: 0x%lx\n", | ||
2236 | (unsigned long)sys_addr, csrow->page_mask); | ||
2237 | debugf1(" nr_pages: %u first_page: 0x%lx " | ||
2238 | "last_page: 0x%lx\n", | ||
2239 | (unsigned)csrow->nr_pages, | ||
2240 | csrow->first_page, csrow->last_page); | ||
2241 | 2208 | ||
2242 | /* | 2209 | /* |
2243 | * determine whether CHIPKILL or JUST ECC or NO ECC is operating | 2210 | * determine whether CHIPKILL or JUST ECC or NO ECC is operating |
diff --git a/drivers/edac/i3200_edac.c b/drivers/edac/i3200_edac.c index 6ae30176aef5..93c4d5a6a623 100644 --- a/drivers/edac/i3200_edac.c +++ b/drivers/edac/i3200_edac.c | |||
@@ -321,7 +321,6 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx) | |||
321 | int rc; | 321 | int rc; |
322 | int i, j; | 322 | int i, j; |
323 | struct mem_ctl_info *mci = NULL; | 323 | struct mem_ctl_info *mci = NULL; |
324 | unsigned long last_page; | ||
325 | u16 drbs[I3200_CHANNELS][I3200_RANKS_PER_CHANNEL]; | 324 | u16 drbs[I3200_CHANNELS][I3200_RANKS_PER_CHANNEL]; |
326 | bool stacked; | 325 | bool stacked; |
327 | void __iomem *window; | 326 | void __iomem *window; |
@@ -366,7 +365,6 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx) | |||
366 | * cumulative; the last one will contain the total memory | 365 | * cumulative; the last one will contain the total memory |
367 | * contained in all ranks. | 366 | * contained in all ranks. |
368 | */ | 367 | */ |
369 | last_page = -1UL; | ||
370 | for (i = 0; i < mci->nr_csrows; i++) { | 368 | for (i = 0; i < mci->nr_csrows; i++) { |
371 | unsigned long nr_pages; | 369 | unsigned long nr_pages; |
372 | struct csrow_info *csrow = &mci->csrows[i]; | 370 | struct csrow_info *csrow = &mci->csrows[i]; |
@@ -378,9 +376,6 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx) | |||
378 | if (nr_pages == 0) | 376 | if (nr_pages == 0) |
379 | continue; | 377 | continue; |
380 | 378 | ||
381 | csrow->first_page = last_page + 1; | ||
382 | last_page += nr_pages; | ||
383 | csrow->last_page = last_page; | ||
384 | csrow->nr_pages = nr_pages; | 379 | csrow->nr_pages = nr_pages; |
385 | 380 | ||
386 | for (j = 0; j < nr_channels; j++) { | 381 | for (j = 0; j < nr_channels; j++) { |
diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c index 95966ba9c5ca..26b40556958e 100644 --- a/drivers/edac/i5000_edac.c +++ b/drivers/edac/i5000_edac.c | |||
@@ -1263,11 +1263,6 @@ static int i5000_init_csrows(struct mem_ctl_info *mci) | |||
1263 | if (!MTR_DIMMS_PRESENT(mtr) && !MTR_DIMMS_PRESENT(mtr1)) | 1263 | if (!MTR_DIMMS_PRESENT(mtr) && !MTR_DIMMS_PRESENT(mtr1)) |
1264 | continue; | 1264 | continue; |
1265 | 1265 | ||
1266 | /* FAKE OUT VALUES, FIXME */ | ||
1267 | p_csrow->first_page = 0 + csrow * 20; | ||
1268 | p_csrow->last_page = 9 + csrow * 20; | ||
1269 | p_csrow->page_mask = 0xFFF; | ||
1270 | |||
1271 | csrow_megs = 0; | 1266 | csrow_megs = 0; |
1272 | for (channel = 0; channel < pvt->maxch; channel++) { | 1267 | for (channel = 0; channel < pvt->maxch; channel++) { |
1273 | csrow_megs += pvt->dimm_info[csrow][channel].megabytes; | 1268 | csrow_megs += pvt->dimm_info[csrow][channel].megabytes; |
diff --git a/drivers/edac/i5100_edac.c b/drivers/edac/i5100_edac.c index 6c0dafa3f67b..5338c7968f78 100644 --- a/drivers/edac/i5100_edac.c +++ b/drivers/edac/i5100_edac.c | |||
@@ -859,8 +859,6 @@ static void __devinit i5100_init_csrows(struct mem_ctl_info *mci) | |||
859 | * FIXME: these two are totally bogus -- I don't see how to | 859 | * FIXME: these two are totally bogus -- I don't see how to |
860 | * map them correctly to this structure... | 860 | * map them correctly to this structure... |
861 | */ | 861 | */ |
862 | mci->csrows[i].first_page = total_pages; | ||
863 | mci->csrows[i].last_page = total_pages + npages - 1; | ||
864 | mci->csrows[i].nr_pages = npages; | 862 | mci->csrows[i].nr_pages = npages; |
865 | mci->csrows[i].csrow_idx = i; | 863 | mci->csrows[i].csrow_idx = i; |
866 | mci->csrows[i].mci = mci; | 864 | mci->csrows[i].mci = mci; |
diff --git a/drivers/edac/i5400_edac.c b/drivers/edac/i5400_edac.c index c2379ba95c5a..6f85dcb34019 100644 --- a/drivers/edac/i5400_edac.c +++ b/drivers/edac/i5400_edac.c | |||
@@ -1180,11 +1180,6 @@ static int i5400_init_csrows(struct mem_ctl_info *mci) | |||
1180 | if (!MTR_DIMMS_PRESENT(mtr)) | 1180 | if (!MTR_DIMMS_PRESENT(mtr)) |
1181 | continue; | 1181 | continue; |
1182 | 1182 | ||
1183 | /* FAKE OUT VALUES, FIXME */ | ||
1184 | p_csrow->first_page = 0 + csrow * 20; | ||
1185 | p_csrow->last_page = 9 + csrow * 20; | ||
1186 | p_csrow->page_mask = 0xFFF; | ||
1187 | |||
1188 | csrow_megs = 0; | 1183 | csrow_megs = 0; |
1189 | for (channel = 0; channel < pvt->maxch; channel++) { | 1184 | for (channel = 0; channel < pvt->maxch; channel++) { |
1190 | csrow_megs += pvt->dimm_info[csrow][channel].megabytes; | 1185 | csrow_megs += pvt->dimm_info[csrow][channel].megabytes; |
diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c index 4bfcb3da3f01..d4153d6cfe30 100644 --- a/drivers/edac/i7300_edac.c +++ b/drivers/edac/i7300_edac.c | |||
@@ -778,7 +778,7 @@ static int i7300_init_csrows(struct mem_ctl_info *mci) | |||
778 | int rc = -ENODEV; | 778 | int rc = -ENODEV; |
779 | int mtr; | 779 | int mtr; |
780 | int ch, branch, slot, channel; | 780 | int ch, branch, slot, channel; |
781 | u32 last_page = 0, nr_pages; | 781 | u32 nr_pages; |
782 | struct dimm_info *dimm; | 782 | struct dimm_info *dimm; |
783 | 783 | ||
784 | pvt = mci->pvt_info; | 784 | pvt = mci->pvt_info; |
@@ -828,9 +828,6 @@ static int i7300_init_csrows(struct mem_ctl_info *mci) | |||
828 | 828 | ||
829 | /* Update per_csrow memory count */ | 829 | /* Update per_csrow memory count */ |
830 | p_csrow->nr_pages += nr_pages; | 830 | p_csrow->nr_pages += nr_pages; |
831 | p_csrow->first_page = last_page; | ||
832 | last_page += nr_pages; | ||
833 | p_csrow->last_page = last_page; | ||
834 | 831 | ||
835 | rc = 0; | 832 | rc = 0; |
836 | } | 833 | } |
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index 5449bd40a739..76c957c525fb 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c | |||
@@ -599,7 +599,6 @@ static int get_dimm_config(struct mem_ctl_info *mci) | |||
599 | struct pci_dev *pdev; | 599 | struct pci_dev *pdev; |
600 | int i, j; | 600 | int i, j; |
601 | int csrow = 0; | 601 | int csrow = 0; |
602 | unsigned long last_page = 0; | ||
603 | enum edac_type mode; | 602 | enum edac_type mode; |
604 | enum mem_type mtype; | 603 | enum mem_type mtype; |
605 | struct dimm_info *dimm; | 604 | struct dimm_info *dimm; |
@@ -716,12 +715,8 @@ static int get_dimm_config(struct mem_ctl_info *mci) | |||
716 | npages = MiB_TO_PAGES(size); | 715 | npages = MiB_TO_PAGES(size); |
717 | 716 | ||
718 | csr = &mci->csrows[csrow]; | 717 | csr = &mci->csrows[csrow]; |
719 | csr->first_page = last_page + 1; | ||
720 | last_page += npages; | ||
721 | csr->last_page = last_page; | ||
722 | csr->nr_pages = npages; | 718 | csr->nr_pages = npages; |
723 | 719 | ||
724 | csr->page_mask = 0; | ||
725 | csr->csrow_idx = csrow; | 720 | csr->csrow_idx = csrow; |
726 | csr->nr_channels = 1; | 721 | csr->nr_channels = 1; |
727 | 722 | ||
diff --git a/drivers/edac/mv64x60_edac.c b/drivers/edac/mv64x60_edac.c index 12d7fe04454c..d2e3c39ede9f 100644 --- a/drivers/edac/mv64x60_edac.c +++ b/drivers/edac/mv64x60_edac.c | |||
@@ -668,7 +668,6 @@ static void mv64x60_init_csrows(struct mem_ctl_info *mci, | |||
668 | csrow = &mci->csrows[0]; | 668 | csrow = &mci->csrows[0]; |
669 | dimm = csrow->channels[0].dimm; | 669 | dimm = csrow->channels[0].dimm; |
670 | csrow->nr_pages = pdata->total_mem >> PAGE_SHIFT; | 670 | csrow->nr_pages = pdata->total_mem >> PAGE_SHIFT; |
671 | csrow->last_page = csrow->first_page + csrow->nr_pages - 1; | ||
672 | dimm->grain = 8; | 671 | dimm->grain = 8; |
673 | 672 | ||
674 | dimm->mtype = (ctl & MV64X60_SDRAM_REGISTERED) ? MEM_RDDR : MEM_DDR; | 673 | dimm->mtype = (ctl & MV64X60_SDRAM_REGISTERED) ? MEM_RDDR : MEM_DDR; |
diff --git a/drivers/edac/ppc4xx_edac.c b/drivers/edac/ppc4xx_edac.c index a75e56788b29..ec5e529e33f6 100644 --- a/drivers/edac/ppc4xx_edac.c +++ b/drivers/edac/ppc4xx_edac.c | |||
@@ -897,7 +897,6 @@ ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1) | |||
897 | enum edac_type edac_mode; | 897 | enum edac_type edac_mode; |
898 | int row, j; | 898 | int row, j; |
899 | u32 mbxcf, size; | 899 | u32 mbxcf, size; |
900 | static u32 ppc4xx_last_page; | ||
901 | 900 | ||
902 | /* Establish the memory type and width */ | 901 | /* Establish the memory type and width */ |
903 | 902 | ||
@@ -959,10 +958,6 @@ ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1) | |||
959 | goto done; | 958 | goto done; |
960 | } | 959 | } |
961 | 960 | ||
962 | csi->first_page = ppc4xx_last_page; | ||
963 | csi->last_page = csi->first_page + csi->nr_pages - 1; | ||
964 | csi->page_mask = 0; | ||
965 | |||
966 | /* | 961 | /* |
967 | * It's unclear exactly what grain should be set to | 962 | * It's unclear exactly what grain should be set to |
968 | * here. The SDRAM_ECCES register allows resolution of | 963 | * here. The SDRAM_ECCES register allows resolution of |
@@ -984,8 +979,6 @@ ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1) | |||
984 | dimm->dtype = dtype; | 979 | dimm->dtype = dtype; |
985 | 980 | ||
986 | dimm->edac_mode = edac_mode; | 981 | dimm->edac_mode = edac_mode; |
987 | |||
988 | ppc4xx_last_page += csi->nr_pages; | ||
989 | } | 982 | } |
990 | } | 983 | } |
991 | 984 | ||
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index 21147ac38c4d..d5892c052bf4 100644 --- a/drivers/edac/sb_edac.c +++ b/drivers/edac/sb_edac.c | |||
@@ -642,8 +642,6 @@ static int get_dimm_config(struct mem_ctl_info *mci) | |||
642 | * csrows. | 642 | * csrows. |
643 | */ | 643 | */ |
644 | csr = &mci->csrows[csrow]; | 644 | csr = &mci->csrows[csrow]; |
645 | csr->first_page = last_page; | ||
646 | csr->last_page = last_page + npages - 1; | ||
647 | csr->nr_pages = npages; | 645 | csr->nr_pages = npages; |
648 | csr->csrow_idx = csrow; | 646 | csr->csrow_idx = csrow; |
649 | csr->nr_channels = 1; | 647 | csr->nr_channels = 1; |
diff --git a/drivers/edac/tile_edac.c b/drivers/edac/tile_edac.c index c870f68ae8f1..54067c4b0cc1 100644 --- a/drivers/edac/tile_edac.c +++ b/drivers/edac/tile_edac.c | |||
@@ -110,9 +110,7 @@ static int __devinit tile_edac_init_csrows(struct mem_ctl_info *mci) | |||
110 | return -1; | 110 | return -1; |
111 | } | 111 | } |
112 | 112 | ||
113 | csrow->first_page = 0; | ||
114 | csrow->nr_pages = mem_info.mem_size >> PAGE_SHIFT; | 113 | csrow->nr_pages = mem_info.mem_size >> PAGE_SHIFT; |
115 | csrow->last_page = csrow->first_page + csrow->nr_pages - 1; | ||
116 | dimm->grain = TILE_EDAC_ERROR_GRAIN; | 114 | dimm->grain = TILE_EDAC_ERROR_GRAIN; |
117 | dimm->dtype = DEV_UNKNOWN; | 115 | dimm->dtype = DEV_UNKNOWN; |
118 | 116 | ||
diff --git a/drivers/edac/x38_edac.c b/drivers/edac/x38_edac.c index f7cc4d214949..bc7f880a4eed 100644 --- a/drivers/edac/x38_edac.c +++ b/drivers/edac/x38_edac.c | |||
@@ -319,7 +319,6 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx) | |||
319 | int rc; | 319 | int rc; |
320 | int i, j; | 320 | int i, j; |
321 | struct mem_ctl_info *mci = NULL; | 321 | struct mem_ctl_info *mci = NULL; |
322 | unsigned long last_page; | ||
323 | u16 drbs[X38_CHANNELS][X38_RANKS_PER_CHANNEL]; | 322 | u16 drbs[X38_CHANNELS][X38_RANKS_PER_CHANNEL]; |
324 | bool stacked; | 323 | bool stacked; |
325 | void __iomem *window; | 324 | void __iomem *window; |
@@ -363,7 +362,6 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx) | |||
363 | * cumulative; the last one will contain the total memory | 362 | * cumulative; the last one will contain the total memory |
364 | * contained in all ranks. | 363 | * contained in all ranks. |
365 | */ | 364 | */ |
366 | last_page = -1UL; | ||
367 | for (i = 0; i < mci->nr_csrows; i++) { | 365 | for (i = 0; i < mci->nr_csrows; i++) { |
368 | unsigned long nr_pages; | 366 | unsigned long nr_pages; |
369 | struct csrow_info *csrow = &mci->csrows[i]; | 367 | struct csrow_info *csrow = &mci->csrows[i]; |
@@ -375,9 +373,6 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx) | |||
375 | if (nr_pages == 0) | 373 | if (nr_pages == 0) |
376 | continue; | 374 | continue; |
377 | 375 | ||
378 | csrow->first_page = last_page + 1; | ||
379 | last_page += nr_pages; | ||
380 | csrow->last_page = last_page; | ||
381 | csrow->nr_pages = nr_pages; | 376 | csrow->nr_pages = nr_pages; |
382 | 377 | ||
383 | for (j = 0; j < x38_channel_num; j++) { | 378 | for (j = 0; j < x38_channel_num; j++) { |