"Fossies" - the Fresh Open Source Software Archive 
Member "cpuid-20230306/ChangeLog" (6 Mar 2023, 122348 Bytes) of package /linux/misc/cpuid-20230306.src.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the latest
Fossies "Diffs" side-by-side code changes report for "ChangeLog":
20230228_vs_20230306.
1 Tue Mar 6 2023 Todd Allen <todd.allen@etallen.com>
2 * Made new release.
3
4 Sun Mar 5 2023 Todd Allen <todd.allen@etallen.com>
5 * Based on Intel-Linux-Processor-Microcode-Data-Files (ILPMDF*), made
6 the following (synth) changes:
7 * cpuid.c: Updated (0,6),(3,7),8 Bay Trail with stepping name C0.
8 * cpuid.c: Added (0,6),(4,5),1 Haswell-ULT C0/D0 stepping.
9 * cpuid.c: Corrected (0,6),(4,6),1 Crystal Well to C0 stepping.
10 * cpuid.c: Updated (0,6),(4,7),1 Broadwell to include E0 stepping.
11 * cpuid.c: Added (0,6),(5,5),3 Skylake B1 (Xeon Scalable).
12 * cpuid.c: Added (0,6),(5,5),5 Skylake A0 (Xeon Scalable).
13 * cpuid.c: Added (0,6),(5,5),11 Cooper Lake A1 (Xeon Scalable).
14 * cpuid.c: Updated (0,6),(5,14),3 Skylake-H/S/E3, adding N0 & S0
15 steppings.
16 * cpuid.c: Added (0,6),(6,10),5 Ice Lake C0 (Xeon Scalable).
17 * cpuid.c: Added (0,6),(6,12),1 Ice Lake B0.
18 * cpuid.c: Updated (0,6),(8,6),4 Snow Ridge with stepping B0.
19 * cpuid.c: Updated (0,6),(8,6),5 Snow Ridge with stepping B1.
20 * cpuid.c: Added (0,6),(8,6),1 Lakefield B2/B3 stepping.
21 * cpuid.c: Corrected (0,6),(8,12),1 Tiger Lake stepping to B1.
22 * cpuid.c: Added (0,6),(8,12),2 Tiger Lake C0.
23 * cpuid.c: Added (0,6),(8,14),10 Coffee Lake D0.
24 * cpuid.c: Added (0,6),(8,14),13 Whiskey Lake-U V0 stepping.
25 * cpuid.c: Added (0,6),(8,15) Sapphire Rapids numerous steppings.
26 * cpuid.c: Updated (0,6),(9,12) Jasper Lake with stepping A1.
27
28 Thu Mar 2 2023 Todd Allen <todd.allen@etallen.com>
29 * cpuid.c: Differentiate (0,6),(8,10) Lakefield P-cores from Tremont
30 E-cores, much as I previously did for Alder Lake & Raptor Lake.
31 * cpuid.c: In decode_uarch_intel, for known Hybrid chips (Alder Lake,
32 Raptor Lake & Lakefield), only decode the uarch if it's one of the two
33 known hybrid types. However, some (0,6),(9,7) Alder Lake's are
34 non-hybrid (Golden Cove only), so also decode core type == 0x00 there.
35 * cpuid.c: In the Intel Core era, uarch families are identified only by
36 the initial uarch in the family. So the family names in {braces},
37 which also are uarch names, can be confusing. So, change (synth) and
38 (uarch synth) for those families to explain the relationships between
39 the subsequent uarch and the initial uarch, in the form of
40 "shrink of", "optim of", and the unusual "backport of".
41 * cpuid.c: Added (4th Gen) to the (synth) description of (10,15),(1,*)
42 AMD EPYC Genoa.
43 * cpuid.c: Updated (synth) for (10,15),(7,*) AMD Phoenix & Phoenix 2
44 CPUs to claim 4nm process.
45
46 Tue Feb 28 2023 Todd Allen <todd.allen@etallen.com>
47 * Made new release.
48
49 Sun Feb 26 2023 Todd Allen <todd.allen@etallen.com>
50 * cpuid.c: Corrected 7/1/eax fast REP instructions, where I'd left the
51 REP prefix out of the description.
52
53 Wed Feb 22 2023 Todd Allen <todd.allen@etallen.com>
54 * cpuid.c: Added 7/1/eax FRED & LKGS bits, from Intel Flexible Return and
55 Event Deliver (FRED).
56 * cpuid.man: Added Intel Flexible Return and Event Deliver (FRED).
57 * cpuid.c: Clarified 7/1/eax ArchPerfmonExt, which indicates that leaf
58 0x23 is valid.
59
60 Fri Feb 17 2023 Todd Allen <todd.allen@etallen.com>
61 * cpuid.c: Added (uarch synth) decoding for AMD Ryzen (Phoenix E0), based
62 on sample from bakerlab.org, which I missed on Oct 3 2022, when I
63 added the (synth) decoding.
64 * cpuid.c: Added 0x80000001/ebx PkgType decoding for AMD (10,15) Family
65 19h CPUs: (2,1) Vermeer, (5,1) Cezanne/Barcelo, (6,1) Raphael, and
66 (7,0) Phoenix, based on their respective PPPR's.
67
68 Sun Feb 12 2023 Todd Allen <todd.allen@etallen.com>
69 * cpuid.c: Added very early (synth) decoding for Lunar Lake. There is
70 no corresponding (uarch synth) decoding, because no name is yet known
71 for the uarch.
72
73 Sat Feb 11 2023 Todd Allen <todd.allen@etallen.com>
74 * cpuid.c: Added (0,6),(9,10) Alder Lake Core names: i*-12000.
75 * cpuid.c: Differentiate (0,6),(9,7) & (0,6),(9,10) Alder Lake Gracemont
76 E-cores from Golden Cove P-cores.
77 * cpuid.c: Differentiate (0,6),(11,7); (0,6),(11,10) & (0,6),(11,15)
78 Raptor Lake Gracemont E-cores from Raptor Cove P-cores.
79 * cpuid.c: Added (synth) & (uarch synth) decoding for (10,15),(7,8)
80 Phoenix 2, from Coreboot*.
81 * cpuid.c: Renamed print_hypervisor_3_eax_xen to
82 print_hypervisor_3_0_eax_xen.
83 * cpuid.c: Added print_hypervisor_3_0_ebx_xen and decode Xen tsc mode.
84 * cpuid.c: Added (synth) decoding for (10,15),(6,1,1) Raphael B1.
85
86 Fri Jan 20 2023 Todd Allen <todd.allen@etallen.com>
87 * Made new release.
88
89 Fri Jan 20 2023 Todd Allen <todd.allen@etallen.com>
90 * Eliminate reliance on "old" build system. Instead, for the cpuid.i386
91 and cpuid.x86_64, meant to be executable anywhere, including on old
92 hardware & distros, use static builds. They're much bigger, but
93 utterly immune to library changes.
94
95 Wed Jan 18 2023 Todd Allen <todd.allen@etallen.com>
96 * Intel's 13th Generation Core datasheet provides stepping names as
97 well as numbers! So:
98 * cpuid.c: Added synth decoding for (0,6),(11,7) Raptor Lake B0 stepping.
99 * cpuid.c: Added synth decoding for (0,6),(11,15) Raptor Lake C0
100 steppings, and clarified case for unknown stepping.
101 * cpuid.man: Added 743844: 13th Generation Core datasheet.
102 * cpuid.c: Fixed (0,6)(12,15) synth typo: Emearld Rapids.
103
104 Tue Jan 17 2023 Todd Allen <todd.allen@etallen.com>
105 * cpuid.c: Added 6/eax IA32_HW_FEEDBACK_THREAD_CONFIG bit 25.
106 * cpuid.c: Added 7/0/edx SGX-KEYS: SGX attestation services.
107 * cpuid.c: Clarified 7/0/edx IA32_MCU_OPT_CTRL SRBDS mitigation MSR.
108 * cpuid.c: Clarified 7/0/edx IA32_TSX_FORCE_ABORT MSR.
109 * cpuid.c: Added 7/1/edx CET_SSS: shadow stacks w/o page faults.
110 * cpuid.c: Added several 7/2/edx bits.
111 * cpuid.c: In 0xd/0/eax, corrected CET_U & CET_S, which were IA32_XSS.
112 * cpuid.c: In 0xd/0/eax, removed the IA32_XSS bits, which aren't
113 relevant for XCR0.
114 * cpuid.c: For 0xd/1/ecx, enumerate the IA32_XSS bits instead of a
115 hex bitmask.
116 * cpuid.c: For 0xd, added IA32_XSS PASID state (couple places).
117 * cpuid.c: Renamed 0x1a: Native Model ID.
118 * cpuid.c: Added synth & uarch decoding for (0,6),(11,15) Raptor Lake
119 from MSR_CPUID_table*.
120 * cpuid.c: Added synth decoding for (0,6),(9,7),5 Pentium Gold G7400,
121 based on instlatx64 sample.
122 * cpuid.c: Added rudimentary synth decoding for future (0,6),(12,15)
123 Emerald Rapids CPUs.
124 * cpuid.c: Added 7/1/eax LASS: linear address space separation.
125 * cpuid.c: Corrected 0x18/n/edx maximum number of addressible IDs, which
126 should use minus-one notation.
127
128 Tue Jan 17 2023 Todd Allen <todd.allen@etallen.com>
129 * cpuid.c: Certain leaves cannot be displayed correctly in isolation,
130 i.e. without information about other leaves saved in the stash. For
131 example, the display for leaf 3 uses bits saved from leaf 1. If the
132 -l/--leaf option is used to restrict cpuid to reading only a single
133 leaf, such leaves now are displayed as raw hex, rather than with
134 incorrect information. This is handled by passing a NULL stash to
135 print_reg() and below, and by many new checks for a NULL stash.
136 Thanks to Bill Zissimopoulos for the bug report.
137
138 Mon Jan 9 2023 Todd Allen <todd.allen@etallen.com>
139 * cpuid.c: Updated cache associativity strings used in 0x80000006 and
140 0x80000019 leaves to use value ranges, as in AMD docs.
141 * cpuid.c: Fixed mistake in AMD L3 range reservation support: it's in
142 0x80000020/0 register EBX, not ECX.
143 * cpuid.c: Added 0x80000026/0/edx extended APIC ID.
144
145 Tue Dec 13 2022 Todd Allen <todd.allen@etallen.com>
146 * cpuid.c: Added synth & uarch decoding for (10,15),(1,1) Genoa, from
147 AMD 57095 revision guide.
148 * cpuid.man: Added AMD 57095 revision guides, and some older guides that
149 I'd forgotten.
150
151 Thu Dec 1 2022 Todd Allen <todd.allen@etallen.com>
152 * Made new release.
153
154 Wed Nov 30 2022 Todd Allen <todd.allen@etallen.com>
155 * Clarified synth decoding for Intel Xeon D-1700.
156
157 Wed Nov 30 2022 Todd Allen <todd.allen@etallen.com>
158 * Added uarch & synth decoding for AMD 4800S Desktop Kit, based on
159 instlatx64 sample. The generation is known to be Zen 2 (7nm), but
160 the core is unknown. I heard speculation for each of Ariel (rejected
161 PlayStation 5 CPU), or Lockhart/Scarlett (rejected Xbox CPU).
162 * Added uarch decoding for AMD Genoa A1, based on instlatx64 sample
163 from @IanCutress.
164
165 Mon Nov 28 2022 Todd Allen <todd.allen@etallen.com>
166 * Added uarch decoding for (0,6),(12,15) Emerald Rapids, from LX*.
167
168 Mon Nov 28 2022 Todd Allen <todd.allen@etallen.com>
169 * Added synth & uarch decoding for (10,15),(10,1) Bergamo.
170
171 Mon Nov 28 2022 Todd Allen <todd.allen@etallen.com>
172 * Added 0x8000000a/edx bits: ROGPT, VNMI, IBS virtualization.
173 * Added 0x8000001b/eax bit: IBS L3 miss filtering support.
174 * Added 0x8000001f/eax bits: RMPQUERY instruction support,
175 VMPL supervisor shadow stack support, VMGEXIT parameter support,
176 virtual TOM MSR support, IBS virtual support for SEV-ES guests,
177 SMT protection support, SVSM communication page MSR support,
178 VIRT_RMPUPDATE & VIRT_PSMASH MSR support.
179 * Added 0x80000020/0/ecx bit: L3 range reservation support.
180 * Added 0x80000021/eax bits: automatic IBRS,
181 CPUID disable for non-privileged.
182 * Added 0x80000022/eax bit: AMD LBR & PMC freezing.
183 * Added 0x80000022/ebx field: number of LBR stack entries.
184 * Added 0x80000023 leaf: Multi-Key Encrypted Memory Capabilities.
185 * Added 0x80000026 leaf: AMD Extended CPU Topology.
186
187 Fri Nov 11 2022 Mateusz Guzik <mjguzik@gmail.com>
188 * cpuid.c: FreeBSD patch to use lseek64 and cpuset_setaffinity.
189
190 Tue Oct 11 2022 Todd Allen <todd.allen@etallen.com>
191 * cpuid.c: Added 0x80000022/eax AMD LBR V2 flag, from LX*.
192 * cpuid.c: Note that (8,15),(10,0) Mendocino now is documented.
193
194 Mon Oct 3 2022 Todd Allen <todd.allen@etallen.com>
195 * Made new release.
196
197 Mon Oct 3 2022 Todd Allen <todd.allen@etallen.com>
198 * cpuid.c: Added synth decoding for AMD Ryzen (Phoenix E0), based on
199 sample from bakerlab.org.
200 * cpuid.c: Added synth decoding for AMD Ryzen (Storm Peak A1), based on
201 sample from einstein11.aei.uni-hannover.de.
202 * cpuid.c: Added synth & uarch synth decoding for (0,6),(11,5) Intel
203 Meteor Lake, based on MSR_CPUID_table*.
204 * cpuid.c: Added synth & uarch synth decoding for (0,6),(11,6) Intel
205 Grand Ridge (Crestmont), based on MSR_CPUID_table*.
206 * cpuid.c: Added synth & uarch synth decoding for (0,6),(11,14) Intel
207 Granite Rapids, based on MSR_CPUID_table*.
208 * cpuid.c: Confirmed several other existing synth & uarch decodings based
209 on MSR_CPUID_table*, and updated comments (no functional changes).
210 * cpuid.c: Renamed 7/0/eax enh hardware feedback to simply Thread
211 Director. Evidently, Intel just calls it that now too.
212 * cpuid.c: Added 7/1/eax RAO-INT instructions, CMPccXADD instructions,
213 ArchPerfmonExt is valid, WRMSRNS instructions, AMX-FP16, AVX-IFMA,
214 RDMSRLIST & WRMSRLIST.
215 * cpuid.c: Added 7/1/edx AVX-VNNI-INT8, AVX-NE-CONVERT, PREFETCHIT*
216 instructions.
217 * cpuid.c: Added 0x12/0/eax SGX ENCLU EDECCSA flag.
218 * cpuid.c: Added 0x23 Architecture Performance Monitoring Extended leaf
219 decoding.
220 * cpuid.c: Corrected AVX512IFMA description: integer FMA, not just FMA.
221
222 Tue Sep 27 2022 Todd Allen <todd.allen@etallen.com>
223 * Made new release.
224
225 Tue Sep 27 2022 Todd Allen <todd.allen@etallen.com>
226 * cpuid.c: Added synth decoding for (10,15),(6,1) Raphael, based on
227 instlatx64 samples.
228
229 Wed Aug 17 2022 Todd Allen <todd.allen@etallen.com>
230 * cpuid.c: Fixed missing return statement in get_nr_cpu_ids()'s default
231 case, used by Cygwin. Thanks to Brian Inglis for reporting this.
232
233 Tue Aug 16 2022 Umio-Yasuno <coelacanth_dream@proton.me>
234 * cpuid.c: Fixed title for AMD 0x8000001a leaf: Performance Optimization
235 Identifiers.
236
237 Fri Aug 12 2022 Todd Allen <todd.allen@etallen.com>
238 * Made new release.
239
240 Fri Aug 12 2022 Todd Allen <todd.allen@etallen.com>
241 * cpuid.c: Corrected (synth) decoding for (0,6),(8,6) Intel Snow
242 Ridge/Parker Ridge. It had been lumped in with Elkhart Lake, but only
243 because that had been the only known core name for the Tremont uarch.
244 These appear to be different cores. Also added steppings from SSG*.
245
246 Fri Aug 5 2022 Todd Allen <todd.allen@etallen.com>
247 * cpuid.c: Added 8000000a/edx X2AVIC flag, from Linux kernel patches
248 It appears to be undocumented, so far.
249
250 Thu Aug 4 2022 Todd Allen <todd.allen@etallen.com>
251 * cpuid.c: Improved (synth) decoding for (0,6),(9,7),2, adding
252 Added Alder Lake-HX.
253
254 Wed Jul 27 2022 Todd Allen <todd.allen@etallen.com>
255 * cpuid.c: Reverted May 27 2022 split of 7/0/ebx hack to report bit 22
256 as RDPID on AMD architectures. The AMD documentation is inconsistent
257 on the location of this flag. In E.3.6, it claims 7/0/ebx. But in
258 section 3, the RDPID instruction itself claims 7/0/ecx, as does the
259 mention in Table 3-1. This also is consistent with Intel
260 architectures. Thanks to Stefan Kanthak for pointing this out.
261
262 Mon Jul 25 2022 Todd Allen <todd.allen@etallen.com>
263 * cpuid.c: Generalized (0,6),(8,14),9,YP stepping case to include
264 Pentium 4425Y, from instlatx64 sample.
265
266 Thu Jul 14 2022 Todd Allen <todd.allen@etallen.com>
267 * cpuid.c: Updated 7/0/edx comments to reflect original info source
268 for SRBDS mitigation MSR available, previously just marked LX*.
269 * cpuid.c: Updated 7/0/edx comments to reflect original info source
270 for RTM transaction always aborts, previously just marked LX*.
271 * cpuid.c: Added (vuln to branch type confusion synth) synthetic leaf
272 to correct for the one known inaccuracy.
273 * cpuid.man: Added those two original source web pages from Intel:
274 Intel Transactional Synchronization Extensions (Intel TSX) Memory and
275 Performance Monitoring Update for Intel Processors (Article ID
276 000059422), Special Register Buffer Data Sampling.
277
278 Wed Jul 13 2022 Todd Allen <todd.allen@etallen.com>
279 * cpuid.c: Added 0x80000008/ebx not vulnerable to branch type confusion
280 flag from "Technical Guidance For Mitigating Branch Type Confusion
281 (White Paper)". Also added a synthetic flag to correct the special
282 case for Family 0x19, where the raw flag is documented to be wrong.
283 * cpuid.c: Added 7/2/edx indirect branch prediction related flags from
284 Intel's "Branch History Injection and Intra-mode Branch Target
285 Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598".
286 * cpuid.c: Added (uarch synth) decoding for (0,6),(6,14) Cougar
287 Mountain, mentioned as Airmont by Intel's "Retpoline: A Branch Target
288 Injection Mitigation".
289 * cpuid.man: Added "Branch History Injection and Intra-mode Branch Target
290 Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598" and
291 "Retpoline: A Branch Target Injection Mitigation".
292
293 Tue Jul 12 2022 Todd Allen <todd.allen@etallen.com>
294 * cpuid.c: Clarified (synth) for (0,6),(8,13) Tiger Lake-H from SSG*.
295
296 Tue Jul 12 2022 Todd Allen <todd.allen@etallen.com>
297 * cpuid.c: Added support for hypervisor+3/ecx (Microsoft) flags.
298 * cpuid.c: Added support for hypervisor+0xa/eax (Microsoft) VMCS
299 GuestIa32DebugCtl support flag.
300 * cpuid.c: Added support for hypervisor+0xa/ebx (Microsoft) VMCS
301 HvFlushGuestPhysicalAddress* flag.
302
303 Wed Jun 29 2022 Todd Allen <todd.allen@etallen.com>
304 * cpuid.c: Added (synth) for (0,6),(11,10),3 Raptor Lake-P Q0, from
305 Coreboot*.
306
307 Sat Jun 25 2022 Todd Allen <todd.allen@etallen.com>
308 * cpuid.c: Lionel Debroux's patch used MAX_CPUS all the time. But it
309 really was meaningful only for the USE_KERNEL_SCHED_SETAFFINITY case
310 (although, by happenstance, it may have been correct for all three
311 cases). Replace this with an nr_cpu_ids global, determined by
312 get_nr_cpu_ids(). The simplest version just returns
313 sysconf(_SC_NPROCESSORS_CONF), although that could be problematic on
314 systems with non-contiguous CPU numbers.
315 * cpuid.c: For USE_KERNEL_SCHED_SETAFFINITY, improve this, and also
316 support systems with > 1024 CPUs, by estimating nr_cpu_ids using a
317 power-of-2 walk through successively larger cpu_set_t sizes until
318 sched_getaffinity succeeds.
319 * cpuid.c: For systems using cpu_set_t (only Cygwin?), cap the
320 nr_cpu_ids to CPU_SETSIZE.
321 * cpuid.c: The _SC_NPROCESSORS_CONF check in real_setup() is removed
322 because it's redundant now.
323
324 Wed Jun 22 2022 Lionel Debroux <lionel_debroux@yahoo.fr>
325 * cpuid.c: In do_real() and do_real_one(), avoid breaking out of loop
326 because of downed CPUs.
327
328 Mon Jun 20 2022 Todd Allen <todd.allen@etallen.com>
329 * Made new release.
330
331 Sat Jun 18 2022 Todd Allen <todd.allen@etallen.com>
332 * cpuid.c: Added (synth) for (0,6),(9,7),1 Alder Lake-S B0 from
333 Coreboot*.
334 * cpuid.c: Added (synth) stepping name for (0,6),(9,7),4 Alder Lake-U G0
335 from Coreboot* (although this dubiously mixes partly contradictory
336 info from two sources).
337 * cpuid.c: Added (synth) stepping name for (0,6),(9,7),5 Alder Lake-S H0
338 from Coreboot*.
339 * cpuid.c: Added hypervisor+4/eax (Xen) upcalls with physical IRQ
340 vectors from Xen*.
341 * cpuid.c: Added hypervisor+{0x80,0x81,0x82} (Microsoft) synthetic
342 debugging leaves.
343 * cpuid.c: Eliminated print_header(), and distributed those headers
344 throughout print_reg(), frequently using the try (subleaf) number to
345 ensure they are printed only once. Many headers already were like
346 this, and it makes them more consistent.
347
348 Sun Jun 12 2022 Todd Allen <todd.allen@etallen.com>
349 * cpuid.c: Changed (synth) for Alder Lake-S to remove K/KF suffixes,
350 because other suffixes (or no suffix) are available too.
351 * cpuid.c: Added (synth) for (0,6),(9,7),5 Alder Lake-S.
352 * cpuid.c: Added (synth) for (0,6),(9,7),3 Alder Lake-P/H.
353 * cpuid.c: Added (synth) for (0,6),(9,7),4 Alder Lake-U.
354
355 Sat Jun 11 2022 Todd Allen <todd.allen@etallen.com>
356 * cpuid.c: Added 0xf/1/eax QoS monitoring counter size, both in raw
357 form (-24 notation) and as a synthetic leaf the determines the
358 value from the raw form and family/model information.
359 * cpuid.c: Added stash information to print_header() to avoid printing
360 Xen-only headers for hypervisor+3 leaves of other hypervisors.
361 * cpuid.c: Rewrote the handling of subleaves (tries) for legacy raw
362 input files. Originally, I thought I only needed this support for
363 those leaves which existed during that legacy period. But the
364 testbeds lean on that support for samples from instlatx64. So now
365 it's more general.
366 * cpuid.c: For leaf 0x80000020, rewrote the rules for subleaf processing
367 based on the description in AMD64 Technology Platform Quality of
368 Service Extensions (pub 56375 1.03): walk the bits in the mask.
369 * cpuid.c: Added 0x80000020/0/ebx bits 2 & 3, and renamed bit 1.
370 * cpuid.c: Added 0x80000020/1 subleaf header.
371 * cpuid.c: Added 0x80000020/2 subleaf.
372 * cpuid.c: Added 0x80000020/3 subleaf.
373 * cpuid.man: Added 56375: AMD64 Technology Platform Quality of Service
374 Extensions
375
376 Fri May 27 2022 Todd Allen <todd.allen@etallen.com>
377 * cpuid.c: Added 0x8000001f/eax virtual TSC_AUX supported, from Linux
378 kernel.
379 * cpuid.c: Split 7/0/ebx decoding into Intel-specific & AMD-specific
380 versions (using ugly macro to avoid code duplication), differing by
381 bit 22: PCOMMIT (intel) vs. RDPID/TSC_AUX (amd).
382
383 Wed May 25 2022 Todd Allen <todd.allen@etallen.com>
384 * cpuid.c: Added 0x80000022/eax AMD perfmon V2, from Linux kernel.
385
386 Tue May 24 2022 Todd Allen <todd.allen@etallen.com>
387 * cpuid.c: Added 0x21 TDX guest leaf, as ASCII text
388 (e.g. "IntelTDX ").
389
390 Sat May 21 2022 Todd Allen <todd.allen@etallen.com>
391 * cpuid.c: Changed (synth) for AMD (10,15),(5,*) Cezanne to also mention
392 Barcelo, because instlatx64 samples show that they seem to be
393 indistinguishable from cpuid information.
394
395 Tue May 17 2022 Todd Allen <todd.allen@etallen.com>
396 * cpuid.c: Added synth decoding for stepping (0,6),(11,10),2
397 Raptor Lake-P J0 from Coreboot*.
398
399 Tue May 3 2022 Todd Allen <todd.allen@etallen.com>
400 * cpuid.man: Added 344425, "Architecture Specification: Intel Trust
401 Domain Extensions (Intel TDX) Module".
402 * cpuid.c: Removed 7/0/ecx bus lock detection LX*, Qemu* comment,
403 because it now is documented in the above.
404 * cpuid.man: Added 343754, "Intel Trust Domain CPU Architectural
405 Extensions".
406 * cpuid.c: Added 0x12/0/eax bit 7: EVERIFYREPORT2 support, from the
407 above.
408
409 Tue May 3 2022 Stefan Kanthak <stefan.kanthak@nexgo.de>
410 * cpuid.c: Corrected spelling of 7/0/ecx "RDPID: read processor ID
411 supported".
412
413 Mon May 2 2022 Todd Allen <todd.allen@etallen.com>
414 * cpuid.c: Clarified (synth) decoding for (10,15),(11,14) Alder Lake-N,
415 based on LX*. Also added A0 stepping.
416 * cpuid.c: Added defined() checks around uses of __GNUC__,
417 __GNUC_MINOR__, and __GNUC_PATCHLEVEL__, as suggested by Stefan
418 Kanthak.
419 * Makefile: Added -Wundef to compilation options to check the above,
420 although they always are defined with gcc.
421 * cpuid.c: To simplify the new #if's for __builtin_clzl, added new
422 USE_BUILTIN_CLZL macro.
423
424 Sat Apr 30 2022 Todd Allen <todd.allen@etallen.com>
425 * cpuid.c: Added (synth) decoding for (10,15),(0,1),2 Milan B2 stepping.
426
427 Tue Apr 5 2022 Todd Allen <todd.allen@etallen.com>
428 * cpuid.c: Changed (0,6),(9,10) Alder Lake synth decoding stepping names,
429 based on Coreboot*, evidently from Intel doc 626774. I cannot find
430 that document. Perhaps it is under NDA.
431 * cpuid.c: Added (0,6),(1,9) ZhangJiang synth & uarch decoding from
432 Google_cpu_features*.
433 * cpuid.c: Added (0,7),(1,11) WuDaoKou synth & uarch decoding from
434 Google_cpu_features*. Also corrected (0,7),(0,11) uarch decoding.
435 * cpuid.c: Added (0,7),(3,11) LuJiaZui uarch decoding from
436 Google_cpu_features*. Also simplified its synth decoding.
437 * cpuid.c: Added (0,7),(5,11) YongFeng synth & uarch decoding from
438 Google_cpu_features*. Still somewhat speculative.
439
440 Fri Mar 25 2022 Todd Allen <todd.allen@etallen.com>
441 * cpuid.c: Added hypervisor+4/eax (Microsoft) bits 15, 17, 18.
442 * cpuid.c: Added hypervisor+4/ecx (Microsoft) leaf.
443 * cpuid.c: Added many hypervisor+6/eax (Microsoft) fields.
444 * cpuid.c: Added hypervisor+0xa/eax (Microsoft) bit 22.
445 * cpuid.c: Added hypervisor+3/ebx (Microsoft) Isolation flag, from Linux
446 kernel (arch/x86/include/asm/hyperv-tlfs.h).
447 * cpuid.c: Added hypervisor+0xc/{eax,ebx} (Microsoft) leaves, from Linux
448 kernel (arch/x86/include/asm/hyperv-tlfs.h).
449
450 Fri Mar 18 2022 Todd Allen <todd.allen@etallen.com>
451 * cpuid.c: Corrected (synth) for (0,6),(9,10) Alder Lake to report Core
452 where appropriate, instead of Atom always. In fact, I've seen zero
453 instances of Atoms with this core, so perhaps this was an early
454 misunderstanding. The (0,6),(9,7) Alder Lake-S core was added at the
455 same time, also as an Atom, but was corrected much earlier. So I've
456 made the same correction here.
457
458 Sat Mar 12 2022 Todd Allen <todd.allen@etallen.com>
459 * cpuid.c: Added (synth) decoding for (8,15),(9,0),2 Van Gogh A2 from
460 instlatx64 sample.
461
462 Thu Mar 10 2022 Todd Allen <todd.allen@etallen.com>
463 * cpuid.c: Added (synth) decoding for (0,6),(10,10),{0-1} A0 steppings,
464 based on info from Coreboot*.
465
466 Thu Feb 24 2022 Todd Allen <todd.allen@etallen.com>
467 * Made new release.
468
469 Wed Feb 23 2022 Todd Allen <todd.allen@etallen.com>
470 * cpuid.c: Added (synth) and (uarch synth) decoding for AMD Rembrandt E1.
471
472 Sat Feb 19 2022 Todd Allen <todd.allen@etallen.com>
473 * cpuid.c: Added hypervisor+4/eax (Xen) expanded destination id bit.
474
475 Mon Jan 17 2022 Todd Allen <todd.allen@etallen.com>
476 * cpuid.c: Removed bogus 7/1/eax bit 24 "AMX tile support". The only
477 claim for that was an inaccurate comment in the linux kernel, added
478 2-Nov-2021, but the actual bit is in 7/0/edx, which already was
479 present in cpuid.
480
481 Sun Jan 9 2022 Todd Allen <todd.allen@etallen.com>
482 * cpuid.c: Renamed 6/eax bit to 23 to mention Thread Director.
483 * cpuid.c: Widened 6/ecx number of enh hardware feedback classes from
484 bits 8-11 to bits 8-15.
485 * cpuid.c: Renamed 7/1/eax bit to 10 to include "fast".
486 * cpuid.c: Added 7/1/ebx decoding.
487 * cpuid.c: Added 0x14/0/ebx decoding for support for IA32_RTIT_CTL
488 EventEn & DisTNT bits.
489 * cpuid.c: Added synth decoding for (0,6),(11,15) Alder Lake, based on
490 MSR_CPUID_table*.
491 * cpuid.c: Confirmed synth decoding for (0,6),(10,8) Rocket Lake.
492
493 Tue Jan 4 2022 Todd Allen <todd.allen@etallen.com>
494 * cpuid.c: Added (synth) steppings based on instlatx64 samples:
495 1,(0,5),(0,3),2 P24T C0, (0,6),(0,2),2 K75/Pluto/Orion A2,
496 (0,6),(4,6),1 Crystal Well C1, (0,6),(7,14),5 Ice Lake-U/Y D1,
497 (0,6),(9,7),2 Alder Lake-S C0, (0,6),(10,7),1 Rocket Lake B0.
498 * cpuid.c: Corrected missing Core name for (0,6),(9,7) Alder Lake-S A0
499 stepping.
500
501 Mon Dec 13 2021 Todd Allen <todd.allen@etallen.com>
502 * cpuid.c: In 0x18 leaves, line up values better.
503
504 Fri Dec 10 2021 Todd Allen <todd.allen@etallen.com>
505 * Made new release.
506
507 Fri Dec 10 2021 Todd Allen <todd.allen@etallen.com>
508 * cpuid.c: Reorganized loop over 0x12 subleaves in do_real(). The old
509 code assumed validity was at least partially determined by a bitmask
510 in subleaf 0 (like for leaf 0x10), but that was wrong. Thanks to
511 Scott Raynor for pointing this out.
512 * cpuid.c: Added code for 0x12/(n>=2) subleaves to show invalid cases as
513 such, instead of resorting to a raw dump.
514 * cpuid.c: Fixed missing loop over 0x1b subleaves in do_real(). This
515 might become necessary if more target identifiers are added.
516 * cpuid.c: Added print_1b_n_target() to decode the MKTME target
517 identifier.
518 * cpuid.c: Modified leaf 4 subleaf loop to include the terminating
519 "no more caches" subleaf. Modified print_reg() to abbreviate
520 "no more caches" subleaves.
521 * cpuid.c: Cleaned up loops for leaves 7, 0x14, 0x17, 0x18, 0x1d, 0x20
522 subleaves: max_tries (from subleaf 0) is available before the loop
523 starts.
524 * cpuid.c: Modified leaf 0xb subleaf loop to exit for the right reason,
525 level type == 0. Also, it includes the terminating "invalid" subleaf.
526 The similiar 0x1f leaf already did this.
527
528 Mon Nov 29 2021 Todd Allen <todd.allen@etallen.com>
529 * Made new release.
530
531 Fri Nov 26 2021 Todd Allen <todd.allen@etallen.com>
532 * From AMD Programmer's Manual, Vol 3, Rev 3.33, Appendix E:
533 * cpuid.c: Added 0x80000008/ebx CPU prefers: IBRS always on.
534 * cpuid.c: Renamed 0x80000008/ebx CPU prefers: STIBP always on.
535 * cpuid.c: Renamed 0x80000008/ebx INVLPGB supports TLB flush guest
536 nested.
537 * cpuid.c: Added 0x8000001f/eax Secure TSC supported.
538 * cpuid.c: Added 0x8000001f/eax VMSA register protection.
539 * cpuid.c: Added 0x80000021/eax upper address ignore support.
540 * cpuid.c: Added 0x80000021/eax SMM_CTL MSR not supported
541 * cpuid.c: Added 0x80000021/ebx.
542 * cpuid.c: Added 0x80000022/ebx.
543
544 Mon Nov 22 2021 Todd Allen <todd.allen@etallen.com>
545 * cpuid.c: Correct (uarch synth) phys for Cascade Lake to 14nm++.
546 * cpuid.c: Correct (uarch synth) phys for Cooper Lake to 14nm++.
547
548 Sun Nov 21 2021 Todd Allen <todd.allen@etallen.com>
549 * Made new release.
550
551 Sun Nov 21 2021 Todd Allen <todd.allen@etallen.com>
552 * cpuid.c: Removed __LARGE64_FILES from __CYGWIN__, per Brian Inglis'
553 request.
554 * cpuid.c: Renamed macros with names starting with underscores, which
555 are resered names in C: __THING -> MaskTHING, _THING -> ShftTHING.
556 Brian Inglis says this was an actual practical problem in Cygwin.
557 This change makes the code less dense, but a bit easier to understand.
558
559 Sat Nov 20 2021 Todd Allen <todd.allen@etallen.com>
560 * cpuid.c: Distinguish (synth) decoding: AMD (8,15),(2,0) Dali CPUs:
561 Ryzen vs. other.
562 * cpuid.c: Added to (synth) decoding: AMD Ryzen 1000/2000/3000/4000/5000
563 series numbers.
564 * cpuid.c: Added to (synth) decoding: AMD Epyc Gen numbers.
565 * cpuid.c: Distinguish (synth) decodings for Threadripper CPUs. For
566 Zen & Zen+, only the brand distinguishes; for Zen 2 (and rumored for
567 Zen 3), there are distinct models.
568 * cpuid.c: Distinguish (synth) decoding between Great Horned Owl & Banded
569 Kestrel.
570 * cpuid.c: Distinguish (synth) decoding for Grey Hawk from Renoir.
571
572 Thu Nov 18 2021 Todd Allen <todd.allen@etallen.com>
573 * cpuid.c: Added (synth) & (uarch synth) decoding for (0,6),(11,14)
574 Golden Cove (Alder Lake) from Coreboot*.
575 * cpuid.c: Added (synth) & (uarch synth) decoding for (0,6),(6,7)
576 Palm Cove (Cannon Lake) from DPTF*.
577 * cpuid.c: Added (synth) & (uarch synth) decoding for (0,6),(10,11)
578 Redwood Cove (Meteor Lake-N) from DPTF*.
579 * cpuid.c: Added (synth) & (uarch synth) decoding for (0,6),(11,10)
580 Raptor Cove (Raptor Lake-P) from DPTF*.
581
582 Mon Nov 15 2021 Todd Allen <todd.allen@etallen.com>
583 * cpuid.c: Added (synth) decoding for (0,6),(11,7) Raptor Lake, from LX*.
584 * cpuid.c: Updated (uarch synth) phys strings for Intel 14nm and 10nm
585 process nodes using 14nm+, 14nm++, 14nm+++, 10nm+, 10nm++.
586
587 Sun Nov 14 2021 Todd Allen <todd.allen@etallen.com>
588 * Made new release.
589
590 Mon Nov 8 2021 Todd Allen <todd.allen@etallen.com>
591 * cpuid.c: Updated (uarch synth) for Bergamo to say "Zen 4c".
592
593 Fri Nov 5 2021 Todd Allen <todd.allen@etallen.com>
594 * cpuid.c: Added (synth) decoding for Pentium Gold G5420 (0,6),(9,14),10,
595 based on a sample from Andrey Rahmatullin. Previously, I knew only of
596 variants with stepping 11.
597 * cpuid.c: Renamed Golden Cove & derivatives phys (physical properties)
598 to use new Intel 7 branding. Likewise for the preliminary Redwood
599 Cove & Granite Rapids and Intel 4.
600
601 Thu Nov 4 2021 Todd Allen <todd.allen@etallen.com>
602 * cpuid.c: Added (synth) decoding for AMD Storm Peak (preliminary).
603 * cpuid.c: Added (synth) decoding for Intel (0,6),(10,8) (preliminary).
604 * cpuid.c: Added (synth) decoding for Intel (0,6),(10,10) (preliminary).
605 * cpuid.c: Added (synth) decoding for Intel (0,6),(10,12) (preliminary).
606 * cpuid.c: Added (synth) decoding for Intel (0,6),(10,13) (preliminary).
607 * cpuid.c: Added (synth) decoding for Intel (0,6),(9,15) (preliminary).
608 * cpuid.c: Added Cougar Mountain name to Intel Puma 7, from MRG
609 2018-Mar-6.
610
611 Wed Nov 3 2021 Todd Allen <todd.allen@etallen.com>
612 * cpuid.c: Added (synth) decoding for AMD Lucienne A1 stepping.
613 * cpuid.c: Added (synth) decoding for AMD Van Gogh (preliminary).
614 * cpuid.c: Added (synth) decoding for AMD Mero (preliminary).
615 * cpuid.c: Added (synth) decoding for AMD Mendocino (preliminary).
616 * cpuid.c: Added (synth) decoding for AMD Chagall (preliminary).
617 * cpuid.c: Added (synth) decoding for AMD Badami (preliminary).
618 * cpuid.c: Added (synth) decoding for AMD Rembrandt (preliminary).
619 * cpuid.c: Added (synth) decoding for AMD Genoa (preliminary).
620 * cpuid.c: Added (synth) decoding for AMD Raphael (preliminary).
621 * cpuid.c: Added (synth) decoding for AMD Phoenix (preliminary).
622 * cpuid.c: Added (synth) decoding for AMD Bergamo (preliminary).
623
624 Wed Nov 3 2021 Todd Allen <todd.allen@etallen.com>
625 * cpuid.c: Added hypervisor+3/edx (Microsoft) new fields.
626 * cpuid.c: Added hypervisor+7/eax (Microsoft) new field.
627 * cpuid.c: Added hypervisor+7/ecx (Microsoft) new field.
628 * cpuid.c: Added hypervisor+0xa/eax (Microsoft) new field.
629
630 Wed Nov 3 2021 Todd Allen <todd.allen@etallen.com>
631 * cpuid.c: Updated (synth) decoding for Alder Lake-S to include Core
632 variants.
633 * cpuid.c: Added (synth) and (uarch) decoding for VIA/Centaur CHA (CNS).
634
635 Tue Nov 2 2021 Todd Allen <todd.allen@etallen.com>
636 * cpuid.c: Added 7/1/eax AMX tile support, from Linux kernel.
637
638 Sun Oct 31 2021 Todd Allen <todd.allen@etallen.com>
639 * Made new release.
640
641 Sun Oct 31 2021 Todd Allen <todd.allen@etallen.com>
642 * cpuid.c: Support hypervisors which can move their range of leaves
643 to other base addresses, to support hypervisors under other
644 hypervisors: IS_HYPERVISOR_LEAF(), print_hypervisor_*().
645 * cpuid.c: Separated out get_hypervisor(). This ended up being
646 unnecessary, but I prefer it anyway.
647 * cpuid.c: Added print_esc_substring() to print hypervisor_id values
648 that contain non-graphic characters.
649
650 Fri Oct 29 2021 Todd Allen <todd.allen@etallen.com>
651 * cpuid.c: Improved (synth) decoding for Intel Xeon (3rd Gen) D2/M1
652 steppings.
653
654 Wed Oct 27 2021 Todd Allen <todd.allen@etallen.com>
655 * cpuid.c: Added 0x40000001/eax support for ACRN hypervisor. Untested.
656 * cpuid.c: Added better decoding of 0x12/1 SECS.ATTRIBUTES fields.
657
658 Tue Oct 26 2021 Todd Allen <todd.allen@etallen.com>
659 * cpuid.c: Added 5,3 model for Cyrix M1 6x86, based on Cyrix 6x86
660 Processor, Instruction Set document (M1-6).
661 * cpuid.c: Corrected wrong register passed to
662 print_40000009_edx_microsoft().
663
664 Mon Oct 25 2021 Todd Allen <todd.allen@etallen.com>
665 * cpuid.c: Adapted patch from Brian Inglis for easier Cygwin cygport,
666 but made an effort to reduce duplicate header file references, and
667 use of <sys/cpuset.h> for the right reasons (i.e. a more general
668 change).
669 * cpuid.c: For 12/n/ebx & 12/n/edx (n >= 2), mask the high 12 bits.
670 * cpuid.c: Added 0x40000001/eax(KVM) map gpa range hypercall &
671 MSR_KVM_MIGRATION_CONTROL.
672
673 Sun Oct 24 2021 Todd Allen <todd.allen@etallen.com>
674 * cpuid.c: Add (synth) decoding for additional Alder Lake steppings.
675 * cpuid.c: Generalize (synth) decoding for Elkhart Lake B0.
676 * cpuid.c: Added 0x8000000a/edx guest SVME addr check.
677 * cpuid.c: Added 7/0/ecx bus lock detection.
678 * cpuid.c: Added 7/0/edx RTM transaction always aborts, TSX_FORCE_ABORT.
679 * cpuid.c: Added 0x40000001/eax (KVM) extended destination ID.
680 * cpuid.c: Added (synth) decoding for Vortex86EX2 & Vortex86DX2. Info
681 on these is almost nonexistent, so it's possible that these rules are
682 too specific or too vague.
683 * cpuid.c: Improved (synth) decoding for Tiger Lake: Pentium & Celeron.
684 * cpuid.c: Improved (synth) decoding for Elkhart Lake: Pentium & Celeron.
685 * cpuid.c: Improved (synth) decoding for Jasper Lake: Pentium & Celeron.
686 * cpuid.c: Improved (synth) decoding for (0,6)(10,5) Comet Lake:
687 Pentium, Celeron & Xeon.
688 * cpuid.c: Improved (synth) decoding for (0,6),(6,10) Ice Lake:
689 Xeon Scalable.
690 * cpuid.c: Improved (synth) decoding for AMD (8,15),(1,1) Raven Ridge:
691 Athlon Pro 200.
692 * cpuid.c: Improved (synth) decoding for AMD (8,15),(1,8) Picasso:
693 Athlon Pro 300.
694 * cpuid.c: Added (synth) decoding for AMD 4700S Desktop Kit.
695 * cpuid.c: Added (synth) decoding for AMD (8,15),(4,7) Lucienne.
696
697 Sun Oct 24 2021 Todd Allen <todd.allen@etallen.com>
698 * cpuid.c: Added 0x80000008/ecx tscSize.
699 * cpuid.c: Added 0x8000001c/{eax,edx} continuous mode sampling.
700 * cpuid.c: Added 0x8000001c/{eax,edx] tsc in event record.
701 * cpuid.c: Added (synth) decoding for AMD Milan B1.
702 * cpuid.c: Added (synth) decoding for AMD Vermeer.
703 * cpuid.c: Added (synth) decoding for AMD Cezanne.
704
705 Sat Oct 23 2021 Todd Allen <todd.allen@etallen.com>
706 * cpuid.c: Renamed 7/0/ecx 5-level paging to include LA57 & 57-bit addrs.
707 * cpuid.c: Improved 0xa/ebx presentation, and automatically mask bits
708 marked as invalid by 0xa/eax vector length.
709 * cpuid.c: Added 0x12/n/ecx new section property encoding.
710 * cpuid.c: Renamed Rocket Lake uarch to Cypress Cove.
711 * cpuid.c: Improved (synth) decoding for Tiger Lake.
712 * cpuid.c: Improved (synth) decoding for Rocket Lake.
713
714 Fri Jul 16 2021 Ani Sinha <ani@anisinha.ca>
715 * cpuid.c: Add support for 0x40000003/eax reenlightenment control MSR
716 & 0x40000003/eax TscInvariant control MSR [on Microsoft Hyper-V].
717
718 Fri Jul 16 2021 Smita Koralahalli Channabasappa <Smita.KoralahalliChannabasappa@amd.com>
719 * cpuid.c: restoring the deleted "AMD (unknown model)" entry.
720
721 Mon Jul 12 2021 Smita Koralahalli Channabasappa <Smita.KoralahalliChannabasappa@amd.com>
722 * cpuid.c: updates the existing leaf and subleaf in the CPUID with
723 features related to INVLPGB, CPPC, PSFD, SEV [affects 0x80000008/edx,
724 0x80000008/edx, and 0x8000001f/eax].
725 * cpuid.c: defines new leaf 80000021/eax.
726 * cpuid.c: replaces the naming "Unknown Model" -> "AMD EPYC Milan" for
727 Family 19h and Model 01h [affects (synth) decoding].
728
729 Tue Feb 2 2021 Jonathan Teh <jonteh@ntlworld.com>
730 * From http://datasheets.chipdb.org/Cyrix/112ap.pdf (page 7, table 1):
731 * cpuid.c: Cyrix family 4 model 4 should be MediaGX or GXi
732 * cpuid.c: GXm is family 5, model 4
733 * cpuid.c: Cyrix MediaGX is derived from the 5x86 and unrelated to the
734 WinChip C6. Based on Wikipedia, the MediaGXm was renamed the Geode GXm
735 after it was sold to National Semi but the CPUs appear to have
736 continued to be sold under the Cyrix vendor up to and including the
737 Geode GX1. Hence, I've simply duplicated the names from NSC model 4
738 into Cyrix.
739 * cpuid.c: Model 9 for the WinChip 3 is moved to the Centaur section
740 [decode_synth_via()], from the datasheet page 3-11:
741 http://datasheets.chipdb.org/IDT/x86/WinChip3/winchip_3_datasheet.pdf
742 * cpuid.c: The Cyrix CPU detection guide [112ap] also offers some
743 possible codenames from page 20, table 17 Cx486SLC/DLC/SRx/DRx (M0.5)
744 up to table 26 for the GXm.
745
746 Mon Jan 4 2021 Todd Allen <todd.allen@etallen.com>
747 * cpuid.c: Corrected decode_amd_model()'s (0,15),(4,0) decodings for bti
748 values 0x29, 0x2a, and 0x2b.
749 * cpuid.c: Corrected wrong register passed to print_40000001_edx_kvm().
750
751 Mon Nov 2 2020 Brian Inglis <Brian.Inglis@SystematicSw.ab.ca>
752 * Makefile: Set BUILDROOT=$(DESTDIR) for easier Cygwin cygport support.
753
754 Mon Oct 12 2020 Todd Allen <todd.allen@etallen.com>
755 * cpuid.c: Added (synth) decoding for (6,15),(3,0) AMD R-Series Bald
756 Eagle based on instlatx64 sample.
757 * cpuid.c: Added rudimentary synth & uarch decoding for Montage Jintide
758 Gen1, a CPU based on Intel Skylake (0,6),(5,5), and detectable by brand
759 string.
760 * cpuid.c: Fixed append_uarch() to pass stash, which improves uarch
761 [suffix] for Montage, Zhaoxin, and ZhangJiang CPUs.
762
763 Tue Oct 6 2020 Todd Allen <todd.allen@etallen.com>
764 * Made new release.
765
766 Tue Oct 6 2020 Todd Allen <todd.allen@etallen.com>
767 * cpuid.c: Added 6/eax enhanced hardware feedback interface.
768 * cpuid.c: Added 6/ecx number of enh hardware feedback classes.
769 * cpuid.c: Added 7/0/ecx KL: key locker.
770 * cpuid.c: Added 7/0/edx UINTR: user interrupts.
771 * cpuid.c: Added 7/0/edx AVX512_FP16: fp16 support.
772 * cpuid.c: Added 7/1/eax AVX-VNNI: AVX VNNI neural network instrs.
773 * cpuid.c: Added 7/1/eax zero-length MOVSB.
774 * cpuid.c: Added 7/1/eax fast short STOSB.
775 * cpuid.c: Added 7/1/eax fast short CMPSB, SCASB.
776 * cpuid.c: Added 7/1/eax HRESET: history reset support.
777 * cpuid.c: Added 0xa/ecx fixed counter support enumeration.
778 * cpuid.c: Added 0xd/0/eax IA32_XSS UINTR state.
779 * cpuid.c: Added 0xd/n UINTR feature.
780 * cpuid.c: Added 0x19 key locker features.
781 * cpuid.c: Added 0x20 HRESET features.
782
783 Mon Oct 5 2020 Todd Allen <todd.allen@etallen.com>
784 * cpuid.c: Added (7,5),(2,6) AMD Cato (synth) decoding based on
785 instlatx64 example (possibly an engr sample).
786
787 Sun Oct 4 2020 Todd Allen <todd.allen@etallen.com>
788 * cpuid.c: Corrected 6/edx size field to use minus-one notation.
789 * cpuid.c: Added 7/0/edx AMX flags.
790 * cpuid.c: Added 0xd XTILECFG & XTILEDATA features.
791 * cpuid.c: Added 0xd/1/eax XFD: extended feature disable supported flag.
792 * cpuid.c: Added 0xd/n/ecx XFD: faulting supported flag.
793 * cpuid.c: Added 0x18/0/edx: load-only TLB & store-only TLB encodings.
794 * cpuid.c: Added 0x1d leaf (Tile info) decoding.
795 * cpuid.c: Added 0x1e leaf (TMUL) decoding.
796 * cpuid.c: Added 0x1c leaf (architectural LBR) decoding.
797 * cpuid.c: Added 0xd LBR features.
798
799 Sun Oct 4 2020 Todd Allen <todd.allen@etallen.com>
800 * cpuid.c: Added (synth) steppings for Comet Lake (0,6),(10,6) CPUs.
801 For the first time in a long time, Intel actually provided this in
802 the revision guide (615213)!
803 * cpuid.c: Corrected (synth) decoding for AMD (8,15),(2,0) Dali CPUs.
804 * cpuid.c: Added (synth) decoding for AMD Dali A1 stepping.
805 * cpuid.c: Added (synth) decoding for AMD Picasso A1 stepping.
806 * cpuid.c: Added (synth) decoding for AMD Renoir A1 stepping.
807
808 Sat Oct 3 2020 Todd Allen <todd.allen@etallen.com>
809 * cpuid.c: Added 7/0/ecx PKS flag.
810 * cpuid.c: Added 7/0/edx SRBDS flag, from Linux kernel.
811 * cpuid.c: Added 7/0/edx LBR flag.
812 * cpuid.c: Added 0xd/0/eax IA322_XSS HWP state flag.
813 * cpuid.c: Added synth decoding for Rocket Lake.
814 * cpuid.c: Added synth decoding for Elkhart Lake B0.
815 * cpuid.c: Added synth decoding for Alder Lake [Golden Cove].
816 * cpuid.c: Clarified synth decoding for (0,6),(8,10) Lakefield.
817 * cpuid.c: Added KVM interrupt-based page-ready APF event flag.
818
819 Sat Aug 8 2020 Todd Allen <todd.allen@etallen.com>
820 * cpuid.c: Corrected 0x20000001/edx header.
821 * cpuid.c: Detect bogus 0x20000000 leaf values and cap the maximum
822 valid register for the 0x2xxxxxxx range to avoid absurdly long dumps
823 on old CPUs.
824
825 Mon Aug 3 2020 Todd Allen <todd.allen@etallen.com>
826 * cpuid.c: Added bzero before cpuid instruction, in case the cpuid
827 instruction quietly fails. This mostly is paranoia, but I don't see
828 how this ever could cause harm.
829
830 Mon Jun 8 2020 Todd Allen <todd.allen@etallen.com>
831 * cpuid.c: Added Tiger Lake-U B0 stepping, from coreboot.
832 * cpuid.c: Added AMD (8,15),(2,0) Picasso model synth & uarch decoding.
833
834 Sun May 24 2020 Todd Allen <todd.allen@etallen.com>
835 * cpuid.c: Added Zhaoxin KX-6000 decoding that still claims the vendor
836 CentaurHauls. Later Zhaoxin CPUs were supposed to use their own
837 vendor, but instlat64x showed an example that still used the old one.
838
839 Sat May 16 2020 Todd Allen <todd.allen@etallen.com>
840 * cpuid.c: Added better (synth) decoding for Intel Comet Lake-H/S
841 Core i*-10000 CPUs, based on instlatx64 example and listings in
842 ark.intel.com.
843
844 Tue Apr 28 2020 Todd Allen <todd.allen@etallen.com>
845 * cpuid.c: Added 0x8000000a/edx INVLPGB/TLBSYNC hypervisor intercept
846 enable flag.
847
848 Mon Apr 27 2020 Todd Allen <todd.allen@etallen.com>
849 * Made new release.
850
851 Wed Apr 22 2020 Todd Allen <todd.allen@etallen.com>
852 * cpuid.c: Added synth decoding for AMD Steppe Eagle/Crowned Eagle
853 (Puma 2014 G-Series), based on instlatx64 sample.
854
855 Thu Apr 16 2020 Todd Allen <todd.allen@etallen.com>
856 * cpuid.c: Added 7/0/edx SERIALIZE & TSXLDTRK bit descriptions.
857 * cpuid.c: Added 0xf/1/eax Counter width & overflow flag.
858 * cpuid.c: Added 0x10/3/ecx per-thread MBA controls flag.
859 * cpuid.c: Added 0x8000001f fields.
860 * cpuid.man: Added AMD 24594 & 40332 docs.
861
862 Tue Mar 3 2020 Todd Allen <todd.allen@etallen.com>
863 * cpuid.c: Corrected field lengths in 14/0 and 14/1 subleafs so that
864 columns line up.
865
866 Thu Feb 27 2020 Todd Allen <todd.allen@etallen.com>
867 * cpuid.c: Added CC150 (Coffee Lake R0) synth decoding, based on
868 instlatx64 example.
869
870 Wed Feb 26 2020 Todd Allen <todd.allen@etallen.com>
871 * cpuid.c: Added Jasper Lake A0 stepping (from Coreboot*).
872 * cpuid.c: Updated 1/ebx "cpu count" to modern terminology: "maximum
873 addressible IDs for CPUs in pkg" to avoid user confusion. It was a
874 reliable count of the number of CPUs for only a split second some time
875 around 2002. Maybe.
876 * cpuid.c: Updated 4/eax CPU & core count terminology in the same way.
877
878 Tue Feb 11 2020 Todd Allen <todd.allen@etallen.com>
879 * Made new release.
880
881 Mon Feb 10 2020 Todd Allen <todd.allen@etallen.com>
882 * cpuid.c: Clarified Intel NNP-I (Spring Hill).
883 * cpuid.c: In decode_vendor(), report "Zhaoxin" even with VENDOR_VIA,
884 if the brand string indicates so.
885 * cpuid.c: In 0xc0000004/ebx, make current voltage use the shift-4 + 700
886 encoding used for other VIA voltages.
887
888 Fri Feb 7 2020 Todd Allen <todd.allen@etallen.com>
889 * cpuid.man: Use both Intel doc numbers for 329671/600827.
890 * cpuid.man: Added missing 329901/600834 Intel doc.
891
892 Thu Feb 6 2020 Todd Allen <todd.allen@etallen.com>
893 * cpuid.c: Added VIA 0xc0000004 leaf decoding.
894 * cpuid.c: Added X2_IMAGES special flag to pretty-print values in the
895 2X encoding.
896 * cpuid.c: Added MINUS1_IMAGES special flag to pretty-print values with
897 the "- 1" encoding. (I finally got turned around about this being
898 better than the older "raw" values.)
899
900 Wed Feb 5 2020 Todd Allen <todd.allen@etallen.com>
901 * cpuid.c: Add VIA C7-D and Eden brands to (0,6),(0,10) (synth).
902 * cpuid.c: Differentiate VIA (0,6),(0,13) (synth) based on brand strings.
903 * cpuid.c: Overhaul of VIA 0xc0000002 leaf decoding.
904 * cpuid.c: Updated VIA Nano steppings (synth).
905 * cpuid.c: Removed extraneous WinChip & core words from C3 and later
906 VIA CPUs (synth).
907
908 Wed Feb 5 2020 Todd Allen <todd.allen@etallen.com>
909 * cpuid.c: Changed mp_synth fields to use '=' separator instead of ':',
910 like every other value.
911 * cpuid.c: Changed processor serial number to use '=' separator instead
912 of ':', like every other value.
913
914 Tue Feb 4 2020 Todd Allen <todd.allen@etallen.com>
915 * cpuid.man: Added 336907 doc with 7/0/ecx/TME bit description.
916 * cpuid.c: Removed LX* comment from 7/0/ecx/TME bit description. It's
917 documented after all.
918
919 Tue Feb 4 2020 Todd Allen <todd.allen@etallen.com>
920 * cpuid.c: Clarified (0,6),(10,6) Comet Lake-U (synth).
921
922 Mon Feb 3 2020 Todd Allen <todd.allen@etallen.com>
923 * Made new release.
924
925 Mon Feb 3 2020 Todd Allen <todd.allen@etallen.com>
926 * cpuid.c: Removed comments about (0,6),(8,14),10 contradiction.
927 Coreboot* removed the incorrect code claiming it was Coffee Lake D0.
928 The actual code already reflected this resolution.
929 * cpuid.c: Removed now-redundant lines from decode_uarch_intel() for
930 the individual (0,6),(8,14) steppings. They all say Kaby Lake now,
931 so they aren't necessary.
932 * cpuid.c: Added (0,6),(4,14),8 Kaby Lake G0 and (0,6),(5,14),8
933 Kaby Lake-H A0 steppings to both (synth) and (uarch synth) that I found
934 in Coreboot*. I realized I was worrying too much about them. They are
935 at least wholly distinct steppings, so they don't constitute the
936 intra-stepping blurring that I saw with {Kaby,Amber,Whiskey,Comet}
937 Lake. They are more akin to the already-existing Cascade Lake &
938 Cooper Lake steppings. Perhaps those two new entries were just early
939 engineering samples for Kaby Lake.
940 * cpuid.c: Added (0,6),(9,14),13 stepping to decode_uarch_intel. The
941 fallback without a stepping is weak, and it should be avoided for
942 any actual known stepping. (Added a comment too.)
943 * Makefile: Changed my own Todd's Development rules to build on very old
944 systems, so that the executables will run at all on very old systems.
945 * Makefile: Changed -Wextra to -W. That isn't recommended on modern
946 gcc versions, but still works. And it is necessary on really old
947 gcc versions, because -Wextra produces a hard error.
948
949 Sun Feb 2 2020 Todd Allen <todd.allen@etallen.com>
950 * Made new release.
951
952 Sun Feb 2 2020 Todd Allen <todd.allen@etallen.com>
953 * Makefile, cpuid.proto.spec: Added FAMILY.NOTES to the list of files to
954 be included in tarball & rpm doc directory. That file still is messy,
955 but I reference it a lot, so maybe it will be useful to others too.
956
957 Sun Feb 2 2020 Todd Allen <todd.allen@etallen.com>
958 * cpuid.c: Added old (synth) models from sandpile.org: AMD Elan SC400,
959 NSC Geode LX.
960 * cpuid.c: Added some old (synth) and (uarch synth) die process numbers
961 from sandpile.org.
962 * cpuid.c: Added stepping values from sandpile.org.
963 * cpuid.c: sandpile.org calls (0,6),(4,6) "Crystalwell". Arguably, that
964 is just the name of the L4 cache. But even Intel's ARK calls these
965 CPUs "Crystal Well". So I'm changing the name to "Crystal Well". The
966 uarch still is Haswell, so that should clarify any confusion.
967 * cpuid.c: sandpile.org calls (0,6),(4,7) "Brystalwell". The situation
968 is similar, but Intel does not use that name at all. I'm not renaming
969 these cores.
970
971 Sun Feb 2 2020 Todd Allen <todd.allen@etallen.com>
972 * cpuid.c: Added leaf walking of the 0x20000000 (Intel Phi) range and
973 decoding of a single bit in 0x20000001, based on information in
974 sandpile.org. I found only a vague hint about this in the Intel Xeon
975 Phi Coprocessor System Developers Guide, but no details.
976 * cpuid.c: For the (0,11) family of Phi processors, placing them within
977 a K1OM family. The (0,6) Phi cores are just Airmont-derived, so left
978 them alone.
979
980 Sat Feb 1 2020 Todd Allen <todd.allen@etallen.com>
981 * cpuid.c: Reverted Cedar Trail back to Cedarview. (Atom uArch name vs.
982 Core name vs. Platform name vs. SoC name is very confusing.)
983
984 Sat Feb 1 2020 Todd Allen <todd.allen@etallen.com>
985 * cpuid.c: Added Broadwell (0,6),(3,13) steppings based on Coreboot*.
986 * cpuid.c: Added Haswell (0,6),(3,12) steppings based on Coreboot*.
987 * cpuid.c: Added Haswell-ULT (0,6),(4,5),0 stepping based on Coreboot*.
988 * cpuid.c: Added some Skylake (0,6),(4,14) steppings based on Coreboot*.
989 * cpuid.c: Added some Skylake (0,6),(5,14) steppings based on Coreboot*.
990 * cpuid.c: Added Kaby Lake-H (0,6),(9,14),9 stepping based on Coreboot*.
991 * cpuid.c: Added Cannon Lake (0,6),(6,6) steppings based on Coreboot*.
992 * cpuid.c: Added Apollo Lake (0,6),(5,12) A0 stepping based on Coreboot*.
993 * cpuid.c: Added Gemini Lake (0,6),(7,10) A0 stepping, and corrected
994 R0 stepping, based on Coreboot*.
995 * cpuid.c: Added Ice Lake-U/Y (0,6),(7,14) A0 stepping based on
996 Coreboot*, and disregarding inconsistent info from spec update.
997 * cpuid.c: Added Tiger Lake (0,6),(8,12) A0 stepping based on Coreboot*.
998 * cpuid.c: Added Elkhart Lake (0,6),(9,6) A0 stepping based on Coreboot*.
999 * cpuid.c: Added Comet Lake (0,6),(10,6) steppings based on Coreboot*.
1000 * cpuid.c: Added Comet Lake-H/S (0,6),(10,5) steppings based on
1001 Coreboot*.
1002
1003 Sat Feb 1 2020 Todd Allen <todd.allen@etallen.com>
1004 * cpuid.c: Added (uarch synth) decoding for (6,15),(0,0) Bulldozer,
1005 based on engineering sample.
1006 * cpuid.c: Added (uarch synth) & (synth) (6,15),(6,0) Excavator Carrizo
1007 and Toronto, based on instlatx64 samples.
1008 * cpuid.c: Added (uarch synth) decoding for (8,15),(0,0) Zen, based on
1009 engineering sample.
1010 * cpuid.c: Added Zhaoxin (0,7),(1,15) based on example.
1011 * cpuid.c: Differentiate Zhaoxin ZhangJiang from VIA Isaiah [C7] in
1012 (synth) and (uarch synth). Sadly, this implies a need to use brand
1013 information for (uarch synth).
1014 * cpuid.c: Addedd (synth) for VIA version of Zhaoxin ZhangJaing at
1015 (0,7),(0,11).
1016 * cpuid.c: Added Westmere-EP A0 & B0 stepping (synth) based on instlatx64
1017 sample & wikipedia article.
1018 * cpuid.c: Fixed bogus stepping in Centerton fallback (synth).
1019 * cpuid.c: Added (0,6),(5,5),10 Cooper Lake (synth) & (uarch synth),
1020 based on Qemu.
1021 * cpuid.c: Added "AMD PRO A" as a 2nd string to detect AMD A-Series.
1022 * cpuid.c: Differentiate Raven Ridge from Great Horned Owl/
1023 Banded Kestrel (synth), based on "Embedded" string in brand.
1024 * cpuid.c: Added Merlin Falcon as R-Series alternative everywhere
1025 G-Series Brown Falcon appears.
1026 * cpuid.c: Added rules for EPYC Embedded to differentiate (synth) for
1027 Snowy Owl and Naples, based on EPYC 3000 series. Untested, because I
1028 have no examples.
1029
1030 Fri Jan 31 2020 Todd Allen <todd.allen@etallen.com>
1031 * cpuid.man: Added instlatx64.atw.hu.
1032 * cpuid.man: Added -l and -s options.
1033
1034 Fri Jan 31 2020 Todd Allen <todd.allen@etallen.com>
1035 * cpuid.c: Added rudimentary (10,15) (synth) for AMD Zen 3.
1036
1037 Fri Jan 31 2020 Todd Allen <todd.allen@etallen.com>
1038 * cpuid.man: Added linux kernel note about intel-family.h.
1039 * cpuid.c: Added rudimentary Tremont (synth) & (uarch synth).
1040 * cpuid.c: Added tentative Ice Lake NNPI (synth) & (uarch synth).
1041 * cpuid.c: Added rudimentary (0,6),(10,6) Comet Lake [Coffee Lake]
1042 (synth) & (uarch synth).
1043
1044 Fri Jan 31 2020 Todd Allen <todd.allen@etallen.com>
1045 * cpuid.man: Added Intel Microcode Update Guidance document.
1046 * cpuid.c: Removed br.generic check from dc (Core) query. It was useful
1047 in the Yonah era, but has been problematic since. Instead, add a dG
1048 (Generic) query and use that where needed for the Yonah CPUs. And a
1049 few other users of dc now use dG.
1050 * cpuid.c: Added (synth) for Apollo Lake D0 (collision with B0/B1?) & E0.
1051 * cpuid.c: Generalized P4500 & U4500 (Arrandale/Clarkdale) (synth) names.
1052 * cpuid.c: Added Broadwell-DE V3 (synth) alternate stepping.
1053 * cpuid.c: Added Broadwell H 43e (synth).
1054 * cpuid.c: Added Pentium 3700U / 3800U (synth).
1055 * cpuid.c: Added Apollo Lake (Broxton) (synth).
1056 * cpuid.c: Added Atom x5-E8000 (synth).
1057 * cpuid.c: Added Pentium G6900 (Clarkdale K0) (synth).
1058 * cpuid.c: Added Core i*-900 (Clarksfield) (query dc) (synth).
1059 * cpuid.c: Added E5-4600 (Ivy Bridge) (synth) names.
1060 * cpuid.c: Prefixed E to Jasper Forest Xeon (synth) names.
1061 * cpuid.c: Added Xeon E3-1200 (Kaby Lake) (synth) specific line.
1062 * cpuid.c: Added Xeon 6500 names to Beckon (synth).
1063 * cpuid.c: Generalized Pentium 900 (Sandy Bridge) (synth) names.
1064 * cpuid.c: Added Celeron T3000 / 900 / SU2300 (Wolfdale) (synth) names.
1065 * cpuid.c: Added Pentium T4000 (Wolfdale) (synth) names.
1066 * cpuid.c: Added Celeron M ULV 700 (Penryn) (synth).
1067 * cpuid.c: Correct query to dc for Sandy Bridge-E Core (synth).
1068 * cpuid.c: Added Pentium 1405 (Sandy Bridge-E) (synth).
1069 * cpuid.c: Added Xeon D-2100 (Skylake stepping 4) (synth) names.
1070 * cpuid.c: Added Core i9-7000X (Skylake-X) (synth).
1071 * cpuid.c: Changed case of x for SoFIA (synth).
1072 * cpuid.c: Simplified Westmere-EP Xeon (synth) names.
1073 * cpuid.c: Added Atom x*-A3900 (Apollo Lake) (synth) names.
1074 * cpuid.c: Added Rangeley core name to Atom C2000 (synth) names.
1075 * cpuid.c: Clarified that all (0,6),(4,15) CPUs are Broadwell-{E,EX}
1076 in (synth) lines.
1077 * cpuid.c: Clarified that (0,6),(3,13) is Broadwell-U.
1078 * cpuid.c: For (0,6),(4,6) (synth), MRG* 2018-08-31 shows stepping 1,
1079 so that must be the only known stepping: G0.
1080 * cpuid.c: Corrected Broadwell-Y Core M (synth).
1081 * cpuid.c: Added (0,6),(9,14),11 Coffee Lake Pentium & Celeron (synth).
1082 * cpuid.c: Corrected (0,6),(9,14),11 fallback (synth).
1083 * cpuid.c: Clarified transition from i*-8000 to i*-9000 at
1084 (0,6),(9,14),12 stepping in (synth) lines.
1085 * cpuid.c: Added Puma 7 (synth).
1086 * cpuid.c: Generalized Pentium B900C (Ivy Bridge) (synth).
1087 * cpuid.c: Added Celeron G2000 (Haswell) (synth).
1088 * cpuid.c: Clarified Haswell-E (synth).
1089 * cpuid.c: Aded -4000 series to (0,6),(4,6) Core (synth) names.
1090 * cpuid.c: Added (0,6),(3,14) Ivy Bridge Celeron (synth).
1091 * cpuid.c: Corrected (0,6),(3,14) Cores as Ivy Bridge-E (synth).
1092 * cpuid.c: Differentiate i*-8700 and i*-7700 Kaby Lake (synth).
1093 * cpuid.c: Added (0,6),(8,14),9 Kaby Lake Pentium & Celeron (synth).
1094 * cpuid.c: Differentiate (0,6),(8,14),9 Kaby Lake-Y and Amber Lake-Y
1095 (synth) with test for -8000 Series in brand name, because there seems
1096 to be no other way to tell.
1097 * cpuid.c: Added XMM 7272 (SoFIA) (synth).
1098 * cpuid.c: Added Coffee Lake R0 Xeon (synth).
1099 * cpuid.c: Added Whiskey Lake W0 Pentium & Celeron (synth).
1100 * cpuid.c: Correct (8,14) (uarch synth) to just Kaby Lake once all
1101 instances of Coffee lake had been eliminated from that family. The
1102 (9,14) family continues to include both Kaby Lake & Coffee Lake.
1103
1104 Fri Jan 31 2020 Todd Allen <todd.allen@etallen.com>
1105 * cpuid.man: Added Intel 600827 spec update.
1106 * cpuid.c: Generalized Bay Trail-M/D (synth) names and expanded them.
1107 * cpuid.c: Added Bay Trail-M/D D0/D1 (synth).
1108
1109 Thu Jan 30 2020 Todd Allen <todd.allen@etallen.com>
1110 * cpuid.c: Added VIA die processes for as many uarchs/cores as I could
1111 find.
1112
1113 Wed Jan 29 2020 Todd Allen <todd.allen@etallen.com>
1114 * cpuid.c: Added comments about various Intel spec updates.
1115 * cpuid.man: Removed extra "315593" garbage line.
1116 * cpuid.c: Added (synth) for Broadwell-E R0 stepping.
1117 * cpuid.c: Added stepping number for Apollo Lake B0/B1.
1118 * cpuid.c: Differentiate (synth) between Core & Xeon (0,6),(3,15)
1119 Haswell.
1120 * cpuid.c: Differentiate (synth) between Core & Xeon (0,6),(2,12)
1121 Westmere/Gulftown.
1122 * cpuid.c: Simplified more (synth) i*-*000 combinations.
1123 * cpuid.c: Removed duplicate slash in one Haswell (synth) line.
1124 * cpuid.c: Correct Itanium Merced model/stepping confusion.
1125 * cpuid.c: Added KX-5000 & KH-20000 to Zhaoxin WuDaoKou (synth).
1126 * cpuid.c: Added die proess to Zhaoxin WuDaoKou (uarch synth).
1127 * cpuid.c: Added Zhaoxin LuJiaZiu (0,7),(3,11) model (synth) &
1128 (uarch synth).
1129
1130 Tue Jan 28 2020 Todd Allen <todd.allen@etallen.com>
1131 * cpuid.c: Differentiate (synth) between Bay Trail Pentiums, Celerons
1132 & Atoms.
1133 * cpuid.c: Differentiate (synth) between Braswell Pentiums & Celerons.
1134 * cpuid.c: Corrected (synth) steppings for Braswell.
1135 * cpuid.c: Add J3000 series to (synth) for Braswell.
1136 * cpuid.c: Remove Pentium & Celeron items from {Kaby,Coffee,Comet} Lake
1137 Core (synth). I'd already created separate items for those, but
1138 missed removing the names from the Core-specific line.
1139
1140 Mon Jan 27 2020 Todd Allen <todd.allen@etallen.com>
1141 * Made new release.
1142
1143 Mon Jan 27 2020 Todd Allen <todd.allen@etallen.com>
1144 * cpuid.c: Changed 0x8000001e/ecx to display nodes per processor in N-1
1145 notation, after receiving confirmation from AMD that this is correct.
1146
1147 Sat Jan 25 2020 Todd Allen <todd.allen@etallen.com>
1148 * cpuid.c: Fixed spelling of (size synth). I meant to always have
1149 "synth" at the end of synthesized fields, and had that one flipped
1150 around.
1151 * cpuid.c: Clarified AVX512_VNNI: neural network instructions.
1152 * cpuid.c: Clarified AVX512_VBMI2: byte VPCOMPRESS, VPEXPAND.
1153 * cpuid.c: Clarified AVX512_BF16: bfloat16 is a data format, not an
1154 instruction.
1155 * cpuid.c: Added 7/0/edx md-clear feature, found from Xen & Qemu
1156 hypervisors.
1157 * cpuid.c: Added 0x80000008/ebx ppin feature, found from Xen hypervisor.
1158 * cpuid.c: Added 0x40000001/eax (KVM) flags.
1159 * cpuid.c: Got rid of the Transmeta 0x80860001/eax family description,
1160 which I missed when I got rid of all 1/eax families. It wasn't so
1161 egregious, but it wasn't very valuable either. The Transmeta Crusoe
1162 name already was in the (synth) leaf.
1163 * cpuid.c: Wrote a version of bits_needed() that uses __builtin_clz
1164 with gcc 3.4 and later.
1165 * cpuid.c: Fixed bug with old asm-based bits_needed() function when the
1166 input value was 0.
1167
1168 Sat Jan 25 2020 Todd Allen <todd.allen@etallen.com>
1169 * cpuid.c: Further clarified descriptions in 0x8000001f leaf, based on
1170 text in AMD64 Architecture Programmer's Manual, Vol 3, 3.28. I had
1171 missed these new fields in my earlier pass through the manual.
1172 * cpuid.c: Added comments for more undocumented fields, noting where
1173 the information came from, particularly SKC*, LX*, and sandpile.org.
1174 * cpuid.c: Changed case of new descriptions.
1175 * cpuid.c: Created Synth_Family() & Synth_Model() macros based on
1176 print_1_eax & SKC's AMD_Family() macro.
1177 * cpuid.c: Added (family synth) and (model synth) to 0x80000001/eax,
1178 (AMD and Hygon variants), just like for 1/eax.
1179 * cpuid.c: Added Castle Peak B0 stepping (synth), now that I know the
1180 stepping name.
1181 * cpuid.c: Changed 0x80000008/ebx "RDPRU instruction" field.
1182 * cpuid.c: Clarified 0x80000020 leaf descriptions based on AMD 55803 PPR.
1183 * cpuid.c: Modified print_apic_synth's bit width computations to reflect
1184 change in terminology (core => thread, CU => core) in AMD Family 17h.
1185 * cpuid.man: Updated 54945 PPR name, using newer doc from
1186 developer.amd.com.
1187 * cpuid.man: Added 55803 PPR, found by URL provided by AMD.
1188 * cpuid.man: Updated sandpile.org URL.
1189
1190 Sat Jan 25 2020 Todd Allen <todd.allen@etallen.com>
1191 * cpuid.c: Selectively applied changes from Smita Koralahalli
1192 Channabasappa's patch: "Add PQoS feature to CPUID utility and display
1193 subleaf 1 for leaf 0x80000020 in the raw CPUID data."
1194 * cpuid.c: Renamed fields which no longer are Intel-specific:
1195 RDT-CMT/PQoS cache monitoring and RDT-CAT/PQE cache allocation.
1196
1197 Fri Jan 24 2020 Todd Allen <todd.allen@etallen.com>
1198 * cpuid.c: Shortened 0x8000001f leaf descriptions to <= 40 chars.
1199
1200 Fri Jan 24 2020 Smita Koralahalli Channabasappa <Smita.KoralahalliChannabasappa@amd.com>
1201 * cpuid.c: Add AMD Secure Encryption feature bits to CPUID utility.
1202 * cpuid.c: Update CPUID utility with additional AMD specific features.
1203 * cpuid.c: Handle naming issues of cores->threads at register
1204 80000008_ecx and compute unit->core at register 8000001e_ebx for
1205 families greater than 16h. Retains previously assigned names if
1206 families are lesser than or equal to 16h. Family values are
1207 determined by adding family number and extended family
1208 number(80000001_eax[8:11] + 80000001_eax[20:27]) as described in PPR
1209 under CPUID_Fn00000001_eax.
1210
1211 Wed Jan 22 2020 Todd Allen <todd.allen@etallen.com>
1212 * Made new release.
1213
1214 Wed Jan 22 2020 Todd Allen <todd.allen@etallen.com>
1215 * cpuid.c: In print_80000001_ebx_amd, removed two checks for
1216 __M(val_1_eax) >= _XM(0) + _M(0). Yes, gcc, I know that "comparison
1217 of unsigned expression >= 0 is always true", and I also know even a
1218 half-assed optimizer will get rid of it, so I preferred clarity. But
1219 people freak out if the compiler emits any warnings, no matter what
1220 crazy -W options the've chosen. So I'm removing them.
1221 * cpuid.c: Changed a bunch of ccstring return types to cstring. The
1222 extra const in ccstring was meaningless for return types, but it
1223 caused a ton of additional -Wignored-qualifiers warnings. No grousing
1224 about those warnings; they seem legit.
1225 * Makefile: Added -Wextra, so I'll see these before people complain
1226 about them in the future.
1227
1228 Tue Jan 21 2020 Todd Allen <todd.allen@etallen.com>
1229 * cpuid.c: Changed Cannon Lake to Palm Cove when talking about uarch.
1230 * cpuid.c: Added extra (0,6),(8,14),12 (unknown type) fallback.
1231 * cpuid.c: Fixed (0,6),(8,14) Whiskey Lake typo.
1232 * cpuid.c: Added i*-9000 names to (0,6),(9,14) Coffee Lake CPUs.
1233
1234 Mon Jan 20 2020 Todd Allen <todd.allen@etallen.com>
1235 * Made new release.
1236
1237 Sun Jan 19 2020 Todd Allen <todd.allen@etallen.com>
1238 * cpuid.c: Fixed (synth) decoding of Kaby Lake vs. Coffee Lake (and
1239 their myriad "optimizations").
1240 * cpuid.c: Correctly (synth) decoding of Comet Lake, which was wildly
1241 wrong.
1242 * cpuid.c: Treating Whiskey Lake, Amber Lake, and Comet Lake as distinct
1243 uarchs just causes absurd "Coffee Lake / Whiskey Lake / Amber Lake /
1244 Comet Lake" uarch strings. Instead, call all of them Coffee Lake, but
1245 turn off the core_is_uarch flag. This ends up treating the other 3 as
1246 core names within the Coffee Lake uarch, which seems clearer.
1247 * cpuid.c: Renamed Ice Lake to Sunny Cove when talking about uarch.
1248 * cpuid.c: Renamed Tiger Lake to Willow Cove when talking about uarch.
1249 * cpuid.c: Added (synth) differentiation between Whiskey Lake (U line)
1250 & and Amber Lake (Y line).
1251 * cpuid.c: Added (synth) differentiation between Whiskey Lake (8000
1252 Series) and Comet Lake (10000 Series).
1253 * cpuid.c: Separated (synth) for Goldmont Plus into Pentium & Celeron.
1254 * cpuid.c: Fixed Moorefield (synth) to say Z3500 instead of Z3400.
1255 * cpuid.c: Fixed (0,6),(5,5),7 to Cascade Lake-X. Core names should be
1256 as specific as possible (in contrast to uarch names).
1257 * cpuid.c: added (0,6),(2,7) Atom Z2000 Medfield (synth) based on
1258 example found on instlatx64.
1259 * cpuid.c: Renamed Cedarview (SoC name) to Cedar Trail (core name).
1260 * cpuid.c: Added (0,6),(1,15) Havendale/Auburndale (synth).
1261 * cpuid.c: Added VIA (0,6),(0,15) Esther C5J (synth).
1262 * cpuid.c: Added VIA Nano steppings to (synth).
1263 * cpuid.c: Added AMD Ryzen vs. EPYC (synth) differentiation to
1264 Castle Peak / Rome.
1265 * cpuid.c: Separated Mullins into Mullins (tablets) and Beema (desktop).
1266 * cpuid.c: Separated Kabini into Kabini (desktop) and Kyoto (servers).
1267 Also added Temash for A-Series, although they're all mixed up with
1268 Kabini.
1269 * cpuid.c: Added AMD (6,15),(3,8) Godavari (synth) decoding.
1270 * cpuid.c: Added AMD (2,15),(0,3) Griffin (synth) decodings.
1271 * cpuid.c: Removed duplicate junk code for AMD (1,15),(0,2) which
1272 prevented the 3 and 10 steppings from being used.
1273 * cpuid.c: Corrected some AMD (0,6),(0,8) Duron Applebred (synth) names.
1274 * cpuid.c: Added AMD DG02SRTBP4MFA based on example found on instlatx64.
1275
1276 Fri Jan 17 2020 Todd Allen <todd.allen@etallen.com>
1277 * cpuid.c: Merged 0xb and 0x1f leaf code, much like what Len Brown of
1278 Intel suggested a year ago. I don't know why I didn't just do that in
1279 the first place. Merged field names look more like the 0x1f names,
1280 because I thought they were clearer.
1281 * cpuid.c: Removed type descriptions from "--- level ---" sub-headers.
1282 Intel docs clarify the levels and types are not related.
1283 * cpuid.c: Got rid of the ridiculously overloaded 1/eax family
1284 descriptions. That information is nearly useless in isolation and
1285 described much better in the new (uarch synth) field.
1286 * cpuid.c: Also got rid of 0x80000001/eax family descriptions. It
1287 wasn't nearly as bad, but still better to use the (uarch synth) field.
1288 * cpuid.c: Because I removed that family information, also updated the
1289 decode_uarch* functions with information about older CPU makers'
1290 information.
1291 * cpuid.c: Added vendor name to (uarch synth).
1292 * cpuid.c: Fixed 4 and 0x8000001d leaf descriptions to say that the
1293 values are in "minus 1" notation. Steven Noonan hinted that there was
1294 something to check here, and there was.
1295 * cpuid.c: Added (synth size) field to the 4 and 0x8000001d leaves to
1296 compute the cache size, also based on a hint from Steven Noonan.
1297 * cpuid.c: Added preliminary Zhaoxin decoding based on limited
1298 information I could find.
1299 * cpuid.c: Added missing uarch names to decode_uarch_intel().
1300 * cpuid.c: Added note about P5 Tillamook CPUs.
1301 * cpuid.c: Added some more die process values.
1302
1303 Thu Jan 16 2020 Todd Allen <todd.allen@etallen.com>
1304 * Made new release.
1305
1306 Thu Jan 16 2020 Todd Allen <todd.allen@etallen.com>
1307 * cpuid.c: Added decode_uarch*() and moved the uarch suffixes there from
1308 print_synth*(). print_synth_intel() and print_synth_amd() now call
1309 that function to get the suffixes.
1310 * cpuid.c: Added print_uarch_synth() to display just those suffixes.
1311 * cpuid.c: Added (synth) decoding for Itanium Poulson & Kittson.
1312 * cpuid.c: Correct (synth) decoding for Itanium Montecito, Millington,
1313 Montvale, Tukwila.
1314 * cpuid.c: Cleaned up AMD [Excavator] core names.
1315 * cpuid.man: Added some missing Intel spec updates.
1316
1317 Wed Jan 15 2020 Todd Allen <todd.allen@etallen.com>
1318 * cpuid.c: Added "(family synth)" and "(model synth)" to do the combined
1319 values used by the linux kernel and AMD. That is:
1320 Family = XF + F
1321 Model = (XM << 4) + M
1322 * cpuid.c: Hunt down the fallback (synth) decodings that just list tons
1323 of different possible meanings, all copied from the more specific
1324 lines above them. They almost always are wrong; if they were right,
1325 the more specific tests would've detected them. So, they're pure
1326 guesswork. Replace them with "(unknown type)", which is more honest.
1327 * cpuid.c: Simplified Intel Xeon Scalable descriptions.
1328 * cpuid.c: Eliminated reiteration of i3-XXXX, i5-XXXX, i7-XXXX CPUs,
1329 using i*-XXXX instead.
1330 * cpuid.c: Added (synth) decoding for Core i*-4000U seen in the wild.
1331 * cpuid.c: Correct missing = symbol in 0x80000001/eax transmeta leaf.
1332 * cpuid.c: Added [K6], [K7], [K8] (synth) clarifications for AMD K8 CPUs.
1333 * cpuid.c: Added (6,15),(6,5) (synth) based on sample from Alexandros
1334 Couloumbis.
1335 * cpuid.c: Added AMD "*-Series" queries for the various latters and
1336 (synth) rules to use them. Added more rules for AMD architectures
1337 that used this nomenclature.
1338 * cpuid.c: Changed dO query to sO.
1339
1340 Wed Jan 15 2020 Todd Allen <todd.allen@etallen.com>
1341 * cpuid.c: Clarified (synth) for each microarchitecture to include
1342 process-neutral microarchitecture names too:
1343 {P6} = (Pentium Pro, Klamath, Deschutes, Katmai, Coppermine,
1344 Tualatin, Mendocino, Cascades)
1345 {Netburst} = [Willamette, Northwood, Prescott, Cedar Mill]
1346 {P6 Pentium M} = (Banias), [Dothan, Yonah]
1347 {Core} = [Merom, Penryn]
1348 {Nehalem} = [Nehalem, Westmere]
1349 {Sandy Bridge} = (Sandy Bridge, Ivy Bridge)
1350 {Haswell} = (Haswell, Broadwell)
1351 {Skylake} = (Skylake, Kaby Lake, Coffee Lake, Whiskey Lake,
1352 Amber Lake, Cascade Lake, Comet Lake, Cooper Lake,
1353 Cannon Lake)
1354 {Sunny Cove} = (Ice Lake, Tiger Lake)
1355 The similarities are hazy in places. But this seems useful to help
1356 people who, for example, don't know "Cedar Mill", but do know
1357 "Netburst". Also the number of Skylake-related architecture names
1358 exploded, and not all "Lake" names belong to Skylake, so this helps to
1359 clarify.
1360 * cpuid.c: Corrected (synth) for Tolapai to 90nm process.
1361
1362 Tue Jan 14 2020 Todd Allen <todd.allen@etallen.com>
1363 * cpuid.c: Clarified Arrandale & Clarkdale as [Westmere].
1364 * cpuid.c: Clarified Bloomfield, Gainestown & Beckton as [Nehalem].
1365 * cpuid.c: Added [Merom] clarification to a couple CPUs that missed it.
1366 * cpuid.c: Added [Cedar Mill] clarification to a couple CPUs that missed
1367 it.
1368 * cpuid.c: Clarified Dothan, Stealey, Crofton & Tolopai as [Dothan].
1369 * cpuid.c: Clarified Yonah, Sossaman as [Yonah].
1370 * cpuid.c: Did not clarify Banias as [Banias] because it appears there
1371 are no non-Banias chips based on it.
1372 * cpuid.man: Added handy wiki pages about microarchitectures.
1373
1374 Mon Jan 13 2020 Todd Allen <todd.allen@etallen.com>
1375 * cpuid.c: Added 6/eax HW_FEEDBACK flag.
1376 * cpuid.c: Added 7/0/ecx ENQCMD flag.
1377 * cpuid.c: Added 7/0/edx AVX512_VP2INTERSECT flag.
1378 * cpuid.c: Added 7/1/eax AVX512_BF16 flag.
1379 * cpuid.c: Added 0xd/0/eax flags for CET_U & CET_S state.
1380 * cpuid.c: Added 0x80000008/ebx WBNOINVD flag.
1381 * cpuid.c: Added 0x80000008/ebx SSBD flags from AMD white paper.
1382 * cpuid.c: In 7/0/edx leaf, clarified PCONFIG as an instruction.
1383 * cpuid.c: Added synth detection for Cyrix MediaGX (circa 1997 SoC).
1384 * cpuid.c: Added 7/0/ecx TME flag, discovered in the linux-5.5-rc6
1385 kernel source.
1386 * cpuid.c: Added 0x80000008/ebx additional STIBP always on flag,
1387 discovered in the linux-5.5-rc6 kernel source.
1388 * cpuid.man: Added AMD SSBD white paper.
1389 * cpuid.man: Added linux kernel note and clue on what to look for.
1390
1391 Sun Jan 12 2020 Todd Allen <todd.allen@etallen.com>
1392 * cpuid.c: Added Matisse B0 stepping based on sample from Steven Noonan.
1393 * cpuid.c: Removed redundant dR lines from Pinnacle Ridge. (They could
1394 come back if I see an EPYC based on Pinnacle Ridge, but they're
1395 redundant now.)
1396
1397 Sun Jan 12 2020 Todd Allen <todd.allen@etallen.com>
1398 * Made new release.
1399
1400 Sun Jan 12 2020 Todd Allen <todd.allen@etallen.com>
1401 * Makefile, cpuid.proto.spec: Added INSTALL_STRIP to allow disabling the
1402 install -s option. This makes rpmbuild & find-debuginfo.sh happy,
1403 because they can find the cpuid debug information and create the
1404 cpuid-debuginfo rpm.
1405 * Makefile: Updated release target to move debugsource rpms too.
1406
1407 Sun Jan 12 2020 Todd Allen <todd.allen@etallen.com>
1408 * cpuid.c: Added 0x40000004 leaf for Xen hypervisor.
1409 * cpuid.c: Added 0x40000005 leaf for Xen hypervisor.
1410 * cpuid.c: Fixed errors with static ccstring arrays that were not large
1411 enough to hold NULLs for all reserved bit field values.
1412 * cpuid.c: Added AMD's CMT "compute unit" concept to print_apic_synth
1413 by adding that architectural level above the "cores" level, which
1414 relects AMD's portrayal. This level is displayed only if it is
1415 present.
1416 * cpuid.c: Added some undocumented synth decodings found on
1417 https://en.wikichip.org/wiki/amd/cpuid. Not everything there makes
1418 sense, so I didn't take everything. Marked with comments.
1419 * cpuid.c: Added architecture tags to Intel synth decodings:
1420 [Willamette], [Northwood], [Prescott], [Merom], [Penryn], [Nehalem],
1421 [Westmere]. After that, Intel dropped the hyper-specific code names
1422 in favor of suffix letters.
1423 * cpuid.c: Added architecture tags to Intel synth decodings: [Bonnell],
1424 [Saltwell], [Silvermont], [Airmont], [Goldmont], [Goldmont Plus].
1425 Intel continues to use hyper-specific names for Atom CPUs.
1426
1427 Sat Jan 11 2020 Todd Allen <todd.allen@etallen.com>
1428 * Makefile: Added -Wimplicit-fallthrough -Wunused-parameter options.
1429 * cpuid.c: Clarified 4/edx WBINV/INVD flag.
1430 * cpuid.c: Added new 7/edx flags, especially including new features to
1431 mitigate speculative execution exploits.
1432 * cpuid.c: Cleaned up output of 0x10 subleaves.
1433 * cpuid.c: Added 0x12/0/ebx CPINFO for #CP exceptions in enclave.
1434 * cpuid.c: Properly display 0x18 sub-leaf number.
1435 * cpuid.c: Added leaf 0x1f V2 Topology logic to decode_mp_synth() and
1436 print_apic_synth(). I have no physical examples, so I only could test
1437 with artificial input files.
1438 * cpuid.c: Added 3-way and 6-way associativity to 0x80000006 and
1439 0x80000019 leaves.
1440 * cpuid.c: Fixed incorrect fallthrough in switch for "41322 3.74:
1441 table 16".
1442 * cpuid.c: Fixed incorrect fallthrough's in switch for Family 12h tables.
1443 * cpuid.c: Added UNUSED macro to make newer gcc's shut up about unused
1444 formals. (They have one complaint if the name is omitted, and another
1445 complaint if it's specified but unused. There's just no pleasing gcc.)
1446 * cpuid.c: Added break after usage() to make gcc shut up about a
1447 nonexistent fallthrough (even though it was marked with NOTREACHED).
1448 * cpuid.c: Added missing newlines to all the print_2_byte Cyrix/VIA
1449 special cases.
1450 * cpuid.c: Fixed print_f_0_edx: QoS monitoring was in 0xf/0 bit 1, not
1451 bit 0.
1452 * cpuid.c: Added print_40000001_edx_kvm and appropriate call.
1453 * cpuid.c: For 0x80000001/ebx amd, display PkgType for all family 16h
1454 or higher systems, even if no specific BrandId breakdown is known.
1455 Added encodings from AMD BKDG and PPR documents.
1456
1457 Sat Jan 11 2020 Todd Allen <todd.allen@etallen.com>
1458 * cpuid.c: Added proper synth decoding for Atom C3000 (Denverton).
1459 * cpuid.c: Clarified Goldmont into eithe Apollo Lake or Denverton.
1460 * cpuid.c: Corrected (0,6),(9,14) synth decoding to be Coffee Lake.
1461 * cpuid.c: Added (0,6),(9,14) Coffee Lake synth decoding steppings.
1462 * cpuid.c: Added (0,6),(9,14) Coffee Lake synth decoding for Xeon E-2100
1463 & E-2200.
1464 * cpuid.c: Added (0,6),(5,5),7 synth decoding for Xeon 2nd Gen Scalable.
1465 * cpuid.c: Added (0,6),(5,5),7 synth decoding for Xeon D-2100.
1466 * cpuid.c: Added synth decoding for Gemini Lake R0 stepping (same as B0).
1467 * cpuid.c: Added vague synth decoding for (0,6),(6,6) Cannon Lake.
1468 * cpuid.c: Added vague synth decoding for (0,6),(6,10) Ice Lake.
1469 * cpuid.c: Added vague synth decoding for (0,6),(6,12) Ice Lake.
1470 * cpuid.c: Added vague synth decoding for (0,6),(7,13) Ice Lake.
1471 * cpuid.c: Added additional synth decodings for AMD Ryzen, including
1472 Pinnacle Ridge.
1473 * cpuid.c: Differentiate Ryzen from EPYC using brand string and new
1474 query functions.
1475 * cpuid.man: Added new spec updates, revision guides, etc.
1476
1477 Sat Jan 11 2020 Todd Allen <todd.allen@etallen.com>
1478 * Prettification of Masanori Misono's 0x40000001/eax KVM fields.
1479 * Formatting changes & URL removal from Jeffrey Walton's SunOS patch.
1480 * Prettification of Thomas Friebel's 0x40000003 leaf fix: while loop.
1481 * Reverted print_header() to use !raw (personal preference of mine).
1482 * Format changes to & rearrangement of fanjinke's Hygon patch.
1483 * Changed Ani Sinha's 0x80000008/ebx indirect branch prediction barrier
1484 description to include IBPB acronym.
1485
1486 Fri Jan 3 2020 Thomas Friebel <friebelt@amazon.de>
1487 * Fixed bug that skipped half the subleaves in the 0x40000003 hypervisor
1488 leaf.
1489 * Fixed contradictory try logic in print_header() for leaf 0x40000003.
1490 * Fixed to use 0x40000003/ebx for high 32 bits of vtsc_offset,
1491 instead of using eax for both high & low 32 bits.
1492
1493 Fri Nov 8 2019 Ani Sinha <ani.sinha@nutanix.com>
1494 * cpuid.c: Added 0x80000001/ecx NB performance counter extensions &
1495 0x80000008/ebx indirect branch prediction barrier.
1496
1497 Mon May 13 2019 fanjinke <fanjinke@hygon.cn>
1498 * Added Hygon support.
1499
1500 Wed May 8 2019 Jeffrey Walton <noloader@gmail.com>
1501 * cpuid.c: Added support for SunOS build.
1502
1503 Sat Mar 2 2019 Masanori Misonoc <m.misono760@gmail.com>
1504 * cpuid.c: Added 0x40000001/eax KVM bit fields.
1505
1506 Fri Jun 1 2018 Tony Luck <tony.luck@intel.com>
1507 * cpuid.c: Added decoding of 0x10/3 subleaf.
1508
1509 Sat May 26 2018 Todd Allen <todd.allen@etallen.com>
1510 * cpuid.c: Fixed 7/ecx spelling error: intruction.
1511 * cpuid.c: Fixed main spelling error: unrecogized.
1512
1513 Sat May 19 2018 Todd Allen <todd.allen@etallen.com>
1514 * Made new release.
1515
1516 Sat May 19 2018 Todd Allen <todd.allen@etallen.com>
1517 * cpuid.c: Added some more fields reported by Stefan Kanthak, after
1518 tracking down some documentation that explains them:
1519 * cpuid.c: Added 7/ecx bit 7: CET_SS and 7/edx bit 20: CET_IBT fields.
1520 So far, the only documentation for these is Control-flow Enforcement
1521 Technology Preview (334525), section 8.2 Feature Enumeration.
1522 * cpuid.c: Added 7/ecx bit 16: 5-level paging. So far, the only
1523 documentation for this is 5-Level Paging and 5-Level EPT White Paper
1524 (335252).
1525 * cpuid.c: Improved 14/0/ecx descriptions.
1526 * cpuid.c: Added hypervisor leaf descriptions from Microsoft's
1527 Hypervisor Top Level Functional Specification (Released Version 5.0b).
1528 * cpuid.man: Added the above mentioned docs.
1529
1530 Thu May 17 2018 Todd Allen <todd.allen@etallen.com>
1531 * cpuid.c: Added CPUID features documented in PPR for AMD Family 17h
1532 Model 01h B1 (54945 Rev 1.14):
1533 * cpuid.c: Added PCOMMIT to 7/ebx: PCOMMIT instruction (a deprecated
1534 instruction).
1535 * cpuid.c: Added bits to 80000001/ecx (amd).
1536 * cpuid.c: Added 80000007/ebx.
1537 * cpuid.c: Added 80000007/ecx.
1538 * cpuid.c: Added bits to 80000007/edx.
1539 * cpuid.c: Added 80000008/ebx.
1540 * cpuid.c: Added bits to 8000000a/edx.
1541 * cpuid.c: Added bits to 8000001a/eax.
1542 * cpuid.c: Added bits to 8000001b/eax.
1543 * cpuid.c: Added tentative 8000001f descriptions. Information obtained
1544 from Linux kernel 4.17-rc5 arch/x86/kernel/cpu/scattered.c (as patched
1545 by Tom Lendacky of AMD on 18-Apr-2017 via LKML), and from Secure
1546 Encrypted Virtualization API Version 0.16 Technical Preview
1547 (55766 Rev 3.06).
1548 * cpuid.man: Added 54945 & 55766 docs.
1549
1550 Thu Apr 19 2018 Todd Allen <todd.allen@etallen.com>
1551 * Made new release.
1552
1553 Wed Apr 19 2018 Todd Allen <todd.allen@etallen.com>
1554 * cpuid.c: Fixed various bugs reported by Stefan Kanthak:
1555 * cpuid.c: Fixed bug in print_2_meaning: 0x49 normal & special cases.
1556 * cpuid.c: Fixed bug in print_2_meaning: 0x63 additional 2M/4M, 4-way,
1557 32 entries item.
1558 * cpuid.c: Collapsed print_2_meaning into print_2_byte so that the
1559 prefix and CONT are known in one place.
1560 * cpuid.c: Fixed bug in print_2_byte: 0x7d is not sectored.
1561 * cpuid.c: Fixed bug in print_2_byte: 0xc2 is 4K, not 4M.
1562 * cpuid.c: Changed 6/ecx bit 0 to "hardware coordination feedback".
1563 * cpuid.c; Changed 7/ebx bit 3 to "BMI1 instructions".
1564 * cpuid.c: Change 7/ebx bit 12 to RDT-M.
1565 * cpuid.c: Change 7/ebx bit 15 to RDT-A.
1566 * cpuid.c: Corrected "0x40000003/ecx" label.
1567 * cpuid.c; print_40000003_edx_microsoft: corrected "idle" spelling.
1568
1569 Wed Apr 19 2018 Todd Allen <todd.allen@etallen.com>
1570 * cpuid.c: Added mnemonic letters for some 1/ecx, 1/edx, and 7/ebx leaf
1571 fields.
1572 * cpuid.c: Fixed bug with 4/ecx: field name should be "number of sets".
1573 * cpuid.c: Fixed bug with 4/ecx leaf: pass ECX to it!
1574 * cpuid.c; Fixed bug with 0x10/ecx: pass ECX to it!
1575 * cpuid.c: Fixed bug with 0x10/edx: pass EDX to it!
1576
1577 Sun Apr 8 2018 Todd Allen <todd.allen@etallen.com>
1578 * cpuid.c: Added 2 leaf 0xfe encoding: TLB data in leaf 0x18.
1579 * cpuid.c: Added new Intel 6/eax bit fields.
1580 * cpuid.c: Added new Intel a/edx bit field: anythread deprecation.
1581 * cpuid.c: Added new Intel d/0/eax bit field: IA32_XSS HDC state.
1582 * cpuid.c: Added new Intel 10/0/ebx bit field: memory bandwidth alloc.
1583 * cpuid.c: Added new Intel 12/0/eax bit fields
1584 * cpuid.c: Added new Intel 18 leaf: deterministic address translation.
1585 * cpuid.c: Added new Intel 7/ecx bit fields from Intel Architecture
1586 Instruction Set Extensions and Future Features Programming Reference.
1587 * cpuid.c: Added new Intel 1b leaf from Intel Architecture
1588 Instruction Set Extensions and Future Features Programming Reference.
1589 * cpuid.c: Added synth decoding for Avoton C0 stepping (same as B0).
1590 * cpuid.c: Corrected synth decoding for Bay Trail-M C0 steppings.
1591 * cpuid.c: Added synth decoding for Bay Trail-I (E3800).
1592 * cpuid.c: Added synth decoding for Xeon D-1500N (Broadwell-DE A1).
1593 * cpuid.c: Added synth decoding for Xeon E7-4800/8800 (Broadwell-EX B0).
1594 * cpuid.c: Correct synth decoding for Bay Trail A0.
1595 * cpuid.c: Added synth decoding for Bay Trail D0.
1596 * cpuid.c: Added synth decoding for Core X-Series (Skylake-X).
1597 * cpuid.c: Added synth decoding for Xeon Scalable (Bronze, Silver, Gold,
1598 Platinium) (Skylake).
1599 * cpuid.c: Added synth decoding for Pentium Silver (Gemini Lake).
1600 * cpuid.c: Added synth decoding for AMD Zen.
1601 * cpuid.man: Added new spec updates & PPR.
1602
1603 Fri Nov 3 2017 Todd Allen <todd.allen@etallen.com>
1604 * cpuid.c, cpuid.man: Attribute whitepaper to Shih Kuo.
1605
1606 Wed Jun 22 2017 Lars Wendler <polynomial-c@gentoo.org>
1607 * cpuid.c: recent glibc versions no longer automagically include
1608 sysmacros.h headers. This needs to be done by the source files itself
1609 now.
1610
1611 Fri Mar 3 2017 Todd Allen <todd.allen@etallen.com>
1612 * cpuid.c: Added missing SDBG bit to 1/ecx leaf.
1613
1614 Sun Jan 22 2017 Todd Allen <todd.allen@etallen.com>
1615 * Made new release.
1616 * cpuid.c: Use __cpuid_count macro for "cpuid" instruction if possible.
1617 This macro is present in gcc 4.3.0 and later, and works around the fact
1618 that the cpuid instruction writes on the PIC register. This is only
1619 important when compiling PIC/PIE.
1620 * cpuid.c: Added synth decoding for Intel Knights Landing B0. The Intel
1621 docs still don't specify the stepping numbers, but all examples seen
1622 so far have stepping number 1, and so far B0 is the only stepping.
1623 * cpuid.c: Added new synth decodings for Intel Kaby Lake.
1624 * cpuid.c: Fixed synth decodings for AMD Steamroller.
1625 * cpuid.c: Fixed synth decodings for AMD Jaguar.
1626 * cpuid.c: Added synth decodings for AMD Puma.
1627 * cpuid.c: Added synth decodings for AMD Excavator.
1628 * cpuid.c: For (6,15),(0,2) Piledriver processors, detect FX series
1629 and report it as Vishera instead of Abu Dhabi/Seoul/Delhi.
1630 * cpuid.c: Added general microarchitecure names for AMD (e.g.
1631 Piledriver) in addition to specific core names (e.g. Trinity) for
1632 later generation processors. If I have trouble remembering these,
1633 it seems likely other people do too.
1634 * cpuid.c: Added synth decoding for Quark X1000.
1635 * cpuid.c: Added Intel Atom Z2760 (Clover Trail).
1636 * cpuid.c: Added extra synth decodings for some Sandy Bridge processors.
1637 * cpuid.c: Added extra synth decodings for some Ivy Bridge processors.
1638 * cpuid.man: Added new & missing spec updates & revision guides.
1639 * FUTURE: Cleaned this up somewhat.
1640
1641 Mon Dec 5 2016 Todd Allen <todd.allen@etallen.com>
1642 * cpuid.c: Removed stale len variable from do_file().
1643
1644 Thu Dec 1 2016 Todd Allen <todd.allen@etallen.com>
1645 * Made new release.
1646
1647 Wed Nov 30 2016 Todd Allen <todd.allen@etallen.com>
1648 * cpuid.c: Fixed bugs in the subleaf walks for 0x8000001d (AMD cache
1649 information) and 0x40000003 (Xen hypervisor information) because the
1650 code for them was under wholly the wrong loops. Thanks to Brice
1651 Goglin for detecting this and working out the cause of the bug.
1652
1653 Wed Nov 16 2016 Todd Allen <todd.allen@etallen.com>
1654 * cpuid.c: Updated comments referencing 325462 Table 35-1 to also
1655 specify Volume 3.
1656 * cpuinfo2cpuid: Added grep commands to EXAMPLES.
1657
1658 Mon Nov 14 2016 Todd Allen <todd.allen@etallen.com>
1659 * Made new release.
1660 * cpuid.man: Added 334663 & 334820 spec updates.
1661
1662 Sun Nov 13 2016 Todd Allen <todd.allen@etallen.com>
1663 * cpuid.c: Fixed bug reported by Andrew Cooper where, in do_real, for
1664 the 0xd leaf, the lower half of the valid bit set for XSS should've
1665 used 0xd/1/ecx instead of 0xd/1/eax. Sadly, this bug affects raw
1666 dumps too.
1667 * cpuid.c: Added -l/--leaf and -s/--subleaf options to cause cpuid
1668 to dump just the specified leaf and subleaf. If -s/--subleaf is not
1669 specified, it is assumed to be 0. The intended purpose for this is
1670 to display raw dumps of not-yet-supported leaves, or to workaround
1671 bugs like the above.
1672
1673 Sat Nov 12 2016 Todd Allen <todd.allen@etallen.com>
1674 * cpuid.c: In bits_needed, add a further check for !defined(__ILP32__),
1675 which should help with building a 32-bit version of cpuid on a 64-bit
1676 system.
1677
1678 Sat Nov 12 2016 Todd Allen <todd.allen@etallen.com>
1679 * cpuid.c: Made editorial changes to Piotr Luc's patches (spelling,
1680 capitalization, register order, comments, etc.).
1681 * cpuid.c: Added AVX512DQ, AVX512IFMA, AVX512BW, AVX512VL, and CLWB
1682 decoding to 7/ebx.
1683 * cpuid.c: Added AVX512VBMI to 7/ecx.
1684 * cpuid.c: Added print_f_0_edx to show L3 cache QoS monitoring support.
1685 * cpuid.c: Added total & local bandwidth monitoring to 0xf/1/edx.
1686 * cpuid.c: Added 0x15/ecx nominal core crystal clock decoding.
1687 * cpuid.c: In print_17_0_ebx, corrected reversed scheme encodings.
1688 * cpuid.c: Added synth decoding for Xeon D-1500 (Broadwell-DE) Y0
1689 stepping.
1690 * cpuid.c: Added synth decoding comment about Braswell D1 stepping, but
1691 its stepping number isn't documented.
1692 * cpuid.c: Added synth decoding for (0,6),(8,14) Kaby Lake processors.
1693 * cpuid.c: Added synth decoding for Apollo Lake processors.
1694 * cpuid.c: Added vague synth decoding for (0,6),(9,14) Kaby Lake
1695 processors.
1696 * cpuid.c: Re-sorted (0,6),(5,7) Knights Landing to correct position.
1697 * cpuid.c: Re-sorted (0,6),(5,15) Goldmont to correct position.
1698
1699 Sat Oct 27 2016 Piotr Luc <Piotr.Luc@intel.com>
1700 * cpuid.c: Add AVX512_4VNNIW & AVX512_4FMAPS flags.
1701 * cpuid.c: Add Knights Mill (KNM) CPUID.
1702
1703 Sun Aug 14 2016 Todd Allen <todd.allen@etallen.com>
1704 * Made new release.
1705 * Makefile: Added clean rules to remove tarballs & rpm's with other
1706 version numbers.
1707
1708 Sun Aug 14 2016 Todd Allen <todd.allen@etallen.com>
1709 * cpuinfo2cpuid: Added a script that takes input from a /proc/cpuinfo
1710 file and converts it into suitable input to cpuid. The information
1711 that cpuid is capable of producing based on this very limited input
1712 information is slight, but apparently there is interest in getting the
1713 synthesized (synth) leaf from this. There isn't much value in using
1714 it with an actual /proc/cpuinfo file on the local system, because just
1715 allowing cpuid to read the local cpuid info will provide better
1716 output. But it could be useful for interpreted saved /proc/cpuinfo
1717 files from another system. I slapped together the basic logic, and
1718 Jirka Hladky turned it into a proper perl script, with actual options,
1719 a help screen, and even documentation. I then made some changes to
1720 give it some more uniform indentation, whitespace, and such. And to
1721 give Jirka Hladky more credit, since his contribution to the script is
1722 larger than my own.
1723 * Makefile: Added rules to generate cpuinfo2cpuid.man from the =pod data
1724 in the script.
1725 * Makefile: Added cpuinfo2cpuid & cpuinfo2cpuid.man to the released
1726 materials.
1727 * cpuid.proto.spec: Added cpuinfo2cpuid & cpuinfo2cpuid.1.gz to released
1728 materials.
1729
1730 Sun Aug 14 2016 Todd Allen <todd.allen@etallen.com>
1731 * cpuid.c: Changed instances of Kb to KB. In print_2_meaning, changed
1732 an instance of 4k to 4K.
1733
1734 Sat Aug 13 2016 Todd Allen <todd.allen@etallen.com>
1735 * cpuid.c: Added 7/ebx SGX & FDP_EXCPTN_ONLY flags.
1736 * cpuid.c: Added 7/ecx BNDLDX/BNDSTX MAWAU value field, RDPID & SGX_LC.
1737 * cpuid.c: Added d/0/eax MPX state field.
1738 * cpuid.c: In print_d_0_eax, split MPX and AVX-512 all_or_none fields
1739 into their component parts. Also added IA32_XSS PT state.
1740 * cpuid.c: In print_d_n_ecx, clarify XCR0 as user state and IA32_CXX as
1741 supervisor state.
1742 * cpuid.c: In print_d_n, add MPX and PT features.
1743 * cpuid.c: Renamed leaf 0x10 to Intel's new name. Corrected totally
1744 bogus interpretation of subleaf 0.
1745 * cpuid.c: Generalize subleaf 0x10/1 to also include 0x10/2, and
1746 provide new Intel correct names for each.
1747 * cpuid.c: Added 0x14/0 PTWRITE & power event trace.
1748 * cpuid.c: Added description for leaf 0x12 (SGX Capability) and all its
1749 subleaves.
1750 * cpuid.c: Added descriptionf or leaf 0x17 (SoC vendor) and its
1751 subleaves.
1752 * cpuid.c: Decode new leaf 2 cache descriptors: 0x64 & 0xc4.
1753 * cpuid.c: Updated Atom C2000 (Avoton) with A0/A1 steppings.
1754 * cpuid.c: Added Atom Z3n00 (Bay Trail-T B2/B3) specific stepping 1.
1755 * cpuid.c: Added Xeon D-1500 (Broadwell-DE) V2 stepping.
1756 * cpuid.c: Corrected Atom Z8000 (Cherry Trail) with correct model, per
1757 changes in its spec update.
1758 * cpuid.c: Change the (0,6),(5,14) Skylake descriptions to be more vague
1759 to reflect the larger set of existing processors now.
1760 * cpuid.c: Add actual information for the (0,6),(4,14) Skylake
1761 processors.
1762 * cpuid.c: Add actual information for the (0,6),(5,14) Broadwell-E
1763 processors.
1764 * cpuid.c: Add actual information for the (0,6),(4,15) Broadwell and
1765 Broadwell-EX processors.
1766 * cpuid.c: Added vague mentions of Goldmont (0,6),(5,12) and (0,6),(5,15)
1767 based on 325462 Table 35-1.
1768 * cpuid.c: Add Atom S1200 (Centerton) under (0,6),(3,6) thanks to an
1769 example provided by Jirka Hladky.
1770 * cpuid.c: Added Eden to the list of possible meanings of VIA
1771 (0,6),(6,13). An example provided by Daniel Wyatt shows that they
1772 sometimes use the simple Eden brand for this architecture.
1773 * cpuid.man: Added various new Intel documents used while making the
1774 above changes.
1775 * cpuid.c: Made -f - operate on stdin.
1776
1777 Wed Jun 22 2016 Alan Cox <alan@lxorguk.ukuu.org.uk>
1778 * cpuid.c: Added out-of-memory checks to strregexp.
1779
1780 Mon Oct 19 2015 Todd Allen <todd.allen@etallen.com>
1781 * Updated cpuid.man's list of information sources with new sources used
1782 in the 20151017 release (and one renamed source).
1783
1784 Sat Oct 17 2015 Todd Allen <todd.allen@etallen.com>
1785 * Made new release.
1786 * cpuid.c: Updated synth decoding for Broadwell processors.
1787 * cpuid.c: Added 0xd leaf field.
1788 * cpuid.c: Updated and expanded 0x14 leaf fields.
1789 * cpuid.c: Added synth decoding for Intel Xeon E7 v2 (Ivy Bridge-EX).
1790 * cpuid.c: Added synth decoding for Intel Core i5/i7 (Skylake).
1791 * cpuid.c: Added vague synth decodings for a few more future processor
1792 models from Intel 64 and IA-32 Architectures Software Developer's
1793 Manual (325462), Table 35-1.
1794
1795 Thu Oct 15 2015 Hubert Chrzaniuk <hubert.chrzaniuk@intel.com>
1796 * cpuid.c: Decode new leaf 2 cache descriptors: 6a, 6b, 6c, 6d.
1797 * cpuid.c: added synth decoding for Knights Landing.
1798 [NOTE FROM Todd Allen: There is no datasheet or spec update for
1799 Knights Landing yet, but Intel 64 and IA-32 Architectures Software
1800 Developer's Manual (325462), Table 35-1 mentions that it will have the
1801 family & model (0,6),(5,7).
1802
1803 Sat Jun 6 2015 Todd Allen <todd.allen@etallen.com>
1804 * Made new release.
1805 * cpuid.man: Added 325462 manual.
1806 * cpuid.c: Added new & missing decodings for: 4/ecx, 6/eax, 7/ebx, 7/ecx.
1807 * cpuid.c: Overhauled handling of 0xd leaf, based on new and more
1808 extensive information in the Intel CPUID documentation, particularly
1809 on how to decide which leaves are valid. The approach functions
1810 correctly for the subset described in the AMD documentation, too.
1811 This overhaul includes information on the XSAVEC, XGETBV, and
1812 XSAVES/XRSTORS instructions.
1813 * cpuid.c: Renamed 0xf leaves to include "Monitoring".
1814 * cpuid.c: Added 0x10 leaves for QoS Enforcement.
1815 * cpuid.c: Added new leaf 2 cache meanings: 0x1d, 0x24, 0xa0, 0xc3.
1816 * cpuid.c: Added missing i7 synth decoding for (0,6),(3,14).
1817 * cpuid.c: Corrected Atom Z3000 model & stepping which were bafflingly
1818 wrong: (0,6)(3,5),1 -> (0,6)(3,7),8.
1819 * cpuid.c: Corrected other Bay Trail stepping names for Celeron/Pentium
1820 N and J series.
1821 * cpuid.man: Added references to a bunch of new Intel manuals.
1822 * cpuid.c: Added synth decoding for Intel Xeon Phi (Knights Corner).
1823 * cpuid.c: Added synth decoding for Intel Atom C2000 (Avoton).
1824 * cpuid.c: Added synth decoding for Intel Xeon E5-x600 (Haswell-EP).
1825 * cpuid.c: Added synth decoding for Intel Xeon E5-[48]800 (Haswell-EP).
1826 * cpuid.c: Added synth decoding for Intel Core M (Broadwell-Y).
1827 * cpuid.c: Added synth decoding for Intel Xeon D-1500 (Broadwell-DE).
1828 * cpuid.c: Added synth decoding for Intel i7-5000 Extreme (Haswell R2).
1829 * cpuid.c: Added synth decoding for Intel Atom Z8000 (Cherry Trail).
1830 * cpuid.c: Added synth decoding for Intel Pentium/Celeron N3000
1831 (Braswell).
1832 * cpuid.c: Added synth decoding for Intel i7 5th gen (Broadwell).
1833 * cpuid.c: Added synth decoding for Intel E3-1200 v4 (Broadwell).
1834 * cpuid.c: Added Xeon E5-4600 to synth decoding for other Sandy Bridge
1835 E5 processors (it was omitted accidentally).
1836 * cpuid.c: Added Pentium D 9xx Processor to synth decoding for Presler
1837 D0 (it was omitted accidentally).
1838
1839 Fri Mar 21 2014 Todd Allen <todd.allen@etallen.com>
1840 * cpuid.c: Deal with 0-width PKG_width fields in print_apic_synth(),
1841 for CPUs where the SMT_width + CORE_width >= 8. This happens on
1842 Xeon Phi chips.
1843
1844 Wed Feb 12 2014 Todd Allen <todd.allen@etallen.com>
1845 * cpuid.c: Added CLFLUSHOPT instruction field to leaf 7, ebx.
1846 * cpuid.c: Added Processor Frequency Information leaf (0x16).
1847
1848 Tue Feb 11 2014 Todd Allen <todd.allen@etallen.com>
1849 * Makefile: Added src_tar rule.
1850
1851 Tue Feb 11 2014 Todd Allen <todd.allen@etallen.com>
1852 * cpuid.c: Made changes to allow building and running on kFreeBSD. This
1853 started out as a patch from Andrey Rahmatullin, but I refactored it.
1854 The changes to disable the cpuid kernel support are protected by a
1855 USE_CPUID_MODULE definition. And there's an additional sanity check
1856 to reject -k in that case. The changes to use the library versions of
1857 sched_setaffinity are protected by USE_KERNEL_SCHED_SETAFFINITY. I
1858 continue to go straight to the kernel on linux, though.
1859
1860 Tue Feb 11 2014 Todd Allen <todd.allen@etallen.com>
1861 * Makefile: Reorganized Andrey Rahmatullin's changes a bit and used
1862 them in my development build rules (make todd) too.
1863
1864 Tue Feb 11 2014 Andrey Rahmatullin <wrar@wrar.name>
1865 * Makefile: Honor CPPFLAGS, CFLAGS and LDFLAGS from the environment.
1866
1867 Mon Jan 27 2014 Todd Allen <todd.allen@etallen.com>
1868 * Makefile: Change to my development build rules (make todd) to use ld's
1869 --hash-style=both to avoid a SIGFPE when running on very old 32-bit
1870 systems. It has no effect on the tool for anyone else.
1871
1872 Thu Jan 23 2014 Todd Allen <todd.allen@etallen.com>
1873 * Made new release.
1874
1875 Thu Jan 23 2014 Todd Allen <todd.allen@etallen.com>
1876 * cpuid.c: Stop displaying raw hex for 0xc and 0xe leaves, because they
1877 are reserved and just contain zeroes.
1878 * cpuid.c: Fixed missing leaf 0xf subleaf 1 in do_real().
1879 * cpuid.man: Added reference to Intel Architecture Instruction Set
1880 Extensions Programming Reference (319433).
1881 * cpuid.c: Added new feature flags from that document.
1882
1883 Sun Jan 12 2014 Todd Allen <todd.allen@etallen.com>
1884 * Made new release.
1885
1886 Sun Jan 12 2014 Todd Allen <todd.allen@etallen.com>
1887 * cpuid.c: Added Celeron B800 synth decoding.
1888 * cpuid.c: Added Pentium G3000 & Celeron G1800 synth decoding.
1889 * cpuid.c: Added 4th Gen Core family mobile processors synth decoding.
1890 * cpuid.c: Added information about E5 v2 processors (no longer just
1891 engineering samples) and related Ivy Bridge-EP processors.
1892 * cpuid.c: Added Bay Trail (Atom Z3000, etc.) processors synth decoding.
1893
1894 Sun Jan 12 2014 Todd Allen <todd.allen@etallen.com>
1895 * cpuid.man: Added reference to Intel decoding from Intel 64 and IA-32
1896 Architectures Software Developer's Manual Volume 2A: Instruction Set
1897 Reference, A-M (253666).
1898 * cpuid.c: Added new Intel decodings from that document.
1899
1900 Sun Jan 12 2014 Todd Allen <todd.allen@etallen.com>
1901 * cpuid.c: Added new (instruction supported synth) field to report on
1902 instruction support when knowledge of that is scattered across
1903 multiple CPUID leaves. PREFETCH/PREFETCHW is the weirdest example.
1904 * cpuid.c: Clarified the raw PREFETCH/PREFETCHW field in 80000001 edx
1905 leaf with the 3DNow! prefix, similar to the description in the AMD
1906 CPUID docs. Thanks to Chris Orgill for reporting these two issues.
1907
1908 Fri Sep 27 2013 Todd Allen <todd.allen@etallen.com>
1909 * cpuid.c: Added missing break to decode_amd_model(), family (0,15),
1910 model (4,0), case 0x18. Thanks to David Binderman for reporting this.
1911
1912 Mon Jun 10 2013 Todd Allen <todd.allen@etallen.com>
1913 * Made new release.
1914
1915 Mon Jun 10 2013 Todd Allen <todd.allen@etallen.com>
1916 * cpuid.c: Added mention of Opteron 3200 (Zurich) chips, accidentally
1917 omitted from yesterday's updates.
1918
1919 Sun Jun 9 2013 Todd Allen <todd.allen@etallen.com>
1920 * Made new release.
1921
1922 Sun Jun 9 2013 Todd Allen <todd.allen@etallen.com>
1923 * cpuid.c: Updated 14h Model 00h-0Fh AMD model tables.
1924 * cpuid.c: Added synth decoding for Opteron x300 (Piledriver) chips.
1925 * cpuid.c: Added synth decoding for family 16h processors, tentatively
1926 identified as Steamroller.
1927 * cpuid.man: Added new AMD 15h Model 10h-1Fh, and AMD 16h Model 00h-0Fh
1928 manuals.
1929
1930 Sat Jun 8 2013 Todd Allen <todd.allen@etallen.com>
1931 * cpuid.c: Added sanity check to 0xCxxxxxxx leaves to check for an
1932 unreasonably large indicated maximum leaf number. If found, further
1933 walk of them is halted.
1934 * cpuid.c: Skip 0x4xxxxxxx leaves if cpuid does not indicate that the
1935 environment is a guest. This was suggested by Steven Levine, although
1936 I implemented it differently.
1937
1938 Sat Jun 8 2013 Todd Allen <todd.allen@etallen.com>
1939 * cpuid.c: Clarified some KVM hypervisor leaf feature flags that Eduardo
1940 Habkost pointed out. Added a couple new flags.
1941
1942 Sat Jun 8 2013 Todd Allen <todd.allen@etallen.com>
1943 * cpuid.c: Extended Eduardo Habkost's stash separation to include the
1944 0x80000008 leaf, and the leaves that inform transmeta_info.
1945
1946 Sat Jun 8 2013 Eduardo Habkost <ehabkost@raisama.net>
1947 * cpuid.c: This patch separates the code that changes fields in the
1948 'stash' struct from the code that prints that information. This way,
1949 the stash struct will get updated even when in raw mode, so other
1950 parts of the code can use that information.
1951 [NOTE FROM Todd Allen: It used to be that the stash was only set and
1952 used in cooked mode, but some uses dealing with the hypervisor snuck
1953 out and were used all the time. This new separation is only really
1954 necessary for the hypervisor fields, but it's good practice to do all
1955 the fields this way, so I'm accepting the patch as is.]
1956
1957 Sat Jun 8 2013 Todd Allen <todd.allen@etallen.com>
1958 * cpuid.c: Added synth decoding for Celeron G400/G500.
1959 * cpuid.c: Added synth decoding for Cedarview B3.
1960 * cpuid.c: Added synth decoding for Ivy Bridge i3 processors.
1961 * cpuid.c: Added synth decoding for Ivy Bridge Pentium G1600/G2000/G2100.
1962 * cpuid.c: Added synth decoding for Ivy Bridge Pentium
1963 900/1000/2000/2100.
1964 * cpuid.c: Clarified that Ivy Bridge Xeon E3-1200 is actually E3-1200 v2.
1965 * cpuid.c: Added vague synth decoding for Haswell, but spec updates
1966 show no specific chips or steppings yet.
1967 * cpuid.c: Expanded A100/A110 synth decoding to include semi-official
1968 Pentium M (Crofton) processors in Apple TV boxes.
1969 * cpuid.c: Added Xeon E5-2600 v2 engineering sample. Perhaps this will
1970 be the final synth decoding for them, but for now it's just marked as
1971 an engineering sample.
1972 * cpuid.man: Added new Intel manuals.
1973
1974 Fri Aug 24 2012 Todd Allen <todd.allen@etallen.com>
1975 * cpuid.c: Added sanity check to 0x4xxxxxxx leaves to check for an
1976 unrecognized hypervisor and an unreasonably large indicated maximum
1977 leaf number. If found, further walk of them is halted.
1978
1979 Tue Aug 21 2012 Todd Allen <todd.allen@etallen.com>
1980 * cpuid.c: Cleaned up printf(name) statements that were admonished by
1981 clang.
1982
1983 Fri Jun 1 2012 Todd Allen <todd.allen@etallen.com>
1984 * Made new release.
1985
1986 Thu May 31 2012 Todd Allen <todd.allen@etallen.com>
1987 * cpuid.c: Updated CPUID feature flags.
1988 * cpuid.c: Updated CPUID function 7 to support sub-leaves (mostly for
1989 future functionality that might be added to them).
1990 * cpuid.c: Updated synth decoding for Intel Dothan C0 because some use
1991 65nm process now.
1992 * cpuid.c: Updated Intel EP80579 synth to mention 65nm process.
1993 * cpuid.c: Added synth decoding for Intel Atom E600 series.
1994 * cpuid.c: Updated synth decoding for Intel Sandy Bridge D2 to include J1
1995 and Q0, which have the same CPUID.
1996 * cpuid.c: Added synth decoding for Intel Atom D2000/N2000 (Cedarview).
1997 * cpuid.c: Added synth decoding for Intel Sandy Bridge-E.
1998 * cpuid.c: Added synth decoding for AMD Llano.
1999 * cpuid.c: Improved distinction between AMD Interlagos & Zambezi.
2000 * cpuid.c: Added synth decoding for RDC IAD 100.
2001 * cpuid.c: Fixed some formatting bugs for Transmeta-specific leaves.
2002 * cpuid.c: Added synth decoding for some of VIA's versions of WinChips.
2003 * cpuid.man: Added mentions of spec updates for several Atoms, i7 for
2004 LGA-2011, and Xeon E5; and AMD 12h family.
2005
2006 Wed May 30 2012 Todd Allen <todd.allen@etallen.com>
2007 * cpuid.c: Fixed ancient bug in distinguishing Irwindale from Nocona
2008 (they differ only by L2 cache size).
2009 * cpuid.c: Added synth decoding for desktop and mobile Ivy Bridge.
2010
2011 Sat Feb 25 2012 Todd Allen <todd.allen@etallen.com>
2012 * Made new release.
2013 * cpuid.c: Cleaned up hypervisor-specific leaves for KVM.
2014 * cpuid.man: Added mention of KVM cpuid documentation.
2015
2016 Fri Feb 24 2012 Todd Allen <todd.allen@etallen.com>
2017 * cpuid.c: Added synth decoding for Intel Westmere-EX processors.
2018 * cpuid.c: Added synth decoding for AMD family 15h chips: AMD FX
2019 (Zambezi), Opteron 6200 (Interlagos), and Opteron 4200 (Valencia).
2020 * cpuid.c: Added synth decoding for AMD Z-Series and other Fusion
2021 chip ON-C0 steppings.
2022 * cpuid.c: Added synth decoding for Atom Z600 (Lincroft).
2023 * cpuid.c: Updated AMD model decoding for family 10h processors.
2024 * cpuid.man: Added mention of AMD family 14h and 15h documents, and
2025 Intel Westmere-EX & Lincroft documents.
2026 * cpuid.man: Removed obsolete limitation about 0x8000001b.
2027 * cpuid.c: Added support for hypervisor leaves (0x4000000 and after).
2028 Interpreted known generic leaves. Interpreted hypervisor-specific
2029 leaves for Xen (deduced from source, as no documentation on them
2030 exists). Interpreted hypervisor-specific leaves for KVM. Interpreted
2031 hypervisor-specific leaves for Microsoft.
2032
2033 Tue Jan 3 2012 Todd Allen <todd.allen@etallen.com>
2034 * cpuid.c: Added synth decoding for Athlon 64 (Venice DH-E6) chips.
2035
2036 Wed Nov 2 2011 Todd Allen <todd.allen@etallen.com>
2037 * cpuid.c: Added saw_4 and saw_b stash flags to deal with chips that
2038 report 0xc codes but still omit 0xb codes. This way, a maximum code
2039 of 0xc no longer implies the presence of 0xb codes for things like
2040 APIC decoding.
2041
2042 Mon Mar 28 2011 Todd Allen <todd.allen@etallen.com>
2043 * cpuid.c: Added APIC synth decoding for AMD, deduced by analogy to Intel
2044 code and the multiprocessor synth logic.
2045
2046 Mon Mar 7 2011 Todd Allen <todd.allen@etallen.com>
2047 * cpuid.c: Added some decoding for VIA 0xc0000002 codes, based on
2048 information from Juerg Haefliger. Very incomplete because VIA
2049 doesn't document their functions well.
2050 * cpuid.c: Fixed output of 0xc0000001 raw dump to conform to new style.
2051
2052 Sat Mar 5 2011 Todd Allen <todd.allen@etallen.com>
2053 * Made new release.
2054
2055 Fri Mar 4 2011 Todd Allen <todd.allen@etallen.com>
2056 * cpuid.c,cpuid.man: Added Celeron T1000 series, previously missing.
2057 * cpuid.c,cpuid.man: Added Celeron Mobile P4000, U3000 series.
2058 * cpuid.c,cpuid.man: Added current Sandy Bridge processors.
2059
2060 Thu Mar 3 2011 Todd Allen <todd.allen@etallen.com>
2061 * cpuid.c: Added detection of PCIDs & TSC-DEADLINE.
2062 * cpuid.c: Verified Mike Stroyan CPUID 2 cache meanings from Intel CPUID
2063 document (241618-037). Added 0x76 meaning.
2064 * cpuid.c: Added various new flags from Intel 241618-037.
2065 * cpuid.c,cpuid.man: Added AMD family 14h processors.
2066 * cpuid.c,cpuid.man: Updated Intel process id table, mostly as just
2067 generalizations.
2068
2069 Tue Nov 9 2010 Todd Allen <todd.allen@etallen.com>
2070 * cpuid.c: Update the usage() screen, since some of its -i and -1
2071 comments are incorrect now.
2072
2073 Mon Oct 4 2010 Todd Allen <todd.allen@etallen.com>
2074 * cpuid.c, cpuid.man: Added AMD Geode LX.
2075 * cpuid.c: Added NSC Geode GX2 and AMD Geode GX.
2076 * cpuid.c, cpuid.man: Added AMD Geode NX.
2077
2078 Sat Oct 2 2010 Todd Allen <todd.allen@etallen.com>
2079 * Made new release.
2080 * cpuid.c,cpuid.man: Added Intel Atom N500.
2081
2082 Thu Sep 30 2010 Todd Allen <todd.allen@etallen.com>
2083 * cpuid.c,cpuid.man: Added support for Intel Tolapai (SoC).
2084 * cpuid.c,cpuid.man: Added support for Intel Clarkdale chips from
2085 specification update 323179.
2086 * cpuid.c: Generalized decode_amd_model by adding full brand tables for
2087 AMD chips. If a BIOS doesn't recognize a chip it writes
2088 "model unknown" into its brand string via MSR's.
2089 decode_override_brand detects that and uses the decode_amd_model brand
2090 to differentiate CPUs.
2091 * cpuid.c: Corrected 80000001/ebx PkgType, BrandId, and str1 bit fields.
2092 * cpuid.c: Corrected problems with brand field decoding because its bit
2093 field with differs from architecture to architecture.
2094 * cpuid.c: decode_amd_model: the partialmodel decrement special case
2095 applies only to XF=1,F=15; and not to XF=2,F=15.
2096
2097 Mon Sep 27 2010 Todd Allen <todd.allen@etallen.com>
2098 * cpuid.c: Added support for NSC/AMD Geode GX1.
2099
2100 Wed Sep 8 2010 Todd Allen <todd.allen@etallen.com>
2101 * cpuid.c: Corrected the Transmeta processor revisions, which should've
2102 been in hex instead of octal.
2103
2104 Thu Sep 2 2010 Todd Allen <todd.allen@etallen.com>
2105 * cpuid.c: Added a couple vague steppings for Transmeta Efficeon TM8000
2106 processors. Updated some transmeta bitfields. This is all done
2107 blind, as I have no examples of these chips, little documentation, and
2108 the company is long defunct.
2109
2110 Thu Sep 2 2010 Todd Allen <todd.allen@etallen.com>
2111 * Made new release.
2112 * cpuid.c: Fixed a few header strings that had incorrect function hex
2113 codes or registers.
2114
2115 Wed Sep 1 2010 Todd Allen <todd.allen@etallen.com>
2116 * Made new release.
2117 * cpuid.c: Fixed buffer size in do_file() to be able to read new
2118 raw dumps with ecx information. It needed a couple more characters.
2119 * cpuid.c: Added Celeron M (Yonah D0) & Celeron M (Merom-L1 A1) synth
2120 entries.
2121 * cpuid.c: added Xeon Processor LV (Sossaman D0).
2122 * cpuid.c: Update Itanium chips in the synth tables. Sadly, this all
2123 still is being done blind, as I have no access to any Itanium chips.
2124 * cpuid.c: Wrote an x86_64 counterpart to the assembly code for
2125 bits_needed().
2126 * Makefile, cpuid.proto.spec: Changed to support building for both i386
2127 and x86_64.
2128
2129 Tue Aug 31 2010 Todd Allen <todd.allen@etallen.com>
2130 * Made new release.
2131 * cpuid.c: Rearranged synth rules and substantially simplified query
2132 macros into something like the form I was hoping for when I started
2133 this redesign.
2134 * cpuid.c: Added changes from the new AMD CPUID document that claims to
2135 have been released in September 2010!
2136 * cpuid.c: Changed raw dump to include %ecx values to accomodate CPUID
2137 functions with gaps in the useful %ecx range (e.g. 0xd). The file
2138 parser accepts either the old or new forms.
2139 * Makefile, cpuid.proto.spec: Updated build scheme for my current
2140 systems.
2141 * LICENSE: Changed to a GPL license.
2142
2143 Mon Aug 30 2010 Todd Allen <todd.allen@etallen.com>
2144 * cpuid.c: Semi-mechanically eliminated the codes used to
2145 disambiguate in the synth string and replaced them with queries,
2146 which I think will be more general-purpose and will allow me to
2147 eliminate a lot of the problem with codes appropriate for one
2148 model being a problem for subsequent models (e.g. the Core Solo
2149 vs. Core Duo distinction). There still are general-purpose
2150 queries like there were general-purpose codes, but the
2151 special-case queries will only matter for those families that
2152 care about them. This does mean that it's possible for multiple
2153 queries to register as true, so I have to be more careful with
2154 the order of chips in the synth tables.
2155
2156 Fri Aug 27 2010 Todd Allen <todd.allen@etallen.com>
2157 * Tested on a variety of CPUs.
2158 * cpuid.c: Corrected Mobile Turion checking in decode_brand.
2159 * cpuid.c: Added synth entries for 6/15/4 pre-production
2160 Conroe B0/Woodcrest B0.
2161 * cpuid.c: Added synth entries for Santa Rosa F3 stepping
2162 (undocumented).
2163 * cpuid.c: Fixed synth entries for Brisbane, Toledo, and Windsor to
2164 expect code DA (for dual-core Athlons).
2165 * cpuid.c: Generalized the check for Intel Extreme Edition chips.
2166 * cpuid.c: Added synth entries Core 2 Quad (Conroe) chips.
2167 * cpuid.c: Added synth entry for VIA 6/13/0 chip. Unfortunately, there
2168 is no documentation and very little anecdotal evidence of this chip,
2169 so the description is vague.
2170 * cpuid.c: Added addition CPUID function 2 cache codes from Mike
2171 Stroyan.
2172 * cpuid.c: Fixed some cut&paste errors that had EAX where it should
2173 have been EBX, as reported by Mike Stroyan
2174 * cpuid.c: Added very short synth table for SiS chips. I found no
2175 documentation on these, so I just have the one case.
2176 * cpuid.c: Fixed the (synth) strings for oddball chips, which suffered
2177 from a cut&paste error.
2178 * cpuid.c: Simplified some of the fallback strings that had grown
2179 ridiculously long.
2180
2181 Thu Aug 26 2010 Todd Allen <todd.allen@etallen.com>
2182 * Tested on a variety of CPUs.
2183 * cpuid.c: Added more logic for Woodcrest pre-production chips.
2184 * cpuid.c: Corrected synth logic for VIA Antaur chips.
2185 * cpuid.c: Added synth for plain vanilla Thoroughbred Athlon.
2186
2187 Wed Aug 25 2010 Todd Allen <todd.allen@etallen.com>
2188 * Tested on a variety of CPUs.
2189 * cpuid.c: Fixed a couple bugs with decoding processor numbers in
2190 print_synth_amd_model.
2191
2192 Tue Aug 24 2010 Todd Allen <todd.allen@etallen.com>
2193 * cpuid.c: Further changes to mp_synth decoding, including tracking
2194 of the decoding method used (there are around 4 major approaches,
2195 depending on how you count).
2196 * cpuid.c: Added apic_synth decoding to find the appropriate field
2197 widths and decode the process local APIC physical ID. This is useful
2198 in its own right, but also helps convince me that many Intel chips
2199 really do claim to have hyperthreads even though they don't.
2200 * cpuid.c: Added support for direct instruction (-i) functionality to
2201 report on all CPUs by calling sched_setaffinity to reschedule the
2202 process on each CPU. This is now the default behavior for -i, but
2203 it can be overridden with the -1 option.
2204 * cpuid.c: added Barcelona B1 (undocumented chip) synth decoding.
2205
2206 Mon Aug 23 2010 Todd Allen <todd.allen@etallen.com>
2207 * cpuid.c: Made real_get pass the requested ecx values even when
2208 using -k. Modern linux kernel expect the ecx values in the upper
2209 32 bits of the file offset (i.e. lseek64).
2210 * cpuid.c: Worked out a fallback for determining mp_synth information
2211 for Intel chips which lack CPUID function 4.
2212 * cpuid.c: Added mechanism for determining mp_synth information from
2213 CPUID function 11 information if it's available (because if it's
2214 present on Intel chips, it's the only reliable way; the older
2215 mechanisms return gibberish).
2216
2217 Fri Aug 20 2010 Todd Allen <todd.allen@etallen.com>
2218 * cpuid.c, cpuid.man: Added to synth even more Nehalem chips.
2219 * cpuid.c: Added 6/15 model for VIA Nano, but there's very little
2220 detailed information on this chip, so that's it.
2221 * cpuid.c: Corrected some AMD codename confusion from 2006:
2222 Dublin->ClawHammer/Odessa, Sonora->Dublin,
2223 Palermo(mobile)->Georgetown/Sonora, Lancaster->Lancaster/Richmond,
2224 Richmond->Taylor/Trinidad.
2225 * cpuid.c: Overhauled the AMD model dumping code to understand new
2226 families.
2227 * cpuid.c: Tweaked decode_mp_synth to use ApicIdCoreIdSize, per AMD's
2228 CPUID recommendations.
2229
2230 Thu Aug 19 2010 Todd Allen <todd.allen@etallen.com>
2231 * cpuid.c, cpuid.man: Updated synth tables for Intel Xeons.
2232 * cpuid.c: Removed all the "How to distinguish" comments, since
2233 it seems to be very common for Intel to have indistinguishable
2234 processors nowadays (the old cache-checking tricks are unreliable
2235 now).
2236 * cpuid.c, cpuid.man: Added to synth additional Nehalem chips as I'm
2237 able to hunt them down.
2238
2239 Wed Aug 18 2010 Todd Allen <todd.allen@etallen.com>
2240 * cpuid.c, cpuid.man: Updated synth tables for Intel Core 2, Atom,
2241 Celeron, and Pentium chips based on the same cores.
2242
2243 Tue Aug 17 2010 Todd Allen <todd.allen@etallen.com>
2244 * cpuid.c, cpuid.man: Updated synth tables for AMD family 10h (K10)
2245 and family 11h processors.
2246 * cpuid.c: simplified print_x_synth_amd by pruning its table down to
2247 just the three families that differ from normal 1/eax simple synth,
2248 and falling back on 1/eax simple synth otherwise.
2249
2250 Mon Aug 16 2010 Todd Allen <todd.allen@etallen.com>
2251 * cpuid.c: Added new steppings to synth tables using latest spec
2252 updates for all AMD processor families already in them.
2253 * cpuid.c, cpuid.man: Updated synth tables for AMD family 0Fh (K8)
2254 processors.
2255
2256 Fri Aug 13 2010 Todd Allen <todd.allen@etallen.com>
2257 * cpuid.c: Updated raw data dump based on latest CPUID documentation
2258 from Intel & AMD.
2259 * cpuid.c: Fixed dump of function 4 to iterate over all caches.
2260
2261 Thu Aug 12 2010 Todd Allen <todd.allen@etallen.com>
2262 * cpuid.c: Reorganized synth tables to always use extended family
2263 and extended model numbers since they are so prevalent on modern
2264 chips.
2265 * cpuid.c: Added new steppings to synth tables using latest spec
2266 updates for all Intel processor families already in them.
2267
2268 Sun Nov 26 2006 Todd Allen <todd.allen@etallen.com>
2269 * cpuid.c: Recognize Intel Core 2 Extreme Edition from brand string.
2270 Thanks to Tony Freitas for explaining that Ennnn means desktop while
2271 Xnnnn means Extreme Edition for those processors.
2272
2273 Wed Nov 22 2006 Todd Allen <todd.allen@etallen.com>
2274 * cpuid.c: Recognize Itanium2 Montecito C2.
2275 * cpuid.c: Recognize Intel Core 2 Duo Mobile (Conroe B2).
2276 * cpuid.c: Recognize Intel Quad-Core Xeon Processor 5300 (Woodcrest B3)
2277 and Intel Core 2 Extreme Quad-Core Processor QX6700 (Woodcrest B3).
2278 * cpuid.c: Recognize Intel Celeron D Processor 36x (Cedar Mill D0).
2279 * cpuid.c: Distinguish Core 2 Duo from Core 2 Extreme Edition based on
2280 presence or absence of hyperthreading. Thanks to Tony Seacow for
2281 providing output for numerous processors and the advice about
2282 hyperthreading.
2283
2284 Thu Nov 2 2006 Todd Allen <todd.allen@etallen.com>
2285 * cpuid.c: Changed "number of logical CPU cores - 1" to "number of CPU
2286 cores - 1".
2287
2288 Sun Sep 17 2006 Todd Allen <todd.allen@etallen.com>
2289 * Made new release.
2290 * cpuid.c: Made the cpuid instruction (-i, --inst options) the default.
2291 * cpuid.c: Added -k, --kernel option to cause the kernel module to be
2292 used.
2293 * cpuid.c: Removed confusing CPU number from output when using
2294 the cpuid instruction.
2295 * cpuid.man: Updated with new options.
2296 * cpuid.c, Makefile: Changed i386 _llseek kludge to workaround
2297 offsets >= 0x80000000. Now using -D_FILE_OFFSET_BITS=64 in the
2298 Makefile instead. This should allow the i386 cpuid to work on
2299 an x86_64 system.
2300 * cpuid.c: Added knowledge of CPU modules to synthesized field: Tulsa,
2301 Woodcrest B1 (pre-production)
2302 * cpuid.c: In synthesized model field, properly distinguish between
2303 Intel Pentium D Processor 8x0 and Intel Pentium Extreme Edition
2304 Processor 840 (both Smithfields).
2305 * cpuid.man: Added mention of new 7100 series spec updates.
2306 * cpuid.spec: Changed Copyright to License.
2307
2308 Thu Aug 23 2006 Todd Allen <todd.allen@etallen.com>
2309 * cpuid.c: Removed unnecessary one_cpu argument from do_file.
2310 * cpuid.c: Added -v option to display version number.
2311
2312 Wed Aug 23 2006 Todd Allen <todd.allen@etallen.com>
2313 * Made new release.
2314
2315 Tue Aug 22 2006 Todd Allen <todd.allen@etallen.com>
2316 * cpuid.c, cpuid.man: Added -i option to use the CPUID instruction
2317 directly instead of the CPUID kernel module.
2318 * cpuid.c: Change Pentium Processor 9x0 to 9xx because of 9x5
2319 processors.
2320 * cpuid.man: Updated information about determining synthesized model
2321 information, and added information about determining synthesized
2322 multiprocessor information.
2323
2324 Mon Aug 7 2006 Todd Allen <todd.allen@etallen.com>
2325 * cpuid.proto.spec: Change URL to cpuid-specific page.
2326
2327 Sun Aug 6 2006 Todd Allen <todd.allen@etallen.com>
2328 * Made new release.
2329
2330 Sat Aug 5 2006 Todd Allen <todd.allen@etallen.com>
2331 * cpuid.c: Added support for differentiating Core 2 Duo CPUs from Xeon
2332 5100 CPUs based on the brand string.
2333 * cpuid.c: Clarified that CPUID 4 ECX contains one less than the
2334 number of sets.
2335 * cpuid.c: Added support for CPUID 5 ecx & edx.
2336 * cpuid.c: Added support for CPUID 6 ecx.
2337 * cpuid.c: Added support for CPUID 0xa eax & ebx.
2338 * cpuid.c: Made CPUID functions 7, 8, and 9 reserved (i.e. say nothing
2339 until and unless they are defined).
2340 * cpuid.c: Corrected CPUID 1 ecx xTPR disabnle.
2341
2342 Wed Aug 2 2006 Todd Allen <todd.allen@etallen.com>
2343 * cpuid.c: Corrected bug with Core 2 Duo recognition.
2344 * cpuid.c: Distinguish between Allendale and Conroe cores based on
2345 L2 cache size.
2346 * cpuid.c: Added VIA C7 & C7-M names to Esther WinChip C5J core CPUs.
2347 * cpuid.man: Mention wikipedia pages for CPUs.
2348
2349 Tue Aug 1 2006 Todd Allen <todd.allen@etallen.com>
2350 * cpuid.c: On help screen, clarified that -f option reads output from
2351 -r option.
2352 * cpuid.proto.spec: Used %{} macros for external command invocations.
2353
2354 Mon Jul 31 2006 Todd Allen <todd.allen@etallen.com>
2355 * Makefile: Removed install -o 0 -g 0 options. For installations
2356 from the tarball, the user will have to be root anyway. And for
2357 rpm, the %defattr() attribute in the spec is handling this more
2358 cleanly. Finally, those options are causing some non-root
2359 installations to have to be done by the root user, which is
2360 undesirable.
2361 * cpuid.c: Improved identification for VIA C3 (Samuel WinChip C5A core).
2362 * cpuid.c: Loosened up check for "Mobile AMD Athlon(tm) XP" by
2363 removing "-M" suffix.
2364 * cpuid.c: Recognize mobile Athlon XP (Thoroughbred).
2365
2366 Sun Jul 30 2006 Todd Allen <todd.allen@etallen.com>
2367 * Made new release.
2368 * cpuid.c: Fixed "deterministic cache parameters (4)", so that its
2369 children aren't staggered.
2370 * cpuid.c: Corrected Venice and Palermo processors with DH-E3 and
2371 DH-E6 steppings that had been reported as Toledo processors
2372 incorrectly.
2373 * cpuid.c: Corrected codename for the Athlon Thoroughbred's Duron
2374 counterpart: Applebred.
2375 * cpuid.c: Added code to distinguish Athlon XP Thortons from Bartons,
2376 based on L2 cache size.
2377 * cpuid.c: Added code to distinguish Athlon 64 X2 Manchester E6 from
2378 Athlon 64 X2 Toledo.
2379 * cpuid.c: Added Celeron Yonah C0.
2380 * cpuid.c: Added Core Yonah D0.
2381 * cpuid.c: Added Xeon Nocona R0 / Irwindale R0 stepping.
2382 * cpuid.c: Added Pentium 4 Cedar Mill C1, Pentium D Presler C1, and
2383 Xeon Dempsey C1.
2384 * cpuid.c: Added Xeon Woodcrest B2.
2385 * cpuid.c: Added Core 2 Conroe B1 & B2 & Core 2 Extreme Processor B1 &
2386 B2.
2387 * cpuid.c: Updated Itanium2 processors.
2388 * cpuid.man: Added Intel specification updates for new CPUs.
2389
2390 Wed Jul 26 2006 Todd Allen <todd.allen@etallen.com>
2391 * cpuid.c: In decode_brand, added check for "Athlon(TM) XP", equivalent
2392 to "Athlon(tm) XP".
2393 * cpuid.c: Fixed "80000002" typo in print_80860002_eax().
2394
2395 Mon Jul 24 2006 Todd Allen <todd.allen@etallen.com>
2396 * cpuid.c: Distinguish properly between Core Solo, Core Duo, and
2397 Xeon Processor LV. Reorganized multi-processor decoding to
2398 support that.
2399
2400 Sun Jul 23 2006 Todd Allen <todd.allen@etallen.com>
2401 * cpuid.c: Fixed emission of raw values for cpuid code 2.
2402 * cpuid.c: Added -f file option to read raw hexadecimal input from a
2403 file and parse it instead of executing the cpuid instruction, and
2404 code reorganization to support this.
2405
2406 Mon May 22 2006 Todd Allen <todd.allen@etallen.com>
2407 * cpuid.c: Fixed "unrecogninzed" typo in error.
2408
2409 Fri Apr 7 2006 Todd Allen <todd.allen@etallen.com>
2410 * cpuid.proto.spec: Added %defattr so that the files in the rpm's are
2411 owned by "root" and not "todd". (Why did no one scream bloody murder
2412 about this before?)
2413
2414 Mon Apr 3 2006 Todd Allen <todd.allen@etallen.com>
2415 * Made new release.
2416 * cpuid.c: Added code to distinguish between the two different Dual-Core
2417 Xeon (Paxville A0) and Dual-Core Xeon Processor 7000 (Paxville A0).
2418 Empirically, the significant differences are the VMX flag and the
2419 "execution disable" flag. The VMX flag is in an Intel-defined
2420 CPUID function, so it's used. Thanks to Jason Nicholls for providing
2421 the Dual-Core Xeon (Paxville A0) output that made this possible.
2422 * cpuid.c: Added detection for Xeon Processor LV (Sossaman C0).
2423
2424 Mon Mar 13 2006 Todd Allen <todd.allen@etallen.com>
2425 * Made new release.
2426 * cpuid.c: Fixed code that distinguished processors based on
2427 presence or absence of L3 cache. Some of the cache codes weren't
2428 being recognized as L3 cache.
2429
2430 Sun Feb 26 2006 Todd Allen <todd.allen@etallen.com>
2431 * Made new release.
2432
2433 Wed Feb 22 2006 Todd Allen <todd.allen@etallen.com>
2434 * cpuid.c: Added VMX: virtual machine extensions to CPUID function 1,
2435 register ecx.
2436 * cpuid.c: Added SVM LBR virtualization to CPUID function 8000000a,
2437 register edx.
2438 * cpuid.c: Fixed cut & paste header error in print_8000000a_eax.
2439
2440 Tue Feb 21 2006 Todd Allen <todd.allen@etallen.com>
2441 * cpuid.c: Renamed "hyper-threading technology" field to
2442 "hyper-threading / multi-core supported" to eliminate some confusing
2443 situations, such as Northwood chips which nominally support hyper-
2444 threading, but where it is disabled in the chip; or where hyper-
2445 threading is disabled in the BIOS; or AMD multi-core chips, which
2446 indicate TRUE here, but all of which lack hyper-threading at present.
2447 * cpuid.c: Updated family 15 description, which had grown very stale.
2448 * cpuid.c: Generalized Intel Pentium D Processor 900 to 9x0.
2449 * cpuid.c: Added Processor Number info to Smithfield processors.
2450
2451 Wed Feb 8 2006 Todd Allen <todd.allen@etallen.com>
2452 * Made new release.
2453 * cpuid.c: Use defined(i386) instead of __LONG_MAX__ to determine
2454 whether or not it's necessary to use _llseek(). Fixes handling of
2455 functions >= 2**31 on some build systems, like the one I used to
2456 build the binary rpm. (D'oh!) And also indirectly affects the
2457 (synth) field.
2458 * cpuid.c: Fix a busted error check in read_reg() that caused it to
2459 return success if the read() failed and quiet was true.
2460 * LICENSE: Created LICENSE file (using content straight out of the
2461 man page).
2462
2463 Tue Feb 7 2006 Todd Allen <todd.allen@etallen.com>
2464 * Made new release.
2465 * cpuid.c: Correctly distinguish Egypt/Italy processors.
2466 * cpuid.c: Fixed minor problems in error checking in open_file().
2467 * cpuid.spec: Fixed bad Packager field.
2468 * cpuid.spec: Include ChangeLog.
2469 * cpuid.man: Added -r/--raw description.
2470 * cpuid.man: Clarified info used for (synth) field.
2471 * cpuid.man: Fixed version number & date.
2472 * Makefile: Reworked to make it easy for people other than me to build
2473 and install.
2474 * cpuid.spec: Used new Makefile organization
2475 * Makefile: Fixed production of spec file so that it's possible to
2476 rebuild with the srpm without having to specify %version and
2477 %release.
2478
2479 Mon Feb 6 2006 Todd Allen <todd.allen@etallen.com>
2480 * Initial public release.