Skip to content

Commit

Permalink
edac: i5100 fix enable ecc hardware
Browse files Browse the repository at this point in the history
It is possible that the BIOS did not enable ECC at boot time.  We check
for that case and fail to load if it is true.

Signed-off-by: Arthur Jones <ajones@riverbed.com>
Signed-off-by: Doug Thompson <dougthompson@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Arthur Jones authored and Linus Torvalds committed Jul 25, 2008
1 parent f7952ff commit 43920a5
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/edac/i5100_edac.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
/* register addresses and bit field accessors... */

/* device 16, func 1 */
#define I5100_MC 0x40 /* Memory Control Register */
#define I5100_MC_ERRDETEN(a) ((a) >> 5 & 1)
#define I5100_MS 0x44 /* Memory Status Register */
#define I5100_SPDDATA 0x48 /* Serial Presence Detect Status Reg */
#define I5100_SPDDATA_RDO(a) ((a) >> 15 & 1)
Expand Down Expand Up @@ -688,6 +690,14 @@ static int __devinit i5100_init_one(struct pci_dev *pdev,
goto bail;
}

/* ECC enabled? */
pci_read_config_dword(pdev, I5100_MC, &dw);
if (!I5100_MC_ERRDETEN(dw)) {
printk(KERN_INFO "i5100_edac: ECC not enabled.\n");
ret = -ENODEV;
goto bail;
}

/* figure out how many ranks, from strapped state of 48GB_Mode input */
pci_read_config_dword(pdev, I5100_MS, &dw);
ranksperch = !!(dw & (1 << 8)) * 2 + 4;
Expand Down

0 comments on commit 43920a5

Please sign in to comment.