Commit Graph

254 Commits

Author SHA1 Message Date
Dr-Noob
284faf84c3 [v1.07] Bump version 2025-10-31 07:50:04 +01:00
Dr-Noob
a19c421362 [v1.06][RISCV] Add latest extensions and refactor the mask structure
There are *a lot* of new extensions in the Linux kernel now (Linux
v6.16) since the last time I checked (Linux v6.2.10), so added them all
plus ime, which is not present in the kernel apparently, but that I
spotted in a RISC-V chip.

Previously, the mask was represented with a uint64_t value, which is
fine as long as we have less than 65 possible extensions. This is not
the case anymore, so instead I replaced that with a pointer of bool,
which gets allocated depending on the max number of extensions that
we support.
2025-10-31 07:45:07 +01:00
Dr-Noob
5bddbc6b06 [v1.06] Reorganize attributes in printer
This follows the same approach of gpufetch (in
6589de971750b7f4e52c0c35c031fe6204cefdba) where, instead of having a
separate struct for long and short names, both gets merged in a single
struct (ATTRIBUTE_INFO)

This indirectly fixes a bug in RISC-V printer where, if the output
was too large and the short name was selected, it could try to print
an out-of-bound value when accessing the ATTRIBUTE_PEAK. The reason is
that the long and short structures didnt have the same length (because
one attribute name was missing in the short struct). This is now fixed
since we have combined both long and short attribute names.

commit 6e8cccde32
Author: Dr-Noob <peibolms@gmail.com>
Date:   Wed Oct 29 21:54:38 2025 +0100

    Reorganize attributes in printer
2025-10-29 22:08:44 +01:00
Dr-Noob
a0c08ccc0b [v1.06][RISCV] Add support for SpacemiT K1-X SoC (#286) 2024-10-10 08:39:24 +01:00
Dr-Noob
65c75eb443 [v1.06][RISCV] Support for fetching mvendorid, marchid and mimpid (#286)
Getting these 3 RISC-V cpuinfo fields allows the detection of
microarchitecture (and other information), extending the RISC-V
detection capabilities. In particular, this is used here to detect
the marchid of Spacemit X60 uarch.

This commit also changes how the microarchitecture is fetched
(i.e., get_uarch) so that it does not rely only in the uarch field
in cpuinfo, but also on the marchid value.
2024-10-10 08:37:12 +01:00
Dr-Noob
a5d52b59df [v1.06] Nit: Fix warning due to missing newline at the end of file 2024-10-09 08:29:51 +01:00
Dr-Noob
7d786ca1b7 [v1.06][ARM] Implement automatic SoC inferring from device tree
This is a major change in the SoC detection methodology.

Previous to this commit, the SoC (model, vendor and manufacturing
process) would only appear if the exact model was found in the LUT.
In other words, every supported SoC must be added manually to the LUT.
This would allow to show the precise SoC model and the manufacturing
process, which can only be hardcoded (i.e., it cannot be dynamically
determined).

This commit introduces guess_raw_soc_from_devtree, a new way of
inferring the SoC. This simply reads from the compatible file in the
device tree and tries to find a matching vendor to that string. If
there is a match, then we simply copy the model also from the
compatible string and show it directly.

This new implementation will show a less "precise" SoC name and
no manufacturing process because there would be no hardcoded value for
that SoC. However, it improves the scalability of the SoC detection
significantly because there is no longer a need to hardcode every
single SoC.

Lastly, there are some SoC vendors intentionally left outside the
scope of this function: For now I prefer to keep updating manually
the LUT for those to ensure the highest quality detection (e.g.,
showing precise SoC name and manufacturing process).
2024-09-22 17:11:31 +01:00
Dr-Noob
ab43a11ef2 [v1.06][X86] Fix accurate-pp in hybrid architectures (fixes #169)
Overview of changes:
- Adds field max_pp in frequency struct to hold the max freq for peak-performance estimation.
- Instead of getting the max frequency in get_peak_performance, we get it in get_cpu_info (more natural).
- Adds fill_frequency_info_pp which fills the max_pp of the passed cpu by calling measure_frequency.

The approach is to call measure_frequency with a vector where the max frequencies are stored. Then,
the first time measure_frequency is called, the frequency is measured while running all the cores,
and the max frequency is computed per module (e.g., in the case of 2 modules, we would compute
the freq for the first and for the second module), and saved into this vector. Subsequent calls to
measure_frequency will just read the corresponding value for the vector. In other words, the frequency
is only measured once for the whole CPU.
2024-09-10 22:43:23 +01:00
Wunk
edbfc9722e [v1.06][ARM] Add Windows on Arm support (#273) 2024-09-10 09:40:46 +02:00
Dr-Noob
278efb75c9 [v1.06][ARM] Add support for Marvell SoC (#279) 2024-09-10 07:41:11 +01:00
Dr-Noob
5bd507e4b6 [v1.06][ARM] Add support for Amlogic A311D (#268) 2024-08-31 09:37:50 +01:00
Dr-Noob
9192ba3eb8 [v1.06][ARM] Add (another) cpufamily for M3 and set the ARM version, fixing peak performance wrong result (#230) 2024-08-29 08:13:05 +01:00
Dr-Noob
9f66a137c5 [v1.06][ARM] Add support for NXP i.MX 8M Plus (#261) 2024-08-25 17:44:29 +01:00
Dr-Noob
40374121b8 [v1.06] Replace emalloc+memset with ecalloc when possible. Refactor some memory allocation code 2024-08-24 15:32:33 +01:00
Dr-Noob
7ad19d113c [v1.06] Remove soc_ prefix from field names in system_on_chip struct 2024-08-24 12:44:24 +01:00
Dr-Noob
13605ed0ce [v1.06][ARM] Remove BCM prefix from Broadcom vendor string 2024-08-24 12:34:57 +01:00
Dr-Noob
7689355a72 [v1.06][ARM] Add support for Apple SoCs in Asahi Linux (#263) 2024-08-23 08:37:13 +01:00
Dr-Noob
48c598cf3b [v1.06][ARM] Add support for Ampere Altra (#262) 2024-08-19 08:46:07 +01:00
Dr-Noob
aa94389bbe [v1.06][ARM] Fix two off-by-one bugs (#264) 2024-08-19 08:39:52 +01:00
Er2
8d10a03adc [v1.06][FreeBSD][Apple] Implement fallback frequency calculation (#251) 2024-08-19 09:21:41 +02:00
Dr-Noob
2410fd16d3 [v1.06] Bump version 2024-08-18 15:12:27 +01:00
Dr-Noob
2788e6831e [v1.05][ARM] Fix SVE cntb datatype 2024-08-10 11:16:22 +01:00
Dr-Noob
90624b9aaa [v1.05][ARM] Preeliminary support for SVE detection (#259) 2024-08-10 11:08:39 +01:00
Dr-Noob
cb186a2f97 [v1.05][X86] Do not show empty SSE if not supported (#260) 2024-08-02 10:09:51 +01:00
Dr-Noob
7c947bdf64 [v1.05] Use UNKNOWN_DATA instead of -1 in frequency measurement 2024-07-11 22:10:00 +01:00
Dr-Noob
1ed3a0f2bf [v1.05] Adapt frequency measurement iterations depending on CPU speed
This is achieved by running a first measurement which gets a taste of
CPU speed, then estimate a reasonable value for the iterations of the
real measurement and then running the actual measurement. This is very
helpful to reduce the runtime of the measurement, especially for slow
CPUs
2024-07-11 21:55:01 +01:00
Dr-Noob
59cd2dd128 [v1.05][X86] Add support for Hygon CPUs (#244) 2024-07-09 08:34:44 +01:00
Dr-Noob
da1981b97c [v1.05] Check read return value in frequency measurement 2024-07-09 08:32:24 +01:00
Dr-Noob
8506c91e00 [v1.05] Add --measure-max-freq (available on x86 and ARM) 2024-07-08 09:07:57 +01:00
Dr-Noob
ece28cbdee [v1.05] Small fix in help message 2024-07-08 08:31:00 +01:00
Dr-Noob
7b46c78249 [v1.05] Replace printf with proper printErr 2024-07-08 08:28:48 +01:00
Dr-Noob
e0095c303d [v1.05] Print a tilde in case the freq was measured (indicating that this value is an approximation) 2024-07-08 08:23:56 +01:00
Dr-Noob
65378aaed9 [v1.05] Move sysctl from ARM-specific to common (#251) 2024-07-07 12:43:03 +01:00
Dr-Noob
9212f19de1 [v1.05] Add support for frequency measurement (both x86 and ARM) (branch measure-freq #220) 2024-07-05 08:44:34 +01:00
Dr-Noob
b019256515 [v1.05] Continue merging measure-freq #220
- [v1.05][X86] Show SSE if AVX/FMA is not supported
- [v1.05][X86] Do not stop if cach is NULL and check for non-NULL cache in get_topology_info functions
- [v1.05][X86] Fix bug where the number of cpus were not set if NULL was returned inside the loop. Ensure topo is not NULL in get_peak_performance. Fallback to UNKNOWN_DATA when we have no information about topology
2024-07-05 08:37:54 +01:00
Dr-Noob
d4cadbd807 [v1.05] Move bind_to_cpu from x86-specific to global (merging measure-freq #220) 2024-07-05 08:32:11 +01:00
Dr-Noob
4f081ef1a2 [v1.05] Add newline to fix dummy warning with clang 2024-07-03 09:09:37 +02:00
Dr-Noob
1b746bc67d [v1.05][ARM] Add support to detect SoC from PCI (#245) with initial support for NVIDIA Tegra 2024-07-03 08:01:53 +01:00
Dr-Noob
59efbf4e08 [v1.05] Add VirtualBox hypervisor (noted in #235) 2024-05-18 22:27:17 +01:00
Dr-Noob
1504c5d0ef [v1.05][X86] Report x86 / x86_64 in ARCH_X86 builds 2024-02-13 21:26:24 +00:00
Dr-Noob
4a8a7567f0 [v1.05] Add support for NO_COLOR (#227) 2024-02-13 08:41:54 +00:00
Dr-Noob
c01f60fa6c [v1.05] Implement new approach to infer SoC from the uarch. Add support for Kunpeng SoCs 2024-02-08 09:04:51 +00:00
Dr-Noob
b610dc8c7d [v1.05] Bump version 2024-02-05 18:33:15 +00:00
Dr-Noob
14df701707 [v1.04] Check release when printing error also in Apple chip failures 2024-02-05 08:46:17 +00:00
Dr-Noob
cbcce9c2ed [v1.04] Improve error reporting in the case of unkown microarchitectures. As pointed out in #224 this was already solved, but this commit tries to be an improvement over the previous implementation 2024-02-05 08:37:59 +00:00
Dr-Noob
6566ac3ccf [v1.04] Add Apple VZ hypervisor (#218) 2024-01-15 08:43:28 +00:00
Dr-Noob
0a048717bf [v1.04][X86] Fix bug in AMD CPUs (#212) 2023-12-24 23:03:20 +00:00
Dr-Noob
8870a0ca0c [v1.04][RISCV] Add Sipeed ASCII logo 2023-11-01 20:50:05 +00:00
Dr-Noob
a43b700540 [v1.04][RISCV] Add Lichee PI 4a SoC (#200) 2023-11-01 20:48:25 +00:00
Dr-Noob
bf890965a3 [v1.04] Add colors to Google logo 2023-10-17 09:19:05 +02:00