Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Folks,

I am a total Linux n00b. I am trying to deploy mcelog on one of my computing nodes running PUIAS 6.4 (i86_64)

[root@lov3 edac]# uname -a
Linux lov3.mylab.org 2.6.32-358.18.1.el6.x86_64 #1 SMP Tue Aug 27 22:40:32 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux

a free clone of Red Hat 6.4 on AMD hardware

[root@lov3 mcelog]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                64
On-line CPU(s) list:   0-63
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             4
NUMA node(s):          8
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 2
Stepping:              0
CPU MHz:               1400.000
BogoMIPS:              4999.30
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7
NUMA node1 CPU(s):     8-15
NUMA node2 CPU(s):     16-23
NUMA node3 CPU(s):     24-31
NUMA node4 CPU(s):     32-39
NUMA node5 CPU(s):     40-47
NUMA node6 CPU(s):     48-55
NUMA node7 CPU(s):     56-63

My mcelog.conf file is more or less default apart of the fact that I would like to run mcelog as a daemon and to log errors. When I start mcelog

[root@lov3 mcelog]# mcelog --config-file mcelog.conf
AMD Processor family 21: Please load edac_mce_amd module.

However the module is present

[root@lov3 mcelog]# locate edac_mce_amd.ko
/lib/modules/2.6.32-358.18.1.el6.x86_64/kernel/drivers/edac/edac_mce_amd.ko
/lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/edac/edac_mce_amd.ko

and loaded

[root@lov3 edac]# lsmod | grep mce       
edac_mce_amd           14705  1 amd64_edac_mod

Is there anything that I can do to get mcelog working? The only reference I found is this thread

http://lists.centos.org/pipermail/centos/2012-November/130226.html

share|improve this question

1 Answer 1

As you are using CPU family 21, the message is obvious : you can see the below code :

mcelog.c of the mcelog-1.0pre3_20110718-0.14.el6 package show where the cpu family of greater than 15 returns 0 to is_cpu_supported():

 416 int is_cpu_supported(void)
 417 {
 418         enum {
 419                 VENDOR = 1,
 420                 FAMILY = 2,
 421                 MODEL = 4,
 422                 MHZ = 8,
 423                 FLAGS = 16,
 424                 ALL = 0x1f
 425         } seen = 0;
 426         FILE *f;
 427         static int checked;
 428 
 429         if (checked)
 430                 return 1;
 431         checked = 1;
 432 
 433         f = fopen("/proc/cpuinfo","r");
 434         if (f != NULL) {
 435                 int family = 0;
 436                 int model = 0;
 437                 char vendor[64] = { 0 };
 438                 char *line = NULL;
 439                 size_t linelen = 0;
 440                 double mhz;
 441 
 442                 while (getdelim(&line, &linelen, '\n', f) > 0 && seen != ALL) {
 443                         if (sscanf(line, "vendor_id : %63[^\n]", vendor) == 1)
 444                                 seen |= VENDOR;
 445                         if (sscanf(line, "cpu family : %d", &family) == 1)
 446                                 seen |= FAMILY;
 447                         if (sscanf(line, "model : %d", &model) == 1)
 448                                 seen |= MODEL;
 449         /* We use only Mhz of the first CPU, assuming they are the same
 450                (there are more sanity checks later to make this not as wrong
 451                            as it sounds) */
 452                         if (sscanf(line, "cpu MHz : %lf", &mhz) == 1) {
 453                                 if (!cpumhz_forced)
 454                                         cpumhz = mhz;
 455                                 seen |= MHZ;
 456                         }
 457                         if (!strncmp(line, "flags", 5) && isspace(line[6])) {
 458                                 processor_flags = line;
 459                                 line = NULL;
 460                                 linelen = 0;
 461                                 seen |= FLAGS;
 462                         }
 463  
 464                 }
 465                 if (seen == ALL) {
 466                         if (!strcmp(vendor,"AuthenticAMD")) {
 467                                 if (family == 15)
 468                                         cputype = CPU_K8;
 469                                 if (family >= 15)  <-----------
 470                                        fprintf(stderr, "AMD Processor family %d: Please load edac_mce_amd module.\n", f     amily);
 471                                 return 0;
 472                         } else if (!strcmp(vendor,"GenuineIntel"))
 473                                 cputype = select_intel_cputype(family, model);
 474                         /* Add checks for other CPUs here */
 475                 } else {
 476                         Eprintf("warning: Cannot parse /proc/cpuinfo\n");
 477                 }
 478                 fclose(f);
 479                 free(line);
 480         } else
 481                 Eprintf("warning: Cannot open /proc/cpuinfo\n");
 482 
 483         return 1;
 484 }
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.