29.5. Linux/x86-64 下 CPU 热插拔的固件支持

Linux/x86-64 现在支持 CPU 热插拔。由于各种原因,Linux 希望在启动时预先知道可以插入系统的最大 CPU 数量。 ACPI 3.0 目前没有官方方法将此信息从固件提供给操作系统。

在 ACPI 中,每个 CPU 在 MADT 表中都需要一个 LAPIC 对象 (ACPI 3.0 规范中的 5.2.11.5)。 ACPI 已经具有通过将 LAPIC 对象中的 Enabled 位设置为零来禁用 LAPIC 对象概念。

对于 CPU 热插拔,Linux/x86-64 现在期望任何未来可能的热插拔 CPU 已经存在于 MADT 中。 如果 CPU 尚未可用,则应将其 LAPIC Enabled 位设置为 0。 Linux 将使用禁用的 LAPIC 的数量来计算未来 CPU 的最大数量。

在最坏的情况下,用户可以使用命令行选项(additional_cpus=...)覆盖此选择,但建议在 MADT 中提供正确的数量(或对其进行合理的近似,倾向于更多而不是更少),以避免手动配置。