1
0
Fork 0
mirror of https://github.com/anrieff/libcpuid synced 2025-02-22 20:25:04 +00:00
Commit graph

196 commits

Author SHA1 Message Date
Veselin Georgiev
8c7b2fef63 Bump the version to 0.2.2 (and briefly describe changes since 2012). 2015-11-04 01:31:22 +02:00
Veselin Georgiev
9ce5e51cee Add cpuid_get_vendor() function to exports. 2015-10-17 03:05:45 +03:00
Veselin Georgiev
6b09bceb66 Implement cpu_msr_driver_open_core() on Mac OS X and Windows (dummies).
On Windows, we don't have the API that Linux provides, which can be used
to query MSRs of particular CPU cores. However, the same behaviour can be
emulated. Say that the driver handle object also stores 'dedicated thread
index'. When you call 'cpu_msr_driver_open()', this index is set to -1,
so further API functions do not force which core should be executing
RDMSR code. I.e. "I don't care on which core I run".
However, if this is non-negative number, the subsequent
functions like cpu_rdmsr() are forced to pass through this core by
using temporary affinity mask.
2015-10-17 03:00:58 +03:00
Veselin Georgiev
53fe741649 Update errors list; add error messages which had no text description. 2015-10-16 03:07:24 +03:00
Xorg
d0bb9f1249 Make some functions private
This commit is to complete commit 7df646a2749f6ef942f9684d66fee14614a74314.
2015-10-15 16:40:16 +02:00
Xorg
b1cff440b7 Remove cpu_vendor() function, replaced by cpuid_get_vendor() function 2015-10-15 16:40:16 +02:00
Xorg
a853fcd25b Split cpuid_basic_identify() function and add cpuid_get_vendor() function
These changes are needed to improve cpu_vendor() function. Discussion about these changes come from here (french forum): https://forums.archlinux.fr/viewtopic.php?f=18&t=15973&e=1&view=unread#p147593
The original patch, written by Benjamin ROBIN, is available here: http://pastebin.com/5BHUiCB1
2015-10-15 16:40:16 +02:00
Xorg
32ddb7d734 Improve code readability since recent changes in function cpu_msrinfo() 2015-10-12 15:58:11 +02:00
Xorg
11b51a105c Implement INFO_TEMPERATURE for Intel in cpu_msrinfo() 2015-10-06 15:39:51 +02:00
Xorg
f11a5b6d16 Modify INFO_MAX_MULTIPLIER for Intel in cpu_msrinfo() 2015-10-06 15:39:51 +02:00
Xorg
ce6ba819f9 Modify INFO_CUR_MULTIPLIER for Intel in cpu_msrinfo() 2015-10-06 15:39:51 +02:00
Xorg
42e8d6f019 Add INFO_BCLK in cpu_msrinfo() 2015-10-06 15:39:51 +02:00
Xorg
fc72fdee74 Add INFO_VOLTAGE in cpu_msrinfo() 2015-10-06 15:39:51 +02:00
Xorg
36f24eae94 Import some functions from i7z
Get_Bits_Value() is renamed in get_bits_value(), imported from
 5023138d7c/helper_functions.c (L48)
get_msr_value() is renamed in cpu_rdmsr_range(), imported from
 5023138d7c/helper_functions.c (L234)
2015-10-06 15:39:23 +02:00
Xorg
6c8dfd306f Add function cpu_vendor() to define vendor-specific code 2015-10-06 15:39:23 +02:00
Xorg
79fcdba98e Add function cpu_msr_driver_open_core()
This function is similar to cpu_msr_driver_open(), but with core number as parameter
For Linux, core number was always 0. To be able to get all core temp/voltage, we need to set the core number.
2015-10-06 15:39:03 +02:00
Veselin Georgiev
4a72a734aa Correctly recognize Sandy Bridge-E Xeons.
They have L3 cache, and the detection code incorrectly assumed this is a Xeon
Irwindale variant due to an old and no longer valid classification check.
Correctly handle the XEON_IRWIN subcode and add an entry in the matchtable
to fix Sandy Bridge-E Xeon.
2015-09-13 18:36:23 +03:00
Xorg
f642b79047 Add support for newer Intel CPUs 2015-09-13 18:21:53 +03:00
Xorg
80e6bca100 Some restructuring for Intel Nehalem CPUs and newer 2015-09-13 18:13:43 +03:00
Xorg
505102370b Add support for more AMD CPUs 2015-09-13 18:13:43 +03:00
Veselin Georgiev
153a6a7c7d Add support for detecting Xeon Ivy Bridge.
Based on report #7 from the sourceforge bugtrack page.
2015-09-03 09:33:38 +03:00
cosmy1
4dbcaaf47d Update libcpuid_util.c 2015-07-31 14:21:41 +02:00
cosmy1
fe63724d53 MSVC warning fix
using _strdup instead of strdup on Visual C++
2015-07-31 14:20:58 +02:00
Kurt Cancemi
da68fd8bf8 Fix max extended level check 2015-05-17 17:06:05 -04:00
Veselin Georgiev
2834683640 Fixed issue #18: Win64 issues
- move the INLINE_ASM_SUPPORTED guards outside the body of exec_cpuid, as
  suggested by Genoil;
- copy the asm code of busy_sse_loop to masm-x64.asm. Some fixup was
  required, because the microsoft calling convention doesn't expect
  xmm6 & xmm7 to be clobbered in functions.

Confirmed that --clock-ic from cpuid_tool works with the resulting library.
2015-05-07 17:16:46 +02:00
Veselin Georgiev
94fc6ae36a Modify the table matcher a bit. Put some weights on the different fields.
Priously all fields in the matchtable were treated equal in importance.
With this change, the cache size a taken with half the weight in the decision.

Also add detection entries for some more recent Haswells, and the respective
tests. These are an i5 Haswell from a Mac Book Pro, and a i7 Haswel from
Thinkpad T540.
2015-04-17 01:21:30 +03:00
Veselin Georgiev
046d2ca2ab Better support for AVX, AVX2, BMI1 and BMI2 instruction set detection.
- Detect AVX and AVX2 on both Intel and AMD CPUs
- Detect BMI1 and BMI2 instruction sets (BMI2 is only on Haswell, BMI1 is
  also present on Bulldozers).
- Fix tests to reflect changes.
2015-04-16 20:54:37 +03:00
Veselin Georgiev
325904f498 Export the new API function, cpuid_get_total_cpus, in win32 DLLs.
To test it, the --total-cpus option to cpuid_tool calls this function
directly. Confirmed to work now on Windows.
2014-09-27 18:14:06 +03:00
Veselin Georgiev
dcbee3517f Fix some line endings (make them consistent on each mixed-EOL file).
Sadly, there's no consistency for the whole project, but I don't
want to mess with it now.
2014-09-27 17:49:23 +03:00
Robert Kausch
f7e6c6b274 Add cpuid_get_total_cpus to allow getting the total number of CPUs on systems without CPUID. 2014-09-27 17:46:19 +03:00
Robert Kausch
400c55dbe3 Allow compilation on non-x86 platforms. 2014-09-27 17:46:19 +03:00
Robert Kausch
72d49bdd6f Add support for get_total_cpus on *BSD and Solaris. 2014-09-27 17:46:19 +03:00
Veselin Georgiev
fa2083a992 Add support for detecting AVX2. Confirmed to detect on Haswell i3. 2014-09-24 00:03:11 +03:00
Veselin Georgiev
fc4ff90ea8 Recognize presence of RDTSCP on Intel CPUs as well.
Previously the detection only tested this AMD CPUs and the table check was
only present in recog_amd.c

Thanks to Andrew Roberts for reporting this issue!
2014-09-23 15:11:00 +03:00
Veselin Georgiev
bb22718fa7 Remove left-over duplicated line in the Intel matchtable. 2014-08-20 11:31:03 +03:00
Veselin Georgiev
7bd1382309 Fixed issue #7: Atom N2800
Reorganize the detection for Intel Atom CPUs

- no longer make the distinction between single- and dualcore CPUs.
- correctly handle all Pineview and Cedarview CPUs.
2014-08-20 11:28:26 +03:00
Veselin Georgiev
4e224776e6 Shut up a warning in cpu_clock_by_ic().
Namely, printing a uint64_t with printf(...%llu...) is considered bad
practice; you need to use the format specifier PRIu64, defined in
inttypes.h. Apparently, it's not safe to assume that
uint64_t == unsigned long long.

However, I don't like this kind of formatting uglyness.
The td variable on my machine is ~30k - and conceivably can't go
above 1M. Moreover, this printf is only for detailed debug purposes.
So it's safe to cast the var to int and print it with %d.
2014-08-18 18:24:44 +03:00
Veselin Georgiev
9b949d1dff Fixed issue #6: file-contains-current-date
Remove the line with the build date of the library from the
raw serialized file format. It doesn't help anything and it
bothers the openSUSE packaging guys. Having the current
date into a binary triggers a warning:

"Current date containing causes unnecessary package
republishing."

Confirmed that "strings libcpuid.a | grep 2014" no longer
contains the current date.
2014-08-04 14:02:35 +03:00
Veselin Georgiev
decba3e728 Simplify Bulldozer detection; differentiate Bulldozer<->Vishera.
Also add two tests:
- AMD FX-8150 - which is decoded as 'Bulldozer X4'
- AMD FX-9590 - which is decoted as 'Vishera X4'
2014-07-23 22:13:37 +03:00
Veselin Georgiev
5052ad4d1f Fixed a detection for Turion Griffin - it's ext_family is not 23, it's 17.
Also, the sse-width guesswork seems to handle this (wrong) Griffin ext_family
explicitly, so fix it there as well.

Seems that members of ext_family 20 (AMD Fusion based APUs) also are 64-bit,
but they have the authoritative sse width detection bit, so we don't need
to handle them explicitly here.
2014-07-23 22:06:11 +03:00
Veselin Georgiev
f5ab18506f Fix CPU speed detection for Bulldozer and related cores.
It seems that our SSE-based speed test is 1 IPC (instructions per clock)
on all current CPUs, and 1.4 IPC on the Bulldozer, which leads to its
result being 40% too high. Correct that in the function.
2014-07-23 21:29:34 +03:00
Veselin Georgiev
f883e2b592 Add recognition support for Haswell i3, i5 and i7.
Add a test based on a Haswell i3 (Core i3-4130).
2014-07-18 21:00:48 +03:00
Veselin Georgiev
f750dde2c0 Fixed issue #4: Advanced Power Management Features
- Move detection of constant_tsc to common; it is spec'd in Intel docs
- Fix broken interpretation of EAX in leaf 80000000h: it shows max
  800000xx-value, not max xx-value. This causes, for example, to seek
  for extended features on Pentium II, where the extended leafs aren't
  supported by the CPU at all.
  This is only in common feature detection. AMD detection is fine.
- Add detection of a few new features in AMD leaf 80000007h: cbp (core
  performance boost), aperfmperf (APERF/MPERF MSRs supported),
  pfi (processor feedback interface) and pa (processor accumulator).

"make test" is broken right now, to be fixed in a subsequent commit.
2014-06-30 03:07:33 +03:00
Veselin Georgiev
798bcc80b2 Remove a space, which causes "make consistency" to frown. 2014-06-30 02:36:33 +03:00
Veselin Georgiev
2914256486 Update ChangeLog; bump the version to 0.2.1 everywhere.
Previously, 0.2.1 was mentioned in libcpuid.h, but this was not,
actually, in effect; it wasn't mentioned in autoconf and Visual Studio
project files. Also, cpuid_lib_version() still returned "0.2.0".
2014-06-25 14:15:53 +03:00
Veselin Georgiev
23c629295a Add *.sln, *.vcproj files to automake for "make dist" to work.
The .am files contained obsolete data (to include libcpuid.sln/libcpuid.vcproj
in a dist). These files are now in libcpuid_vc71.* and libcpuid_vc9.* flavours,
thus this change. "make dist" now works.
2014-06-25 13:54:41 +03:00
Veselin Georgiev
20632054d6 Add support for Atom Pineview. 2014-06-23 23:41:02 +03:00
Veselin Georgiev
45651ef7bc Merge 141243f from http://github.com/eloaders/libcpuid
This adds support for x2apic detection. This is not a direct merge, since

- the feature is spelled as 'x2apic' instead of 'x2APIC', for consistency with other flags;
- tests are added
- the id of the feature is moved to the end of the cpu_feature_t enum, for binary
  compatibility.
2014-06-22 21:00:18 +03:00
Veselin Georgiev
0f90f77910 Fixed a crash with gcc-4.6.3 in 32-bit mode. The compiler aggressively optimizes exec_cpuid(), making the stack layout not exactly what the assembly expects. Rearranging instructions seems to fix things. The 64-bit changes aren't tested, though.
git-svn-id: https://svn.code.sf.net/p/libcpuid/code/HEAD/libcpuid@110 3b4be424-7ac5-41d7-8526-f4ddcb85d872
2013-01-18 22:32:44 +00:00
Veselin Georgiev
b175d4d6df VS 2002 also doesn't support long long natively (thanks to Andras Kenez for the pointer)
git-svn-id: https://svn.code.sf.net/p/libcpuid/code/HEAD/libcpuid@109 3b4be424-7ac5-41d7-8526-f4ddcb85d872
2012-09-19 16:53:09 +00:00