Hypervisor detector for Windows

David Holmes david.holmes at oracle.com
Sat Jul 25 12:13:45 UTC 2020


Hi Yasumasa,

My recollection from reviewing this was that it was all based on vendor 
strings. Best to ask Matthias (cc'd) if you need more details.

Cheers,
David

On 25/07/2020 3:51 pm, Yasumasa Suenaga wrote:
> Hi all,
> 
> When I got hs_err log on Windows, I saw "HyperV virtualization detected" 
> in it in spite of running on host OS.
> 
> I tried to file it to JBS and to fix it, but I have some questions for 
> this.
> (This feature has been introduced in JDK-8219241)
> 
> 
>    - According to [1] (it is mentioned in the source code), we need to 
> check bit 31 in ECX when CPUID is called with EAX = 1h. Why it would not 
> do so?
> 
>    - Why would VM_Version::check_virtualizations() call CPUID with 
> 40000000h to 4000FF00h? 40000000h should be used if we want to get 
> vendor ID.
> 
>    - Why VM_Version::check_virt_cpuid() is separated for GNU C (GAS) and 
> MacroAssembler? I guess we can use MacroAssembler for x86 / x86_64.
> 
>    - In case of Hyper-V, host OS is treated as root partition [2], so we 
> cannot use this CPUID solution for Hyper-V. I guess we need to check it 
> with other solutions like [3].
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 
> [1] https://kb.vmware.com/s/article/1009458
> [2] 
> https://docs.microsoft.com/virtualization/hyper-v-on-windows/reference/hyper-v-architecture 
> 
> [3] 
> https://stackoverflow.com/questions/10544498/detect-the-virtualization-layer-from-a-guest-instancevm-vpc-or-hyper-v-in-c 
> 


More information about the hotspot-runtime-dev mailing list