summaryrefslogtreecommitdiff
path: root/AMD/bugs.c
blob: c16b0b2aeabf9bcac9467ff773e5b022a3eed0a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 *  (C) 2002 Dave Jones.
 *
 *  Licensed under the terms of the GNU GPL License version 2.
 *
 *  AMD-specific errata information
 */

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include "../x86info.h"
#include "AMD.h"

static void show_k7_bugs(struct cpudata *cpu)
{
	unsigned long long val;

	/* As per 27212 0.2 - Some newer athlons are more robust with
	   CLK_CTL reprogrammed to 0x20000000 instead of 0x60000000 */
	if (tuple(cpu) > 0x681) {
		if (read_msr (cpu->number, MSR_CLKCTL, &val) == 1) {
			if ((val & 0xfff00000) != 0x20000000) {
				printf("CLK_CTL is programmed to %08llx, instead of %08llx\n",
						val, ((val&~0xfff00000)|0x20000000));
			}
		}
	}
}

void show_amd_bugs(struct cpudata *cpu)
{
	switch (cpu->family) {
	/* Athlons. */
	case 6:
		show_k7_bugs(cpu);
		break;

	default:
		break;
	}
}