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

amd64_edac: Adjust channel counting to F15h

The only difference is that F10h used to sport ganged DCTs and F15h
doesn't so adjust the F10h routine and reuse it.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>

+6 -7
+6 -7
drivers/edac/amd64_edac.c
··· 1082 1082 * Pass back: 1083 1083 * contents of the DCL0_LOW register 1084 1084 */ 1085 - static int f10_early_channel_count(struct amd64_pvt *pvt) 1085 + static int f1x_early_channel_count(struct amd64_pvt *pvt) 1086 1086 { 1087 1087 int i, j, channels = 0; 1088 1088 1089 - /* If we are in 128 bit mode, then we are using 2 channels */ 1090 - if (pvt->dclr0 & F10_WIDTH_128) { 1091 - channels = 2; 1092 - return channels; 1093 - } 1089 + /* On F10h, if we are in 128 bit mode, then we are using 2 channels */ 1090 + if (boot_cpu_data.x86 == 0x10 && (pvt->dclr0 & F10_WIDTH_128)) 1091 + return 2; 1094 1092 1095 1093 /* 1096 1094 * Need to check if in unganged mode: In such, there are 2 channels, ··· 1538 1540 .f1_id = PCI_DEVICE_ID_AMD_10H_NB_MAP, 1539 1541 .f3_id = PCI_DEVICE_ID_AMD_10H_NB_MISC, 1540 1542 .ops = { 1541 - .early_channel_count = f10_early_channel_count, 1543 + .early_channel_count = f1x_early_channel_count, 1542 1544 .get_error_address = f10_get_error_address, 1543 1545 .read_dram_ctl_register = f10_read_dram_ctl_register, 1544 1546 .map_sysaddr_to_csrow = f10_map_sysaddr_to_csrow, ··· 1549 1551 [F15_CPUS] = { 1550 1552 .ctl_name = "F15h", 1551 1553 .ops = { 1554 + .early_channel_count = f1x_early_channel_count, 1552 1555 .read_dct_pci_cfg = f15_read_dct_pci_cfg, 1553 1556 } 1554 1557 },