维基百科引用英特尔手册中的这一声明
A20M# 的功能主要由旧操作系统使用,现代操作系统不使用。在较新的 Intel 64 处理器上,A20M# 可能不存在。
这是一个短语,它实际上在现在的手册中,但它是模棱两可的:
A20M#
实际上是仅指引脚还是指整个掩蔽物 ?- A20M 事件/中断在许多指令(例如TXT
GETSEC
或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 输入引脚:
左侧的蓝光框标记为LYNX-POINT-DH82LPMS_BGA695。
GATEA20 信号的另一端来自 EC(如预期的那样):
IT8586E /AX是联想的 EC(显然)。
所以 A20 线仍然可以在 Haswell 平台上被屏蔽,除非我误解了原理图。
因此,关于 A20M 方面的数据表并不完整。可能英特尔的 BIOS 编写器指南拥有一切。
我想知道的
可以在至少一个 Haswell 平台上禁用 A20 线吗?Skylake及其继任者呢?
我做了什么
我编写了一个简单的传统引导加载程序,它检查 A20 线是否已启用并尝试禁用它:
- 如果 A20 线被禁用,则测试结束。A20 门功能存在于测试平台上。
- 否则,它会询问 BIOS支持的 A20 门方法,然后要求它禁用 A20 线(我信任 OSDev 的功能命名法,即启用与禁用什么东西,所以我希望调用禁用 A20线而不是掩蔽)
- 如果 BIOS 返回错误,程序通过 KBC 禁用 A20 线路,使用快速 a20 方法和端口
0eeh
方法。 - 再次测试 A20 线路状态。如果它仍然启用,请手动禁用它(除非它已经完成)并再次测试它。
当我在我的 Skylake 笔记本电脑上运行此程序时,BIOS 返回仅支持快速 A20 方法并且未发出错误信号,但 A20 线路仍处于启用状态。即使手动禁用它,A20 线仍然启用。
我得出的结论是 A20 线不能在 Skylake 上禁用,即它不再存在。