Skip to content

Conversation

@dlenski
Copy link
Contributor

@dlenski dlenski commented Nov 21, 2025

Per https://en.wikipedia.org/wiki/CPUID#EAX=4000'0000h-4FFFF'FFFh:_Reserved_for_Hypervisors:

CPUID leaves 40000000h to 4FFFFFFFh are not implemented in hardware, and
are reserved for use by hypervisors to provide hypervisor-specific
identification and feature information through this interception
mechanism.

For leaf 40000000h, the hypervisor is expected to return the index of the
highest supported hypervisor CPUID leaf in EAX, and a 12-character
hypervisor ID string in EBX,ECX,EDX (in that order). For leaf 40000001h,
the hypervisor may return an interface identification signature in EAX -
e.g. hypervisors that wish to advertise that they are Hyper-V compatible
may return 0x31237648—"Hv#1" in EAX.

For example, running with user-mode QEMU:

$ qemu-x86_64 cpuid-dump
…
CPUID 40000000: 40000001-54474354-43544743-47435447 [TCGTCGTCGTCG]
CPUID 40000001: 00000000-00000000-00000000-00000000
…

Running under a recent version of WSL2 (Microsoft Hyper-V):

$ cpuid-dump
…
CPUID 40000000: 4000000B-7263694D-666F736F-76482074 [Microsoft Hv]
CPUID 40000001: 31237648-00000000-00000000-00000000 [Hv#1]
…
CPUID 4000000B: 00000000-00000000-00000000-00000000

Per https://en.wikipedia.org/wiki/CPUID#EAX=4000'0000h-4FFFF'FFFh:_Reserved_for_Hypervisors:

> CPUID leaves 40000000h to 4FFFFFFFh are not implemented in hardware, and
> are reserved for use by hypervisors to provide hypervisor-specific
> identification and feature information through this interception
> mechanism.
>
> For leaf 40000000h, the hypervisor is expected to return the index of the
> highest supported hypervisor CPUID leaf in EAX, and a 12-character
> hypervisor ID string in EBX,ECX,EDX (in that order).  For leaf 40000001h,
> the hypervisor may return an interface identification signature in EAX -
> e.g. hypervisors that wish to advertise that they are Hyper-V compatible
> may return 0x31237648—"Hv#1" in EAX.

For example, running with user-mode QEMU:

```
$ qemu-x86_64 cpuid-dump
…
CPUID 40000000: 40000001-54474354-43544743-47435447 [TCGTCGTCGTCG]
CPUID 40000001: 00000000-00000000-00000000-00000000
…
```

Running under a recent version of WSL2 (Microsoft Hyper-V):
```
$ cpuid-dump
…
CPUID 40000000: 4000000B-7263694D-666F736F-76482074 [Microsoft Hv]
CPUID 40000001: 31237648-00000000-00000000-00000000 [Hv#1]
…
CPUID 4000000B: 00000000-00000000-00000000-00000000
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant