Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac

Pull EDAC fixes from Mauro Carvalho Chehab:
"One EDAC core fix, and a few driver fixes (i7300, i9275x, i7core)."

* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
i7core_edac: fix panic when accessing sysfs files
i7300_edac: Fix error flag testing
edac: Fix the dimm filling for csrows-based layouts
i82975x_edac: Fix dimm label initialization

+22 -17
+11 -3
drivers/edac/edac_mc.c
··· 416 416 dimm->cschannel = chn; 417 417 418 418 /* Increment csrow location */ 419 - row++; 420 - if (row == tot_csrows) { 421 - row = 0; 419 + if (layers[0].is_virt_csrow) { 422 420 chn++; 421 + if (chn == tot_channels) { 422 + chn = 0; 423 + row++; 424 + } 425 + } else { 426 + row++; 427 + if (row == tot_csrows) { 428 + row = 0; 429 + chn++; 430 + } 423 431 } 424 432 425 433 /* Increment dimm location */
+4 -4
drivers/edac/i7300_edac.c
··· 197 197 [0] = "Memory Write error on non-redundant retry or " 198 198 "FBD configuration Write error on retry", 199 199 }; 200 - #define GET_FBD_FAT_IDX(fbderr) (fbderr & (3 << 28)) 201 - #define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) 200 + #define GET_FBD_FAT_IDX(fbderr) (((fbderr) >> 28) & 3) 201 + #define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 22)) 202 202 203 203 #define FERR_NF_FBD 0xa0 204 204 static const char *ferr_nf_fbd_name[] = { ··· 225 225 [1] = "Aliased Uncorrectable Non-Mirrored Demand Data ECC", 226 226 [0] = "Uncorrectable Data ECC on Replay", 227 227 }; 228 - #define GET_FBD_NF_IDX(fbderr) (fbderr & (3 << 28)) 228 + #define GET_FBD_NF_IDX(fbderr) (((fbderr) >> 28) & 3) 229 229 #define FERR_NF_FBD_ERR_MASK ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) |\ 230 230 (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15) |\ 231 231 (1 << 14) | (1 << 13) | (1 << 11) | (1 << 10) |\ ··· 464 464 errnum = find_first_bit(&errors, 465 465 ARRAY_SIZE(ferr_nf_fbd_name)); 466 466 specific = GET_ERR_FROM_TABLE(ferr_nf_fbd_name, errnum); 467 - branch = (GET_FBD_FAT_IDX(error_reg) == 2) ? 1 : 0; 467 + branch = (GET_FBD_NF_IDX(error_reg) == 2) ? 1 : 0; 468 468 469 469 pci_read_config_dword(pvt->pci_dev_16_1_fsb_addr_map, 470 470 REDMEMA, &syndrome);
+3 -3
drivers/edac/i7core_edac.c
··· 816 816 struct device_attribute *mattr, \ 817 817 const char *data, size_t count) \ 818 818 { \ 819 - struct mem_ctl_info *mci = to_mci(dev); \ 819 + struct mem_ctl_info *mci = dev_get_drvdata(dev); \ 820 820 struct i7core_pvt *pvt; \ 821 821 long value; \ 822 822 int rc; \ ··· 845 845 struct device_attribute *mattr, \ 846 846 char *data) \ 847 847 { \ 848 - struct mem_ctl_info *mci = to_mci(dev); \ 848 + struct mem_ctl_info *mci = dev_get_drvdata(dev); \ 849 849 struct i7core_pvt *pvt; \ 850 850 \ 851 851 pvt = mci->pvt_info; \ ··· 1052 1052 struct device_attribute *mattr, \ 1053 1053 char *data) \ 1054 1054 { \ 1055 - struct mem_ctl_info *mci = to_mci(dev); \ 1055 + struct mem_ctl_info *mci = dev_get_drvdata(dev); \ 1056 1056 struct i7core_pvt *pvt = mci->pvt_info; \ 1057 1057 \ 1058 1058 edac_dbg(1, "\n"); \
+4 -7
drivers/edac/i82975x_edac.c
··· 370 370 static void i82975x_init_csrows(struct mem_ctl_info *mci, 371 371 struct pci_dev *pdev, void __iomem *mch_window) 372 372 { 373 - static const char *labels[4] = { 374 - "DIMM A1", "DIMM A2", 375 - "DIMM B1", "DIMM B2" 376 - }; 377 373 struct csrow_info *csrow; 378 374 unsigned long last_cumul_size; 379 375 u8 value; ··· 419 423 dimm = mci->csrows[index]->channels[chan]->dimm; 420 424 421 425 dimm->nr_pages = nr_pages / csrow->nr_channels; 422 - strncpy(csrow->channels[chan]->dimm->label, 423 - labels[(index >> 1) + (chan * 2)], 424 - EDAC_MC_LABEL_LEN); 426 + 427 + snprintf(csrow->channels[chan]->dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d", 428 + (chan == 0) ? 'A' : 'B', 429 + index); 425 430 dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ 426 431 dimm->dtype = i82975x_dram_type(mch_window, index); 427 432 dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */