View | Details | Raw Unified | Return to bug 228344
Collapse All | Expand All

(-)file_not_specified_in_diff (-9 / +29 lines)
Line  Link Here
0
-- linux-2.6.20/arch/i386/kernel/cpu/mtrr/generic.c
0
++ linux.228344/arch/i386/kernel/cpu/mtrr/generic.c
Lines 37-43 Link Here
37
	rdmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
37
	rdmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
38
}
38
}
39
39
40
static void __init
40
static void 
41
get_fixed_ranges(mtrr_type * frs)
41
get_fixed_ranges(mtrr_type * frs)
42
{
42
{
43
	unsigned int *p = (unsigned int *) frs;
43
	unsigned int *p = (unsigned int *) frs;
Lines 196-210 Link Here
196
	*type = base_lo & 0xff;
196
	*type = base_lo & 0xff;
197
}
197
}
198
198
199
void mtrr_save_fixed_ranges(void *info)
200
{
201
	get_fixed_ranges(mtrr_state.fixed_ranges);
202
}
203
199
static int set_fixed_ranges(mtrr_type * frs)
204
static int set_fixed_ranges(mtrr_type * frs)
200
{
205
{
201
	unsigned int *p = (unsigned int *) frs;
206
	unsigned int *p = (unsigned int *) frs;
202
	int changed = FALSE;
207
	int changed = FALSE;
203
	int i;
208
	int i;
204
	unsigned int lo, hi;
209
	unsigned int lo, hi;
210
	unsigned syscfg_lo, syscfg_hi;
211
212
	rdmsr(MSR_K8_SYSCFG, syscfg_lo, syscfg_hi);
205
213
206
	rdmsr(MTRRfix64K_00000_MSR, lo, hi);
214
	rdmsr(MTRRfix64K_00000_MSR, lo, hi);
207
	if (p[0] != lo || p[1] != hi) {
215
	if (p[0] != lo || p[1] != hi) {
216
		if ((p[0] | p[1]) & 0x18)
217
			mtrr_wrmsr(MSR_K8_SYSCFG, syscfg_lo | 0xc0000, syscfg_hi);
208
		mtrr_wrmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
218
		mtrr_wrmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
209
		changed = TRUE;
219
		changed = TRUE;
210
	}
220
	}
Lines 212-217 static int set_fixed_ranges(mtrr_type * Link Here
212
	for (i = 0; i < 2; i++) {
222
	for (i = 0; i < 2; i++) {
213
		rdmsr(MTRRfix16K_80000_MSR + i, lo, hi);
223
		rdmsr(MTRRfix16K_80000_MSR + i, lo, hi);
214
		if (p[2 + i * 2] != lo || p[3 + i * 2] != hi) {
224
		if (p[2 + i * 2] != lo || p[3 + i * 2] != hi) {
225
			if ((p[2 + i * 2] | p[3 + i * 2]) & 0x18)
226
				mtrr_wrmsr(MSR_K8_SYSCFG, syscfg_lo | 0xc0000, syscfg_hi);
215
			mtrr_wrmsr(MTRRfix16K_80000_MSR + i, p[2 + i * 2],
227
			mtrr_wrmsr(MTRRfix16K_80000_MSR + i, p[2 + i * 2],
216
			      p[3 + i * 2]);
228
			      p[3 + i * 2]);
217
			changed = TRUE;
229
			changed = TRUE;
Lines 221-226 static int set_fixed_ranges(mtrr_type * Link Here
221
	for (i = 0; i < 8; i++) {
233
	for (i = 0; i < 8; i++) {
222
		rdmsr(MTRRfix4K_C0000_MSR + i, lo, hi);
234
		rdmsr(MTRRfix4K_C0000_MSR + i, lo, hi);
223
		if (p[6 + i * 2] != lo || p[7 + i * 2] != hi) {
235
		if (p[6 + i * 2] != lo || p[7 + i * 2] != hi) {
236
			if ((p[6 + i * 2] | p[7 + i * 2]) & 0x18)
237
				mtrr_wrmsr(MSR_K8_SYSCFG, syscfg_lo | 0xc0000, syscfg_hi);
224
			mtrr_wrmsr(MTRRfix4K_C0000_MSR + i, p[6 + i * 2],
238
			mtrr_wrmsr(MTRRfix4K_C0000_MSR + i, p[6 + i * 2],
225
			      p[7 + i * 2]);
239
			      p[7 + i * 2]);
226
			changed = TRUE;
240
			changed = TRUE;
227
-- linux-2.6.20/arch/i386/power/cpu.c
241
++ linux.228344/arch/i386/power/cpu.c
Lines 21-26 Link Here
21
21
22
void __save_processor_state(struct saved_context *ctxt)
22
void __save_processor_state(struct saved_context *ctxt)
23
{
23
{
24
	mtrr_save_fixed_ranges();
24
	kernel_fpu_begin();
25
	kernel_fpu_begin();
25
26
26
	/*
27
	/*
27
-- linux-2.6.20/arch/x86_64/kernel/suspend.c
28
++ linux.228344/arch/x86_64/kernel/suspend.c
Lines 46-51 void __save_processor_state(struct saved Link Here
46
	rdmsrl(MSR_FS_BASE, ctxt->fs_base);
46
	rdmsrl(MSR_FS_BASE, ctxt->fs_base);
47
	rdmsrl(MSR_GS_BASE, ctxt->gs_base);
47
	rdmsrl(MSR_GS_BASE, ctxt->gs_base);
48
	rdmsrl(MSR_KERNEL_GS_BASE, ctxt->gs_kernel_base);
48
	rdmsrl(MSR_KERNEL_GS_BASE, ctxt->gs_kernel_base);
49
	mtrr_save_fixed_ranges();
49
50
50
	/*
51
	/*
51
	 * control registers 
52
	 * control registers 
52
-- linux-2.6.20/include/asm-i386/mtrr.h
53
++ linux.228344/include/asm-i386/mtrr.h
Lines 78-84 CONFIG_MTRR defined: Link Here
78
extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi);
78
extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi);
79
extern void mtrr_ap_init(void);
79
extern void mtrr_ap_init(void);
80
extern void mtrr_bp_init(void);
80
extern void mtrr_bp_init(void);
81
#  else
81
extern void mtrr_save_fixed_ranges(void);
82
#  else  /*  CONFIG_MTRR set/not set */
82
static __inline__ int mtrr_add (unsigned long base, unsigned long size,
83
static __inline__ int mtrr_add (unsigned long base, unsigned long size,
83
				unsigned int type, char increment)
84
				unsigned int type, char increment)
84
{
85
{
Lines 104-111 CONFIG_MTRR not defined: Link Here
104
105
105
#define mtrr_ap_init() do {} while (0)
106
#define mtrr_ap_init() do {} while (0)
106
#define mtrr_bp_init() do {} while (0)
107
#define mtrr_bp_init() do {} while (0)
107
#  endif
108
#define mtrr_save_fixed_ranges() do {} while (0)
109
#  endif  /*  !CONFIG_MTRR  */
108
110
109
#endif
111
#endif  /*  __KERNEL__  */
110
112
111
#endif  /*  _LINUX_MTRR_H  */
113
#endif  /*  _LINUX_MTRR_H  */
112
-- linux-2.6.20/include/asm-x86_64/proto.h
114
++ linux.228344/include/asm-x86_64/proto.h
Lines 19-25 Link Here
19
#ifdef CONFIG_MTRR
19
#ifdef CONFIG_MTRR
20
extern void mtrr_ap_init(void);
20
extern void mtrr_ap_init(void);
21
extern void mtrr_bp_init(void);
21
extern void mtrr_bp_init(void);
22
extern void mtrr_save_fixed_ranges(void);
22
#else
23
#else
24
#define mtrr_save_fixed_ranges() do {} while (0)
23
#define mtrr_ap_init() do {} while (0)
25
#define mtrr_ap_init() do {} while (0)
24
#define mtrr_bp_init() do {} while (0)
26
#define mtrr_bp_init() do {} while (0)
25
#endif
27
#endif

Return to bug 228344