powernow not working on AMD Athlon XP Mobile
Maurizio Lombardi
m.lombardi85 at gmail.com
Thu Sep 15 00:44:30 PDT 2011
Hi Sepherosa,
> Well, I think I will need AMD 06h family BKDG to figure out how the
> ACPI VID and FID should be used. The code we have messed w/ so far is
> according to AMD 0fh family BKDG.
I'm doing some research and looking how other operating systems works
with my Athlon XP-M processor.
1) The DFly's powernow driver is almost identical to the NetBSD's
powernow_k8 driver (NetBSD has a powernow_k7 driver too) , probably
this is the reason why on DFly the powernow module returns an error
message when I try to load it, it simply does not support K7
architectures.
2) On FreeBSD: sys/x86/cpufreq/hwpstate.c
Looks like my CPU family (0x06) is not supported:
--------------------
did = AMD_10H_11H_CUR_DID(msr);
fid = AMD_10H_11H_CUR_FID(msr);
switch(family) {
case 0x11:
/* fid/did to frequency */
hwpstate_set[i].freq = 100 * (fid + 0x08) / (1 << did);
break;
case 0x10:
/* fid/did to frequency */
hwpstate_set[i].freq = 100 * (fid + 0x10) / (1 << did);
break;
default:
HWPSTATE_DEBUG(dev, "get_info_from_msr: AMD family %d CPU's are not
implemented yet. sorry.\n", family);
return (ENXIO);
break;
}
-------------------
But in their powernow driver my cpu family *is* supported:
sys/x86/cpufreq/powernow.c
------------------
switch (cpu_id & 0xf00) {
case 0x600:
sfid = PN7_STA_SFID(status);
mfid = PN7_STA_MFID(status);
cfid = PN7_STA_CFID(status);
sc->pn_type = PN7_TYPE;
sc->fsb = rate / 100000 / pn7_fid_to_mult[cfid];
/*
* If start FID is different to max FID, then it is a
* mobile processor. If not, it is a low powered desktop
* processor.
*/
if (PN7_STA_SFID(status) != PN7_STA_MFID(status)) {
sc->vid_to_volts = pn7_mobile_vid_to_volts;
device_set_desc(dev, "PowerNow! K7");
} else {
sc->vid_to_volts = pn7_desktop_vid_to_volts;
device_set_desc(dev, "Cool`n'Quiet K7");
}
break;
-------------------
Cheers,
--
--------------------
Maurizio Lombardi
More information about the Users
mailing list