1
0
Fork 0
mirror of https://github.com/anrieff/libcpuid synced 2024-12-16 16:35:45 +00:00

Fix P-III Celeron misdetected as plain P-III (misreport id #8)

Reported via http://libcpuid.sourceforge.net/bugreport.php
The test in particular has no brand string, which was causing the
misdetection (as is the case with a lot of other models, libcpuid
relies on accurate brand string being programmed by the BIOS in
order to do the detection).

The actual CPU was a Pentium-III based Celeron (SL54Q), but it
was detected as "Pentium III (Coppermine)".

A bit of historical trivia: for the related Tualatin models, if
the BIOS doesn't enter a brand string, there might be NO WAY to
tell a regular P-3 and a P-3 Celeron apart: P-3s have variants
with 256KiB and 512KiB L2 cache, while the Celerons are 256 KiB, so
a 256KiB regular P3 is no different than its corresponding Celeron.
Only the FSB is different, but there's no way to detect this via
CPUID.

For the Coppermines its an easier case: Celerons are always 128KiB,
and Pentia are 256KiB, so I've added this distinction in the tables.
This commit is contained in:
Veselin Georgiev 2018-05-02 10:22:00 +03:00
parent 671fa8a750
commit 45d04a9e4a
2 changed files with 107 additions and 5 deletions

View file

@ -60,6 +60,7 @@ enum _intel_model_t {
typedef enum _intel_model_t intel_model_t; typedef enum _intel_model_t intel_model_t;
const struct match_entry_t cpudb_intel[] = { const struct match_entry_t cpudb_intel[] = {
// F M S EF EM #cores L2$ L3$ BC ModelBits ModelCode Name
{ -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Intel CPU" }, { -1, -1, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Unknown Intel CPU" },
/* i486 */ /* i486 */
@ -107,16 +108,17 @@ const struct match_entry_t cpudb_intel[] = {
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"}, { 6, 8, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"},
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"}, { 6, 10, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Coppermine)"},
{ 6, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Tualatin)" }, { 6, 11, -1, -1, -1, 1, -1, -1, NC, 0 , 0, "Pentium III (Tualatin)" },
{ 6, 11, -1, -1, -1, 1, 512, -1, NC, 0 , 0, "Pentium III (Tualatin)" },
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tanner)" }, { 6, 7, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tanner)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" }, { 6, 8, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" }, { 6, 10, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Cascades)" },
{ 6, 11, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tualatin)" }, { 6, 11, -1, -1, -1, 1, -1, -1, NC, XEON_ , 0, "P-III Xeon (Tualatin)" },
{ 6, 7, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-III Celeron (Katmai)" }, { 6, 7, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Katmai)" },
{ 6, 8, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" }, { 6, 8, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" },
{ 6, 10, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" }, { 6, 10, -1, -1, -1, 1, 128, -1, NC, CELERON_ , 0, "P-III Celeron (Coppermine)" },
{ 6, 11, -1, -1, -1, 1, -1, -1, NC, CELERON_ , 0, "P-III Celeron (Tualatin)" }, { 6, 11, -1, -1, -1, 1, 256, -1, NC, CELERON_ , 0, "P-III Celeron (Tualatin)" },
/* Netburst based (Pentium 4 and later) /* Netburst based (Pentium 4 and later)
classic P4s */ classic P4s */

View file

@ -0,0 +1,100 @@
basic_cpuid[0]=00000002 756e6547 6c65746e 49656e69
basic_cpuid[1]=0000068a 00000001 00000000 0383f9ff
basic_cpuid[2]=03020101 00000000 00000000 0c040841
basic_cpuid[3]=03020101 00000000 00000000 0c040841
basic_cpuid[4]=03020101 00000000 00000000 0c040841
basic_cpuid[5]=03020101 00000000 00000000 0c040841
basic_cpuid[6]=03020101 00000000 00000000 0c040841
basic_cpuid[7]=03020101 00000000 00000000 0c040841
basic_cpuid[8]=03020101 00000000 00000000 0c040841
basic_cpuid[9]=03020101 00000000 00000000 0c040841
basic_cpuid[10]=03020101 00000000 00000000 0c040841
basic_cpuid[11]=03020101 00000000 00000000 0c040841
basic_cpuid[12]=03020101 00000000 00000000 0c040841
basic_cpuid[13]=03020101 00000000 00000000 0c040841
basic_cpuid[14]=03020101 00000000 00000000 0c040841
basic_cpuid[15]=03020101 00000000 00000000 0c040841
basic_cpuid[16]=03020101 00000000 00000000 0c040841
basic_cpuid[17]=03020101 00000000 00000000 0c040841
basic_cpuid[18]=03020101 00000000 00000000 0c040841
basic_cpuid[19]=03020101 00000000 00000000 0c040841
basic_cpuid[20]=03020101 00000000 00000000 0c040841
basic_cpuid[21]=03020101 00000000 00000000 0c040841
basic_cpuid[22]=03020101 00000000 00000000 0c040841
basic_cpuid[23]=03020101 00000000 00000000 0c040841
basic_cpuid[24]=03020101 00000000 00000000 0c040841
basic_cpuid[25]=03020101 00000000 00000000 0c040841
basic_cpuid[26]=03020101 00000000 00000000 0c040841
basic_cpuid[27]=03020101 00000000 00000000 0c040841
basic_cpuid[28]=03020101 00000000 00000000 0c040841
basic_cpuid[29]=03020101 00000000 00000000 0c040841
basic_cpuid[30]=03020101 00000000 00000000 0c040841
basic_cpuid[31]=03020101 00000000 00000000 0c040841
ext_cpuid[0]=03020101 00000000 00000000 0c040841
ext_cpuid[1]=03020101 00000000 00000000 0c040841
ext_cpuid[2]=03020101 00000000 00000000 0c040841
ext_cpuid[3]=03020101 00000000 00000000 0c040841
ext_cpuid[4]=03020101 00000000 00000000 0c040841
ext_cpuid[5]=03020101 00000000 00000000 0c040841
ext_cpuid[6]=03020101 00000000 00000000 0c040841
ext_cpuid[7]=03020101 00000000 00000000 0c040841
ext_cpuid[8]=03020101 00000000 00000000 0c040841
ext_cpuid[9]=03020101 00000000 00000000 0c040841
ext_cpuid[10]=03020101 00000000 00000000 0c040841
ext_cpuid[11]=03020101 00000000 00000000 0c040841
ext_cpuid[12]=03020101 00000000 00000000 0c040841
ext_cpuid[13]=03020101 00000000 00000000 0c040841
ext_cpuid[14]=03020101 00000000 00000000 0c040841
ext_cpuid[15]=03020101 00000000 00000000 0c040841
ext_cpuid[16]=03020101 00000000 00000000 0c040841
ext_cpuid[17]=03020101 00000000 00000000 0c040841
ext_cpuid[18]=03020101 00000000 00000000 0c040841
ext_cpuid[19]=03020101 00000000 00000000 0c040841
ext_cpuid[20]=03020101 00000000 00000000 0c040841
ext_cpuid[21]=03020101 00000000 00000000 0c040841
ext_cpuid[22]=03020101 00000000 00000000 0c040841
ext_cpuid[23]=03020101 00000000 00000000 0c040841
ext_cpuid[24]=03020101 00000000 00000000 0c040841
ext_cpuid[25]=03020101 00000000 00000000 0c040841
ext_cpuid[26]=03020101 00000000 00000000 0c040841
ext_cpuid[27]=03020101 00000000 00000000 0c040841
ext_cpuid[28]=03020101 00000000 00000000 0c040841
ext_cpuid[29]=03020101 00000000 00000000 0c040841
ext_cpuid[30]=03020101 00000000 00000000 0c040841
ext_cpuid[31]=03020101 00000000 00000000 0c040841
intel_fn4[0]=03020101 00000000 00000000 0c040841
intel_fn4[1]=03020101 00000000 00000000 0c040841
intel_fn4[2]=03020101 00000000 00000000 0c040841
intel_fn4[3]=03020101 00000000 00000000 0c040841
intel_fn4[4]=03020101 00000000 00000000 0c040841
intel_fn4[5]=03020101 00000000 00000000 0c040841
intel_fn4[6]=03020101 00000000 00000000 0c040841
intel_fn4[7]=03020101 00000000 00000000 0c040841
intel_fn11[0]=03020101 00000000 00000000 0c040841
intel_fn11[1]=03020101 00000000 00000000 0c040841
intel_fn11[2]=03020101 00000000 00000000 0c040841
intel_fn11[3]=03020101 00000000 00000000 0c040841
--------------------------------------------------------------------------------
6
8
10
6
8
1
1
16
16
128
-1
-1
4
4
-1
-1
32
32
-1
-1
64 (non-authoritative)
P-III Celeron (Coppermine)
fpu vme de pse tsc msr pae mce cx8 mtrr sep pge mca cmov pat pse36 mmx fxsr sse