维基百科引用了英特尔手册中的这一声明



这是一个短语,它实际上已经存在于当今的手册中,但是模棱两可:

  • A20M#是实际上仅指引脚还是指整个掩蔽物?
  • 许多指令(例如TXT GETSEC或VMX指令)的描述中都命名了A20M事件/中断。

  • 我所知道的

    A20M#引脚本身不见了,在某些时候被DMI中的VLW(虚拟旧版线)接口(interface)所取代。 DMI协议(protocol)足够丰富,可以包含用于声明各种旧式引脚的消息:



    此报价来自PCH系列8(哈斯韦尔时代)。

    迄今为止,PCH具有A20GATE直通功能。
    当PCH配置为捕获对旧式8042 IO端口(60h,64h)的访问并改为提供SMI(用于USB键盘/鼠标的PS2仿真)时,它可以选择让A20线路启用序列通过而不会被捕获。

    根据PCH的配置方式,这允许EC(移动设备)或SuperIO芯片(台式机)成为命令序列的目标。

    奇怪的是,PCH系列8(哈斯韦尔时代)数据表报告:



    但是,在LPC部分(连接EC/SuperIO的地方)中,这可能仅意味着PCH本身不会仿真A20门,而必须由外部芯片(EC或SuperIO)来处理它。

    在这种情况下,PCI必须具有要由外部芯片声明的引脚。数据表中没有提及任何内容。

    但是,我在中国站点的某个地方找到了我以前的Haswell笔记本电脑的示意图,该示意图显示该引脚(实际上是球)AN10(又称TP14)用作A20M输入引脚:

    x86 - 能否在Haswell及其后续产品上屏蔽A20生产线?-LMLPHP

    左侧的蓝色框标记为LYNX-POINT-DH82LPMS_BGA695。

    GATEA20信号的另一端来自EC(如预期的那样):

    x86 - 能否在Haswell及其后续产品上屏蔽A20生产线?-LMLPHP

    IT8586E/AX是Lenovo(显然)的EC。

    因此,除非我误解了原理图,否则在Haswell平台上仍然可以掩盖A20线。

    因此,关于A20M方面的数据表不完整。可能是《英特尔BIOS编写器指南》包含了所有内容。

    我想知道的

    是否可以在至少一个Haswell平台上禁用A20生产线?那么Skylake及其后继者呢?

    我做了什么

    I wrote a simple legacy boot loader that checks if the A20 line is enabled and try to disable it:
  • 如果禁用了A20线路,则测试结束。测试平台上具有A20门功能。
  • 否则,它将asks the BIOS支持的A20门方法,然后要求它disable the A20 line(我信任OSDev提供的功能命名,即enable vs disable-of-what what,所以我希望该调用禁用A20行而不是禁用 mask )
  • 如果BIOS返回错误,程序将使用快速a20方法和端口0eeh方法禁用通过KBC的A20行。
  • 再次测试A20线路状态。如果仍然启用,请手动将其禁用(除非已完成),然后再次进行测试。

  • 当我在Skylake笔记本电脑上运行此程序时,BIOS返回仅支持快速A20方法的操作,并且未显示任何错误,但仍启用了A20行。即使aver手动将其禁用,A20线路仍处于启用状态。

    我得出结论,不能在Skylake上禁用A20线,即它不再存在。

    最佳答案

    VLW甚至在PCH之前就已经存在,它是'IOAPIC virtual wire mode',它通过ICH DMI/APIC总线模拟8259A的INTR输入,这与将8259A INTR引导到LINT引脚INTR的LAPIC虚拟布线模式相反。 “PIC模式”直接将LAPIC旁路至BSP逻辑内核的INTR引脚。
    当第一个PCH到达时,Nehalem-EX的Ibex Peak消失了,A20M#消失了。现在,它只能由PCH模拟为VLW A20M中断,并且VLW显然是undocumented U2C (uncore to core) IDI opcode separate to IntLog/Phy。 VLW由Ubox/IIO(并在内部向LAPIC)广播到所有内核,其方式与所有LAPIC(用于INTR,NMI等,only one processor should have an unmasked LINT entry(作为ExtInt))共享2个CPU LINT引脚的方式相同。 LINT引脚直接连接到8259A流出的INTR和NMI源(PCH/DRAM),而IOAPIC消息是PCI VLW,它们通过DMI传输,以前是通过APIC总线传输)。 IOH SAD以前包含QPIPNCB以进一步过滤VLW-假定它现在存在于IIO中。我认为VLW传递给虚拟连接到INTR的LINT引脚的LVT LINT入口,如果LAPIC被禁用,则直接进入INTR
    EC的A20GATE is driven to the PCH是,这会导致A20M VLW或A20M# pre-PCH(端口92h也可以触发A20M#)。 A20M#是LINT和separate pindetection of A20M# happens at a macroinstruction boundary。大概VLW也被所有内核吸收,并在宏指令边界处中断所有逻辑内核。 A20M中断MSROM处理程序可以像使用当前IP刷新并重新启动指令流一样简单,并启用一个新设置,该新设置将更改AGU地址生成以掩盖该位,从而使地址换行。由于它是电平敏感的,因此在取消置位时还会有另一个中断。
    this Haswell M上,LPC界面上的A20GATE仍为GA20,它也位于Skylake U上。我不确定在该原理图上是否已连接,导线上没有x,也没有定向网络标签,但是那里有AG20GATE网络标签,这表明它已连接,但是我不确定它有多大蓝色的排序端子符号表示,与没有标签的电线比较,与带有标签符号和标签的电线比较,区别是什么。当它说不支持A20M#时,它表示物理引脚,但是支持生成VLW的IOAPIC。支持A20GATE直通,这意味着这些设备可以启用A20屏蔽。

    关于x86 - 能否在Haswell及其后续产品上屏蔽A20生产线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59919707/

    10-11 19:06