linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Feng Tang <feng.tang@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H . Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Dave Hansen <dave.hansen@intel.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] tools/x86: add kcpuid tool to show raw CPU features
Date: Wed, 2 Sep 2020 17:40:18 +0200	[thread overview]
Message-ID: <20200902154018.GA21537@zn.tnic> (raw)
In-Reply-To: <1598514543-90152-1-git-send-email-feng.tang@intel.com>

On Thu, Aug 27, 2020 at 03:49:03PM +0800, Feng Tang wrote:
> output of the tool
> ------------------
> 
> 	CPUID leafs total: 28
> 
> 	cpu family	: 6
> 	model		: 13
> 	stepping	: 7

Yeah, this should dump model etc and those numbers should be in hex and
additionally in dec if people prefer them.

> 	CPU features
> 	------------
> 	 sse3
> 	 pclmlqdq
> 	 dtes64
> 	 mwait
> 	 ds_cpl
> 	 vmx
> 	 smx
> 	 eist
> 	 tm2
> 	 ssse3
> 	 cx16
> 	 pctxid
> 	 dca
> 	 sse4_1
> 	 sse4_2
> 	 x2apic
> 	 tsc_deadline_timer
> 	 aes
> 	 xsave
> 	 osxsave
> 	 avx
> 	 fpu
> 	 ...

I guess that's good for grepping. With a lot of leafs, leaf output
should probably be controlled by cmdline opts.

> [1] http://sr71.net/~dave/intel/stupid-cpuid.c
> 
> Originally-by: Borislav Petkov <bp@alien8.de>
> Suggested-by: Dave Hansen <dave.hansen@intel.com>
> Signed-off-by: Feng Tang <feng.tang@intel.com>
> ---
>  tools/arch/x86/tools/kcpuid/Makefile |  21 ++
>  tools/arch/x86/tools/kcpuid/kcpuid.c | 422 +++++++++++++++++++++++++++++++++++
>  2 files changed, 443 insertions(+)
>  create mode 100644 tools/arch/x86/tools/kcpuid/Makefile
>  create mode 100644 tools/arch/x86/tools/kcpuid/kcpuid.c

Let's drop the second "tools" from the path:

tools/arch/x86/kcpuid/Makefile
tools/arch/x86/kcpuid/kcpuid.c

> +struct reg_01_a {
> +	u32 stepping: 4;	/* bit 0 */
> +	u32 model: 4;
> +	u32 family: 4;
> +	u32 type: 2;
> +	u32 pad1: 2;
> +	u32 model_ext: 4;	/* bit 16 */
> +	u32 family_ext: 8;
> +};

Yeah, instead of defining a separate struct for each leaf I think it
would be smarter/better to have a text file in a machine parseable
format which defines your leafs.

When you need to add a new leaf, you simply extend the text file and the
tool parses it anew and has its all CPUID info uptodate. This way you
won't even have to recompile it. Adding new CPUID leafs would be adding new
lines to the file.

For example:

LEAF<num>,SUBLEAF<num>,[EAX,EBX,ECX,EDX]{[width]<Mnemonic>|<Long text>,...}

LEAF07,SUBLEAF00,EAX{[31:0]max_value|Max input value for supported subleafs}
LEAF07,SUBLEAF00,EBX{[0]FSGSBASE|RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE if 1.,
		     [1]TSC_ADJUST|IA32_TSC_ADJUST MSR is supported if 1.,
		     [2]SGX|Supports Intel® Software Guard Extensions (Intel® SGX Extensions) if 1.,
		     ...
}
LEAF07,SUBLEAF00,ECX{[0]PREFETCHWT1|(Intel® Xeon PhiTM only.),
		     [1]AVX512_VBMI|,
		     ...

This is just a dumb attempt but I hope it comes across where I'm getting
with this.

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

  reply	other threads:[~2020-09-02 15:40 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-27  7:49 [RFC PATCH] tools/x86: add kcpuid tool to show raw CPU features Feng Tang
2020-09-02 15:40 ` Borislav Petkov [this message]
2020-09-02 16:25   ` Dave Hansen
2020-09-02 16:52     ` Borislav Petkov
2020-09-02 17:18       ` Dave Hansen
2020-09-02 18:19         ` Borislav Petkov
2020-09-03  7:17   ` Feng Tang
2020-09-02 16:45 ` peterz
2020-09-02 16:52   ` Dave Hansen
2020-09-02 16:59     ` peterz
2020-09-02 16:55   ` Borislav Petkov
2020-09-02 17:01     ` peterz
  -- strict thread matches above, loose matches on Subject: below --
2020-07-21  2:00 Feng Tang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200902154018.GA21537@zn.tnic \
    --to=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=feng.tang@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).