11

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

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

这是一个短语,它实际上在现在的手册中,但它是模棱两可的:

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

我所知道的

A20M# 引脚本身已经消失,它曾经被 DMI 中的 VLW(Virtual Legacy Wire)接口所取代。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输入A20M引脚

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

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

EC GATEA20 输出

IT8586E /AX是联想的 EC(显然)。

所以 A20 线仍然可以在 Haswell 平台上被屏蔽,除非我误解了原理图。

因此,关于 A20M 方面的数据表并不完整。可能英特尔的 BIOS 编写器指南拥有一切。


我想知道的

可以在至少一个 Haswell 平台上禁用 A20 线吗?Skylake及其继任者呢?

我做了什么

我编写了一个简单的传统引导加载程序,它检查 A20 线是否已启用并尝试禁用它

  1. 如果 A20 线被禁用,则测试结束。A20 门功能存在于测试平台上。
  2. 否则,它会询问 BIOS支持的 A20 门方法,然后要求它禁用 A20 线(我信任 OSDev 的功能命名法,即启用与禁用什么东西,所以我希望调用禁用 A20线而不是掩蔽)
  3. 如果 BIOS 返回错误,程序通过 KBC 禁用 A20 线路,使用快速 a20 方法和端口0eeh方法。
  4. 再次测试 A20 线路状态。如果它仍然启用,请手动禁用它(除非它已经完成)并再次测试它。

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

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

4

3 回答 3

6

似乎至少有一个 Skylake 平台无法再禁用 A20 线。

除了我的测试之外,我还找到了我可以在网上找到的 Skylake 笔记本电脑的第一个示意图(Acer Swift SF314-51):

A20GATE信号连接

右边是 EC,它有一个A20GATE连接/拉到 +3VS。
我对这个示意图中的符号不​​太熟悉,但这些是唯一存在的 A20GATE 迹线,与 PCH 没有连接。

考虑到(根据数据表)PCH 不支持 A20 门仿真,这似乎是支持该平台上不存在 A20 屏蔽功能的有力证据

如果我正确理解了原理图并且仅证明存在最近的 x86 平台,其中 A20 掩码不再存在,则此推理是有效的。


在有人给出更完整的答案之前,我将不回答这个问题。

于 2020-01-27T16:16:54.917 回答
4

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

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

(重点是我的)。

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

于 2021-12-07T10:51:23.673 回答
3

VLW 甚至在 PCH 之前就存在作为“IOAPIC 虚拟线模式”,它通过 ICH DMI / APIC 总线模拟来自 8259A 的 INTR 输入,与将 8259A INTR 引导到 LINT 引脚 INTR 硬连线到的 LAPIC 虚拟线模式相反。“PIC 模式”绕过 LAPIC 直接到 BSP 逻辑内核的 INTR 引脚。

当第一个 PCH 到达时,Nehalem-EX 的Ibex PeakA20M#就消失了。它现在只能由 PCH 模拟为 VLW A20M 中断,并且VLW显然是独立于 IntLog/Phy 的未记录的 U2C(非核心到核心)IDI 操作码。VLW 由 Ubox/IIO 广播到所有内核(以及内部到 LAPIC),其方式与所有 LAPIC 共享 2 个 CPU LINT 引脚的方式相同(对于 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#pre-PCH(端口 92h 也可以触发A20M#)。A20M#是LINT的一个单独引脚,检测A20M#发生在宏指令边界。想必VLW也被所有核心吸收,在宏指令边界中断所有逻辑核心。A20M 中断 MSROM 处理程序可以像使用当前 IP 刷新和重新启动指令流一样简单,并启用新设置来更改 AGU 地址生成以屏蔽位,从而使地址回绕。由于它是电平敏感的,当它被置低时会有另一个中断。

这个 Haswell M上,A20GATE 在 LPC 接口上仍然是GA20,它也在你的Skylake U上。我不确定它是否在该示意图上连接,电线上没有 x,也没有定向网络标签,但 AG20GATE 网络标签在那里,这表明它已连接,但我不确定大蓝色的端子符号代表什么区别,与没有标签的电线相比,以及与带有标签符号和标签的电线相比。当它说不A20M#支持时,它表示物理引脚,但支持生成 VLW 的 IOAPIC。支持 A20GATE 直通,这意味着这些设备可以启用 A20 屏蔽。

于 2021-02-25T04:16:46.120 回答