基于 PowerPC 970 的 Mac,为什么管理程序模式不可用?
PowerPC 970 Based Macs, Why Is Hypervisor Mode Unavailable?
我最近获得了一台 Apple G5 计算机 (PPC 970),并且有兴趣了解更多有关 PowerPC 架构的信息(我的大部分系统编程知识来自 x86 和我自己的爱好内核)。
在使用计算机一段时间并习惯了 PowerPC 汇编 (RISC) 之后,我注意到低级别 CPU 虚拟化在基于 PowerPC 970 的 Mac 上是不可能的。文档 (PowerPC 64) 中的 CPU 似乎支持 hypervisor 模式,但已注意到由于 Open Firmware 而不可能。
从 PowerPC 970 系列 Mac 上的 Open Firmware 加载的所有操作系统是否都以管理程序模式加载,从而使 "nested" 无法进行虚拟化?如果这是真的,为什么 Open Firmware 会在管理程序模式下加载所有操作系统?这是为了为操作系统和开放固件之间的通信提供一个安全层(除了 ACPI 和内存发现之外的所有东西都使用固件,这需要转换到 "real-mode",在 x86 中是不安全的?)。
此外,如果操作系统使用超级调用来促进安全地过渡到基于固件的例程,这不会像系统调用一样施加很大的惩罚吗?
我不了解 Apple 的硬件设计,但我听说 G5 中使用的 CPU 通过硬件禁用了 HV 模式(即机器状态寄存器中的 HV=1)机器。
如果是这种情况,则系统固件无法enable/disable HV 模式 - 它根本不可用。
在这些机器可用时,其他 Power 硬件设计在 HV=1 模式下有少量固件 运行,并且仅将 HV=0 暴露给内核。但是,G5 不是其中之一。
我最近获得了一台 Apple G5 计算机 (PPC 970),并且有兴趣了解更多有关 PowerPC 架构的信息(我的大部分系统编程知识来自 x86 和我自己的爱好内核)。
在使用计算机一段时间并习惯了 PowerPC 汇编 (RISC) 之后,我注意到低级别 CPU 虚拟化在基于 PowerPC 970 的 Mac 上是不可能的。文档 (PowerPC 64) 中的 CPU 似乎支持 hypervisor 模式,但已注意到由于 Open Firmware 而不可能。
从 PowerPC 970 系列 Mac 上的 Open Firmware 加载的所有操作系统是否都以管理程序模式加载,从而使 "nested" 无法进行虚拟化?如果这是真的,为什么 Open Firmware 会在管理程序模式下加载所有操作系统?这是为了为操作系统和开放固件之间的通信提供一个安全层(除了 ACPI 和内存发现之外的所有东西都使用固件,这需要转换到 "real-mode",在 x86 中是不安全的?)。
此外,如果操作系统使用超级调用来促进安全地过渡到基于固件的例程,这不会像系统调用一样施加很大的惩罚吗?
我不了解 Apple 的硬件设计,但我听说 G5 中使用的 CPU 通过硬件禁用了 HV 模式(即机器状态寄存器中的 HV=1)机器。
如果是这种情况,则系统固件无法enable/disable HV 模式 - 它根本不可用。
在这些机器可用时,其他 Power 硬件设计在 HV=1 模式下有少量固件 运行,并且仅将 HV=0 暴露给内核。但是,G5 不是其中之一。