gpllib: fix call to CPUID function 4
authorSebastian Herbszt <herbszt@gmx.de>
Sun, 21 Mar 2010 20:55:00 +0000 (21:55 +0100)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 29 Mar 2010 20:16:09 +0000 (13:16 -0700)
Only call CPUID function 4 if cpuid_level indicates its availability.

Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
com32/gpllib/cpuid.c

index fa21204..f33e895 100644 (file)
@@ -232,8 +232,10 @@ void generic_identify(struct cpuinfo_x86 *c)
        }
        break;
     case X86_VENDOR_INTEL:
-       cpuid(0x4, &eax, &ebx, &ecx, &edx);
-       c->x86_num_cores = ((eax & 0xfc000000) >> 26) + 1;
+       if (c->cpuid_level >= 0x00000004) {
+           cpuid(0x4, &eax, &ebx, &ecx, &edx);
+           c->x86_num_cores = ((eax & 0xfc000000) >> 26) + 1;
+       }
        break;
     default:
        c->x86_num_cores = 1;