Allow Hyper-V to run on AMD when Windows 10 build 19640 or later is detected. Fixes #1777

This commit is contained in:
grossmj 2020-06-10 15:21:58 +09:30
parent e1dab0dff4
commit 3940f013d4

View File

@ -57,9 +57,10 @@ class HyperVGNS3VM(BaseGNS3VM):
if sys.getwindowsversion().platform_version[0] < 10: if sys.getwindowsversion().platform_version[0] < 10:
raise GNS3VMError("Windows 10/Windows Server 2016 or a later version is required to run Hyper-V with nested virtualization enabled (version {} detected)".format(sys.getwindowsversion().platform_version[0])) raise GNS3VMError("Windows 10/Windows Server 2016 or a later version is required to run Hyper-V with nested virtualization enabled (version {} detected)".format(sys.getwindowsversion().platform_version[0]))
if sys.getwindowsversion().platform_version[0] == 10 and sys.getwindowsversion().platform_version[1] == 0: is_windows_10 = sys.getwindowsversion().platform_version[0] == 10 and sys.getwindowsversion().platform_version[1] == 0
if sys.getwindowsversion().platform_version[2] < 14393:
raise GNS3VMError("Hyper-V with nested virtualization is only supported on Windows 10 Anniversary Update (build 10.0.14393) or later") if is_windows_10 and sys.getwindowsversion().platform_version[2] < 14393:
raise GNS3VMError("Hyper-V with nested virtualization is only supported on Windows 10 Anniversary Update (build 10.0.14393) or later")
try: try:
import pythoncom import pythoncom
@ -74,7 +75,11 @@ class HyperVGNS3VM(BaseGNS3VM):
raise GNS3VMError("Hyper-V is not installed or activated") raise GNS3VMError("Hyper-V is not installed or activated")
if conn.Win32_Processor()[0].Manufacturer != "GenuineIntel": if conn.Win32_Processor()[0].Manufacturer != "GenuineIntel":
raise GNS3VMError("An Intel processor is required by Hyper-V to support nested virtualization") if is_windows_10 and conn.Win32_Processor()[0].Manufacturer == "AuthenticAMD":
if sys.getwindowsversion().platform_version[2] < 19640:
raise GNS3VMError("Windows 10 (build 10.0.19640) or later is required by Hyper-V to support nested virtualization with AMD processors")
else:
raise GNS3VMError("An Intel processor is required by Hyper-V to support nested virtualization on this version of Windows")
# This is not reliable # This is not reliable
#if not conn.Win32_Processor()[0].VirtualizationFirmwareEnabled: #if not conn.Win32_Processor()[0].VirtualizationFirmwareEnabled: