成员投稿

锐龙AMD Ryzen处理器不能正常启动Windows XP操作系统的原因

这里介绍锐龙AMD Ryzen处理器不能正常启动Windows XP操作系统的原因。
Intel自奔腾处理器开始支持虚拟8086模式扩展指令集VME。这个指令一开始是需要保密协议才能获取说明的。
虚拟8086模式使得x86处理器能够在32位保护模式操作系统内运行16位的实模式代码。
VME的用例主要有下面几个:

  • 多款在x86处理器上运行的32位Windows NT(版本号>=4)操作系统内的MS-DOS虚拟机;
  • Windows XP/2003的通用VBE(VESA BIOS扩展)显卡驱动程序;
  • 其他32位操作系统,如OS/2 Wrap内的MS-DOS虚拟机;
  • 多款DOS操作系统内的EMM内存管理程序,如FreeDOS的JemmEx内存管理器等。



锐龙AMD Ryzen处理器的VME实现存在Bug,导致中断向量被重定向至错误的地方,这会导致系统不稳定直至死机。

试图在Ryzen处理器上启动Windows XP时,系统因为初始化通用显卡驱动时执行VME指令出现问题,会导致系统无法正常启动。这个问题不仅在实机运行会出现,在虚拟机中运行时也会出现。

情况更糟糕的是,在虚拟机运行该指令甚至会导致宿主机崩溃。



有个办法能缓解该问题。在虚拟机宿主中设置CPUID指令返回的0x00000001平面的EDX寄存器的值的第1位为0,Windows XP似乎就能正常启动了,但是其功能还是会受到影响。


http://bbs.nga.cn/read.php?&tid=12063375


剧毒术士马文

留学中 Comp.Arch|RISCV|HPC|FPGA 最近沉迷明日方舟日服 联系方式请 discord 或者 weibo 私信。目前不在其他平台活动。 邮箱已更新为[email protected]。 看板娘:ほし先生♥

相关文章

27 评论

  1. 有说法称AGESA 1.0.0.6已修复这个Bug?
    https://www.reddit.com/r/Amd/comments/6et9lg/heisede_amd_confirmed_to_fix_vme_bug_with_agesa/

      1. @剧毒术士马文:我的B350M Mortar BIOS版本号是1.5,问题依然存在。
        尝试安装OS/2 Warp时会报SYS3170和SYS3175错误。

      2. @剧毒术士马文:还有一种可能性。
        AGESA是以源代码方式发行的。
        某些主板厂商可能合并了所有的1.0.0.6改动,某些厂商只更新了一部分,所以会出现不同的结果。

        1. @轮子妈:AMD说会在AGESA1006解决
          但有其他人也说1006没有解决VMEbug

          1. @剧毒术士马文:youtuber Level1tech在KVM上跑VM,用Windows 10和GPU Passthrough跑分。
            网址:https://www.youtube.com/watch?v=aLeWg11ZBn0
            你所说的BUG是视频里所提到的问题吗?

          2. @IAREPETER:Wendell说的是另一码事
            VME bug只存在于上古时代的操作系统

          3. @剧毒术士马文:另外一些关于微码版本的信息:
            http://www.os2museum.com/wp/vme-fixed-on-amd-ryzen/

          4. @我土鳖我自豪:选择权在OEM和厂商
            As expected, AMD fixed the problem with VME that affected Ryzen processors. The fix is shipped in the form of a microcode patch as part of AGESA 1.0.0.6, currently being rolled out by OEMs as part of a BIOS update. Which means that depending on the OEM and board, a fix may or may not be available for a given system today.
            The patch level for the fixed microcode is 8001126 or higher. The older microcode revision 800111C (part of AGESA 1.0.0.4a) is known to have trouble with VME.

          5. @剧毒术士马文:不知道有没有什么办法可以看BIOS里整合的微码的版本……

  2. 不应该呀,AMD这都没测试出来,虚拟机用户那么多,晕

    1. @熊猫:cpuid.1.edx = “—-:—-:—-:—-:—-:—-:—-:—0-”
      参照我上一篇VMware CPUID阉割处理。

  3. 我有需要用虚拟机,前几天才买了r5 1500x,看到这个新闻有点后悔
    这几天win10蓝屏了3次以上,各种原因也不知道是不是ryzen的问题

    1. @kr:win10没问题的,我一直在用。第一波预约时买的。你仔细说说你的配置,另外建议用U盘完全重装一遍,听说win7升级的不稳定。

      1. @amdfan:我的系统就是全新安装的……主板是自检超慢星b350m bazooka
        有一次蓝屏是无线网卡造成的,然而同一个网卡在intel本子上用一点问题都没

    2. @kr:我可以很负责任地告诉你:Windows 10系统问题无疑。我的是i7-4790,W10 1607版本蓝屏次数不少于10次的路过,现已换回W7系统。

    1. @轮子妈:置顶的话才能上首首页,首页已经挂满了。。。

      1. @剧毒术士马文:搞了个大新闻。。
        老外写了一些更详细的文章,并且提供了各种错误截图。

      2. @剧毒术士马文:另外你可以直接编辑嘛。
        我在本站发的文章如果没有说明都遵循WTFPL。

      1. @ayu:还有人蛋疼地要装OS/2 Warp呢。
        永远不要低估用户的需求。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部按钮