[coreboot] New patch to review for coreboot: 0ea79df Fixed hangup problem with processors that lack PowerNow!
Oskar Enoksson (enok@lysator.liu.se)
gerrit at coreboot.org
Mon Oct 10 14:13:26 CEST 2011
Oskar Enoksson (enok at lysator.liu.se) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/247
-gerrit
commit 0ea79dfc52268d1d519c36d1d5290a37bf57f57f
Author: Oskar Enoksson <enok at lysator.liu.se>
Date: Mon Oct 10 13:59:53 2011 +0200
Fixed hangup problem with processors that lack PowerNow!
Signed-off-by: Oskar Enoksson <enok at lysator.liu.se>
Change-Id: Id1b739ec5ae8fbe65bbae1dbde7d41db5f18212f
---
src/cpu/amd/model_fxx/fidvid.c | 4 ++++
src/cpu/amd/model_fxx/powernow_acpi.c | 13 +++++++------
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/cpu/amd/model_fxx/fidvid.c b/src/cpu/amd/model_fxx/fidvid.c
index bbafde6..62a25d6 100644
--- a/src/cpu/amd/model_fxx/fidvid.c
+++ b/src/cpu/amd/model_fxx/fidvid.c
@@ -347,6 +347,10 @@ static void init_fidvid_ap(unsigned bsp_apicid, unsigned apicid)
u32 fid_max;
int loop;
+ if((cpuid_edx(0x80000007)&0x06)!=0x06) {
+ return; // FID/VID change not supported
+ }
+
msr = rdmsr(0xc0010042);
fid_max = ((msr.lo >> 16) & 0x3f); /* max fid */
#if FX_SUPPORT
diff --git a/src/cpu/amd/model_fxx/powernow_acpi.c b/src/cpu/amd/model_fxx/powernow_acpi.c
index c49322f..dd7038d 100644
--- a/src/cpu/amd/model_fxx/powernow_acpi.c
+++ b/src/cpu/amd/model_fxx/powernow_acpi.c
@@ -595,6 +595,13 @@ static int pstates_algorithm(u32 pcontrol_blk, u8 plen, u8 onlyBSP)
u8 Max_fid, Start_fid, Start_vid, Max_vid;
struct cpuid_result cpuid1 = cpuid(0x80000001);
+ /* See if the CPUID(0x80000007) returned EDX[2:1]==11b */
+ cpuid1 = cpuid(0x80000007);
+ if((cpuid1.edx & 0x6)!=0x6) {
+ printk(BIOS_INFO, "Processor not capable of performing P-state transitions\n");
+ return 0;
+ }
+
// Because I don't know how to read msr registers from
// other CPU's I assume they all have the same SYSCONF values
msr = rdmsr(0xc0010042);
@@ -621,12 +628,6 @@ static int pstates_algorithm(u32 pcontrol_blk, u8 plen, u8 onlyBSP)
printk(BIOS_WARNING, "Unknown CPU, please update the powernow_acpi.c\n");
return 0;
}
- /* See if the CPUID(0x80000007) returned EDX[2:1]==11b */
- cpuid1 = cpuid(0x80000007);
- if((cpuid1.edx & 0x6)!=0x6) {
- printk(BIOS_INFO, "Processor not capable of performing P-state transitions\n");
- return 0;
- }
#if CONFIG_MAX_PHYSICAL_CPUS==1
// IRT 80us RVO = 50mV PLL_LOCK_TIME 2us, MVS 25mv, VST 100us
More information about the coreboot
mailing list