On Aug 17 08:27, Achim Gratz wrote: > Achim Gratz nexgo.de> writes: > > The output is correct now for a SandyBridge dual-core CPU with > > logical processors (aka HT) and an IvyBridge dual-core CPU w/o HT. > > Another IvyBridge dual-core w/ HT looks also correct. > > However, for the Piledriver Opteron 6328 in the 2012R2 server, Cygwin > reports 8 cores. Linux on the other hand would report 8 processors on 4 > cores (SMT, like HT on Intel). I don't know where you get the topology > information from, The code is loosly based on what the Linux kernel does, combined with the information given in http://wiki.osdev.org/Detecting_CPU_Topology_%2880x86%29 So on AMD the topo is taken from cpuids 0x80000008 and 0x00000001, but I may have made a mistake there. [...digging...] Oh, ok. It seems I accidentally dropped a piece of code there. Can you do me a favor and run the following test application? I just need the value your Piledrive CPU returns in ecx returned by cpuid 0x80000008: ======================================================================== #include #include static inline void __attribute ((always_inline)) cpuid (uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, uint32_t ain, uint32_t cin) { asm volatile ("cpuid" : "=a" (*a), "=b" (*b), "=c" (*c), "=d" (*d) : "a" (ain), "c" (cin)); } int main () { uint32_t eax, ebx, ecx, edx; cpuid (&eax, &ebx, &ecx, &edx, 0x80000008, 0); printf ("0x80000008 %08x %08x %08x %08x\n", eax, ebx, ecx, edx); } ======================================================================== Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat