[PATCH] Intel clock speed detection

Nicholas J. Leon (nicholas@binary9.net)
Tue, 23 Dec 1997 13:50:02 -0500 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--80617795-1917561260-882903002=:357
Content-Type: TEXT/PLAIN; charset=US-ASCII

Fellow kernel enthusiasts -

I've been playing with routines to determine actual cpu speed on Intel
chips; hoping to replace the "75+" notation with something accurate.

Using some assembly routines from a patch I acquired a few months ago,
whose author I have completely forgotten, I've made some preliminary
patches against 2.1.75. Here is what I did:

. added a field called "x86_mhz" to cpuinfo_x86
. added a function called "get_cpu_speed" to setup.c
. calling get_cpu_speed from identify_cpu() in setup.c
. added reporting of the speed to print_cpu_info() and get_cpuinfo()
in setup.c

Here are the problems I know I haven't addressed:

. does my mhz detection routine work reliably (ie, at all)
with all non-intel cpu's?
. what about SMP machines?
. slight variation of reported mhz (132 vs 133)
. struct cpu_model_info now has redundant elements of "Pentium"
(since I removed the 60/66, 75+). I'm not sure how these are
referenced in the first place, so I didn't compact them together
(as they should be).

The first I am hoping that some people out there will try my patch on
their AMD and Cyrix systems and let me know. The second, uhhhhh, well,
I'm over my head with this one. I would certainly appreciate any and
all help that might come my direction. Regardless of knowledge,
though, I have no practical way of testing SMP's reaction to my
patch. So I must rely on others for this.

I know that in the past, Linus has refused to include clock speed
detecting into the kernel. From what I understand, the original patch
did the calculations on the fly when you examined /proc/cpuinfo and
this was the reason for the refusal. My patch doesn't. It calculates
the rate upon boot and stores the information into
cpuinfo_x86. Hopefully, this will allow its inclusion into the
mainstream kernel once all the issues have been taken care of.

Please, take the time and look at what I've done. I know its not
anything amazing, but since the kernel isn't written in Perl, there's
not a lot I can contribute :) This, however, might be one of those
things I _can_ do.

Thank you for your time!

[ patch attached ]

___________________________________________________________________________

simple is elegant nicholas@binary9.net
___________________________________________________________________________

--80617795-1917561260-882903002=:357
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=clockspeed
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.971223135002.357B@neko.binary9.net>
Content-Description: The Patch against 2.1.75

ZGlmZiAtTnVyIGxpbnV4Ljc1LnByaXN0L01ha2VmaWxlIGxpbnV4L01ha2Vm
aWxlDQotLS0gbGludXguNzUucHJpc3QvTWFrZWZpbGUJU3VuIERlYyAyMSAy
MDo1ODoxNCAxOTk3DQorKysgbGludXgvTWFrZWZpbGUJTW9uIERlYyAyMiAy
MDoyMjo0MCAxOTk3DQpAQCAtMTEsNyArMTEsNyBAQA0KICMNCiAjIE5PVEUh
IFNNUCBpcyBleHBlcmltZW50YWwuIFNlZSB0aGUgZmlsZSBEb2N1bWVudGF0
aW9uL1NNUC50eHQNCiAjDQotU01QID0gMQ0KKyNTTVAgPSAxDQogIw0KICMg
U01QIHByb2ZpbGluZyBvcHRpb25zDQogIyBTTVBfUFJPRiA9IDENCmRpZmYg
LU51ciBsaW51eC43NS5wcmlzdC9hcmNoL2kzODYva2VybmVsL3NldHVwLmMg
bGludXgvYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jDQotLS0gbGludXguNzUu
cHJpc3QvYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jCVN1biBEZWMgMjEgMjA6
Mjc6MTggMTk5Nw0KKysrIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvc2V0dXAu
YwlUdWUgRGVjIDIzIDEzOjM5OjMzIDE5OTcNCkBAIC0zMjMsNiArMzIzLDM4
IEBADQogCQljLT54ODZfdmVuZG9yID0gWDg2X1ZFTkRPUl9VTktOT1dOOw0K
IH0NCiANCitfX2luaXRmdW5jKGludCBnZXRfY3B1X3NwZWVkKHZvaWQpKQ0K
K3sNCisJdW5zaWduZWQgbG9uZyBpbnQgYSxiLGoscTsNCisNCisJX19hc21f
XyBfX3ZvbGF0aWxlX18gKA0KKwkJIm1vdmwgJDEsJSVlYXgNCisJCSBjcHVp
ZCINCisJCToiPWQiIChhKQ0KKwkJOg0KKwkJOiIlZWF4IiwiJWVieCIsIiVl
Y3giLCIlZWR4Iik7DQorDQorCWlmICgoYSAmIDB4MTApPT0wKSB7DQorCSAg
cmV0dXJuIDA7DQorCX0NCisJaj1qaWZmaWVzOw0KKwlmb3IgKDtqPT1qaWZm
aWVzOyk7IGo9amlmZmllczsNCisJX19hc21fXyBfX3ZvbGF0aWxlX18gKA0K
KwkJInJkdHNjIg0KKwkJOiAiPWEiIChhKQ0KKwkJOg0KKwkJOiAiJWVheCIs
IiVlZHgiKTsNCisJZm9yICg7aj09amlmZmllczspOw0KKwlfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoDQorCQkicmR0c2MiDQorCQk6ICI9YSIgKGIpDQorCQk6
DQorCQk6ICIlZWF4IiwiJWVkeCIpOw0KKwlxPSgoYi1hKSsoNTAwMDAwL0ha
KSkvKDEwMDAwMDAvSFopOw0KKwkNCisJcmV0dXJuIHE7DQorfQ0KKw0KIHN0
cnVjdCBjcHVfbW9kZWxfaW5mbyB7DQogCWludCB2ZW5kb3I7DQogCWludCB4
ODY7DQpAQCAtMzM0LDkgKzM2Niw5IEBADQogCQl7ICI0ODYgRFgtMjUvMzMi
LCAiNDg2IERYLTUwIiwgIjQ4NiBTWCIsICI0ODcgRFgiLCAiNDg2IERYLzIi
LCAiNDg2IFNMIiwgIjQ4NiBTWC8yIiwNCiAJCSAgTlVMTCwgIjQ4NiBEWC8y
LVdCIiwgIjQ4NiBEWC80IiwgIjQ4NiBEWC80LVdCIiwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCB9fSwNCiAJeyBYODZfVkVORE9SX0lOVEVMLAk1LA0KLQkg
IHsgIlBlbnRpdW0gNjAvNjYgQS1zdGVwIiwgIlBlbnRpdW0gNjAvNjYiLCAi
UGVudGl1bSA3NSsiLA0KKwkgIHsgIlBlbnRpdW0gQS1zdGVwIiwgIlBlbnRp
dW0iLCAiUGVudGl1bSIsDQogCSAgICAiT3ZlckRyaXZlIFBPRFA1VjgzIiwg
IlBlbnRpdW0gTU1YIiwgTlVMTCwgTlVMTCwNCi0JICAgICJNb2JpbGUgUGVu
dGl1bSA3NSsiLCAiTW9iaWxlIFBlbnRpdW0gTU1YIiwgTlVMTCwgTlVMTCwg
TlVMTCwNCisJICAgICJNb2JpbGUgUGVudGl1bSIsICJNb2JpbGUgUGVudGl1
bSBNTVgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KIAkgICAgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCB9fSwNCiAJeyBYODZfVkVORE9SX0lOVEVMLAk2LA0KIAkg
IHsgIlBlbnRpdW0gUHJvIEEtc3RlcCIsICJQZW50aXVtIFBybyIsIE5VTEws
ICJQZW50aXVtIElJIiwgTlVMTCwNCkBAIC0zOTcsNiArNDI5LDggQEANCiAJ
CXN0cmNweShjLT54ODZfbW9kZWxfaWQsIHApOw0KIAllbHNlDQogCQlzcHJp
bnRmKGMtPng4Nl9tb2RlbF9pZCwgIiUwMngvJTAyeCIsIGMtPng4Nl92ZW5k
b3IsIGMtPng4Nl9tb2RlbCk7DQorDQorCWMtPng4Nl9taHo9Z2V0X2NwdV9z
cGVlZCgpOw0KIH0NCiANCiBzdGF0aWMgY2hhciAqY3B1X3ZlbmRvcl9uYW1l
c1tdIF9faW5pdGRhdGEgPSB7DQpAQCAtNDE5LDYgKzQ1Myw5IEBADQogCWVs
c2UNCiAJCXByaW50aygiJXMiLCBjLT54ODZfbW9kZWxfaWQpOw0KIA0KKwlp
ZiAoYy0+eDg2X21oeikgDQorCSAgICAgICAgcHJpbnRrKCIgJWkgTWh6Iixj
LT54ODZfbWh6KTsNCisNCiAJaWYgKGMtPng4Nl9tYXNrKQ0KIAkJcHJpbnRr
KCIgc3RlcHBpbmcgJTAyeCIsIGMtPng4Nl9tYXNrKTsNCiANCkBAIC00NTAs
MTAgKzQ4NywxMiBAQA0KIAkJcCArPSBzcHJpbnRmKHAsICJwcm9jZXNzb3Jc
dDogJWRcbiINCiAJCQkgICAgICAgImNwdSBmYW1pbHlcdDogJWNcbiINCiAJ
CQkgICAgICAgIm1vZGVsXHRcdDogJXNcbiINCisJCQkgICAgICAgImNsb2Nr
IHNwZWVkXHQ6ICVkIE1oelxuIg0KIAkJCSAgICAgICAidmVuZG9yX2lkXHQ6
ICVzXG4iLA0KIAkJCSAgICAgICBuLA0KIAkJCSAgICAgICBjLT54ODYgKyAn
MCcsDQogCQkJICAgICAgIGMtPng4Nl9tb2RlbF9pZFswXSA/IGMtPng4Nl9t
b2RlbF9pZCA6ICJ1bmtub3duIiwNCisJCQkgICAgICAgYy0+eDg2X21oeiwN
CiAJCQkgICAgICAgYy0+eDg2X3ZlbmRvcl9pZFswXSA/IGMtPng4Nl92ZW5k
b3JfaWQgOiAidW5rbm93biIpOw0KIAkJaWYgKGMtPng4Nl9tYXNrKSB7DQog
CQkJaWYgKGMtPng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9DWVJJWCkNCmRp
ZmYgLU51ciBsaW51eC43NS5wcmlzdC9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nl
c3Nvci5oIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcHJvY2Vzc29yLmgNCi0t
LSBsaW51eC43NS5wcmlzdC9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nlc3Nvci5o
CVN1biBEZWMgMjEgMjA6Mjc6MTggMTk5Nw0KKysrIGxpbnV4L2luY2x1ZGUv
YXNtLWkzODYvcHJvY2Vzc29yLmgJVHVlIERlYyAyMyAxMzoxNDo0MyAxOTk3
DQpAQCAtMzMsNiArMzMsNyBAQA0KIAlpbnQJZmRpdl9idWc7DQogCWludAlm
MDBmX2J1ZzsNCiAJdW5zaWduZWQgbG9uZyBsb29wc19wZXJfc2VjOw0KKyAg
ICAgICAgdTE2ICAgICB4ODZfbWh6Ow0KIH07DQogDQogI2RlZmluZSBYODZf
VkVORE9SX0lOVEVMIDANCg==
--80617795-1917561260-882903002=:357--