Haswell及其后继处理器是否仍然可以屏蔽A20线?

14

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

A20M# 的功能主要由旧操作系统使用,现代操作系统不使用。在新的 Intel 64 处理器上,可能不存在 A20M#。

这是一个现在实际上在手册中存在但含义模糊的短语:

  1. A20M# 实际上是指仅引脚还是整个屏蔽过程?
  2. A20M 事件/中断在许多指令的描述中命名(例如 TXT GETSEC 或 VMX 指令)。

我知道的信息

A20M# 引脚本身已经消失,它曾经被 DMI 中的 VLW(虚拟遗留线)接口所取代。DMI 协议足够丰富,可以有关于断言各种传统引脚的消息:

PCH 支持 VLW 消息作为向处理器传递以下传统边带接口信号状态的替代方法: • A20M#、INTR、SMI#、INIT#、NMI

该引用来自 PCH 系列 8(Haswell 时代)。


到目前为止,PCH具有A20GATE Pass-Through功能。当PCH被配置为捕获对传统的8042 IO端口(60h、64h)的访问并提供SMI(用于模拟USB键盘/鼠标的PS2),它可以选择让A20线启用序列通过而不被捕获。根据PCH的配置方式,这允许EC(移动设备)或SuperIO芯片(台式机)成为命令序列的目标。

有趣的是,PCH系列8(Haswell时代)数据表报告:

注意:不支持A20M#功能。

在LPC部分(EC / SuperIO连接的部分),这可能仅意味着PCH本身不会模拟A20门,而必须由外部芯片(EC或SuperIO)处理它。

如果是这种情况,PCI必须有一个由外部芯片断言的引脚。数据表没有提到任何信息。

但是,我在某个中国网站上找到了我的上一台Haswell笔记本电脑的原理图,并且原理图显示引脚(实际上是球)AN10(又名TP14)用作A20M输入引脚:

PCH input A20M pin

左侧的蓝色盒子标记为LYNX-POINT-DH82LPMS_BGA695

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

EC GATEA20 output

{{IT8586E/AX}}是联想的一个EC芯片(显然)。
因此,除非我对原理图的解释有误,否则在Haswell平台上仍然可以屏蔽A20线。
因此,关于A20M方面,数据手册并不完整。可能Intel的BIOS编写指南已经涵盖了所有内容。

我想知道的

至少在Haswell平台上,A20线路是否可以被禁用?Skylake及其后续版本呢?

我的做法

我编写了一个简单的传统引导程序来检查A20线路是否已启用并尝试将其禁用

  1. 如果A20线路已禁用,则测试结束。A20门功能存在于测试平台上。
  2. 否则,询问BIOS支持的A20门方法,然后请求其禁用A20线路(我相信操作系统开发人员对函数名称的命名,即启用与禁用-什么的事情,因此我希望该调用禁用A20 线路而不是掩码)
  3. 如果BIOS返回错误,则程序通过KBC、快速A20方法和端口0eeh方法禁用A20线路。
  4. 再次测试A20线路状态。如果仍然启用,请手动禁用(除非已经禁用)并再次测试。

当我在Skylake笔记本电脑上运行此程序时,BIOS返回仅支持快速A20方法,并且没有报错,但A20线路仍处于启用状态。即使手动禁用它,A20线路仍处于启用状态。

我得出结论,Skylake处理器上无法禁用A20线,即它已经不存在了。

3个回答

6

看起来至少有一个Skylake平台不能再禁用A20线了。

除了我的测试之外,我找到了在线上可以找到的第一款Skylake笔记本电脑的原理图(Acer Swift SF314-51):

A20GATE信号连接

在图中右边的是EC,其中一个连接/拉高到+3VS。
我不太熟悉这个原理图中的符号,但这些是仅存在的A20GATE迹线,没有连接到PCH。

考虑到(根据数据手册),PCH没有支持A20门模拟,这似乎是支持该平台不存在A20 masking特性的强有力证据

只有在正确理解原理图的情况下,这种推理才是有效的,并且仅证明存在新的x86平台不存在A20 masking特性


在别人给出更完整的答案之前,我会将此问题保留未回答。


4

《英特尔SDM》第3卷8.7.13.4节(外部信号兼容性)(2021年4月版)指出:

A20M#的功能主要由旧操作系统使用,而现代操作系统不使用。 在新的Intel 64处理器上,A20M#可能不存在。

(强调是我的)。

它没有指定何时删除,但您可以假设从某个时间点开始将不可用。


3

在PCH之前,VLW就已经存在了,它作为'IOAPIC虚拟线模式'存在,通过ICH DMI / APIC总线模拟了8259A的INTR输入,而不是将8259A的INTR直接指向LINT引脚的LAPIC虚拟线模式。'PIC模式'将LAPIC直接绕过,将INTR引脚直接连接到BSP逻辑核心。

当第一个PCH到达时,Ibex Peak用于Nehalem-EX,A20M#消失了。现在它只能被PCH模拟为VLW A20M中断,并且VLW显然是一个未记录的U2C(uncore to core)IDI操作码,与IntLog/Phy分离。VLW由Ubox/IIO广播到所有核心,以与2个CPU LINT引脚相同的方式共享所有LAPIC(用于INTR、NMI等,只有一个处理器应该有未屏蔽的LINT条目(作为ExtInt))(而那些LINT引脚直接连接到从8259A发出的INTR,以及NMI源(PCH / DRAM),而IOAPIC消息是通过DMI传输的PCI VLW,以前是通过APIC总线)。IOH SAD曾经包含QPIPNCB来进一步过滤VLW - 现在假定它存在于IIO中。我认为VLW被传递到与其虚拟连接的INTR的LINT引脚的LVT LINT条目,如果LAPIC被禁用,则直接转到INTR。

A20GATE被EC驱动到PCH,这会导致A20M VLW或A20M#在PCH之前触发(Port 92h也可以触发A20M#)。A20M#是一个独立的引脚,连接到LINT,检测A20M#的发生发生在宏指令边界处。可能VLW也被所有核心吸收,并在宏指令边界处中断所有逻辑核心。 A20M中断MSROM处理程序可能非常简单,只需要用当前IP刷新和重新启动指令流,并启用新的设置来更改AGU地址生成,以屏蔽该位以使地址回绕。由于它是电平触发的,当它被取消时会再次触发另一个中断。

这里的Haswell M上,A20GATE仍然在LPC接口上以GA20的形式存在,在Skylake U上也是如此。我不确定它是否连接在原理图上,线路上没有x和有方向的网络标签,但AG20AGET净标签在那里,这表明它是连接的,但我不确定大蓝色的终端符号代表什么,与没有标签和具有标签符号以及标签的导线相比有什么区别。当它说A20M#不受支持时,它指的是物理引脚,但IOAPIC生成VLW是受支持的。 A20GATE直通被支持,这意味着这些设备可以启用A20掩码。

感谢您的研究,但如果您在顶部进行总结,例如“现代CPU /芯片组仍然存在A20gate机制,但不清楚是否始终使用”,对大多数读者会更有用。我认为这可能是您的意思。这篇长篇文字似乎是支持简单答案的推理,但您缺少任何明确陈述答案的简单声明,至少没有突出的地方。 - Peter Cordes
非常有趣的答案,特别是PCH<->Cores部分。我知道电线被DMI协议取代了,但知道详细情况还是很好的。关于A20门的EC<->PCH部分仍然存在疑问。在你和我两个示意图上都有相同的符号,我们都不确定它们确切的含义。然而,当一根电线连接时,它会用那些红色尖刺状的矩形标记(根据信号是输入、输出还是双向)。来自EC的A20GATE信号进入一个蓝色圆圈(其他蓝色元素属于上面的两个信号,它们重叠)。 - Margaret Bloom
我写道,我测试了启用和禁用A20,并没有发现任何区别,因此我将缺少红色尖锐矩形解释为“ A20GATE不是EC / SuperIO的功能输出信号”。 - Margaret Bloom
@MargaretBloom 我不知道#代表低电平使能,也就是说它的含义与信号上有补码时相同(这是我所知道的唯一命名法),我以为它只是一种表示物理信号而非逻辑信号的约定。我正在写一些东西,你可能可以纠正我:https://dev59.com/_WPVa4cB1Zd3GeqP65LH#67264559 - Lewis Kelsey
我认为红色尖角矩形(五边形)实际上意味着它被内部驱动,外部驱动(如果朝外)和内外驱动(如果是六边形形状)。 我认为该矩形连接到具有与黑标签和相对矩形相同黑色标签名称的外部矩形,然后红色网络名称还另外连接到原理图侧面的某个延伸部分,例如带有相同红色网络名称的下拉电阻器。 - Lewis Kelsey
在我即将发送的原理图中,例如,有时您会看到一个黑色标签和矩形也连接到拉电阻。您是正确的,A20GATE在那个特定的原理图上没有连接,我认为这是因为它只连接到一个上拉电阻(红色网络标签),并且没有一个带有黑色标签的矩形连接到PCH。它在这个cannon lake PCH上连接到一个“BD连接器”,导致SMBALERT#面向PCH错误。 - Lewis Kelsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接