mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [ANNOUNCE] x86-cpuid.org: A machine-readable CPUID repository
@ 2024-07-18 13:45 Ahmed S. Darwish
  2024-07-18 13:47 ` [PATCH v1 0/9] tools/x86/kcpuid: Complete the CPUID database Ahmed S. Darwish
  0 siblings, 1 reply; 20+ messages in thread
From: Ahmed S. Darwish @ 2024-07-18 13:45 UTC (permalink / raw)
  To: Borislav Petkov, Andrew Cooper, Ingo Molnar, Dave Hansen,
	H. Peter Anvin, x86, x86-cpuid
  Cc: Thomas Gleixner, Linus Torvalds, linux-kernel

On x86 CPUs, the "CPUID" instruction is used for runtime identification
of CPU features.  It takes as input a leaf number in the EAX register
and an optional subleaf number in the ECX register.  According to the
leaf and subleaf, certain information regarding CPU identification and
supported features will be returned as output through the EAX, EBX, ECX,
and EDX registers.

Due to the extensiveness and long history of the x86 architecture, the
amount of information that can be queried through CPUID is huge: now up
to 800+ bitfields, scattered over 52 CPUID leaves.  The returned
bitfield descriptions can also differ according to the x86 CPU vendor.

We would like to announce the x86-cpuid.org project, which aims to:

  1. Standardize a machine-readable language/syntax for describing the
     CPUID instruction output.

  2. Build an extensive database, in that machine-readable syntax,
     describing all the publicly-known CPUID bitfields output.

     Such a database will be properly maintained and act as the standard
     information source for multiple open-source projects downstream.

  3. Augment the CPUID database with usage hints for significant open
     source projects like the Linux Kernel and the Xen hypervisor.
     Usage hints for other projects can be easily added later.

  4. Provide code and data generators utilizing that CPUID database.

In the project's machine-readable repository, we have covered:

   - 52  CPUID leaves (and all their known subleaves.)
   - 835 CPUID bitfields description, filtered by x86 CPU vendor.

Attached to the above CPUID bitfield descriptions are:

   - 274 Linux kernel x86 feature flags (X86_FEATURE_* definitions)
   - 230 Linux kernel /proc/cpuinfo flags
   - 198 Xen hypervisor feature and attribute flags

We have developed multiple "code/data generators" utilizing the above
information for downstream projects.

The first generator produces a complete CSV bitfield file for the Linux
kernel's kcpuid utility under tools/arch/x86/kcpuid.  This upgrades the
tool to complete CPUID coverage, and a kcpuid series will be sent as a
threaded reply to this announcement.

The second generator produces C data structures for all CPUID leaves,
with detailed C99 bitfield members included.  We expect to use it to
standardize the CPUID registers representation across the Linux kernel's
x86 subsystem among other goals that are to be outlined in future
series, such as a dependency data model for the kernel's X86_FEATURE
flags.

The project's documentation is extensive, and can be found at:

  - https://gitlab.com/x86-cpuid.org/x86-cpuid-db

At plumbers last year, I've discussed the origin story of this effort:

  - https://lpc.events/event/17/contributions/1511/

At the x86 microconference this year, I should also provide an update on
future steps:

  - https://lpc.events/event/18/contributions/1762/

Thanks a lot,
Ahmed

--
Linutronix GmbH

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-08-02  7:28 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-18 13:45 [ANNOUNCE] x86-cpuid.org: A machine-readable CPUID repository Ahmed S. Darwish
2024-07-18 13:47 ` [PATCH v1 0/9] tools/x86/kcpuid: Complete the CPUID database Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 1/9] tools/x86/kcpuid: Remove unused variable Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 2/9] tools/x86/kcpuid: Properly align long-description columns Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 3/9] tools/x86/kcpuid: Set max possible subleaves count to 64 Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 4/9] tools/x86/kcpuid: Protect against faulty "max subleaf" values Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 5/9] tools/x86/kcpuid: Strip bitfield names leading/trailing whitespace Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 6/9] tools/x86/kcpuid: Recognize all leaves with subleaves Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 7/9] tools/x86/kcpuid: Parse subleaf ranges if provided Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 8/9] tools/x86/kcpuid: Introduce a complete cpuid bitfields CSV file Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish
2024-07-18 13:47   ` [PATCH v1 9/9] MAINTAINERS: Add x86 cpuid database entry Ahmed S. Darwish
2024-08-02  7:28     ` [tip: x86/misc] " tip-bot2 for Ahmed S. Darwish

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®