【问题标题】:Detect extended supersection support on arm processor at runtime在运行时检测 arm 处理器上的扩展超截面支持
【发布时间】:2019-08-13 13:48:09
【问题描述】:

在其关于 AArch32 地址转换的部分中,ARMv8 手册描述了当处理器支持这种类型的扩展时,超节的基本物理地址如何达到 40 位大小。我一直无法确定在 AArch32 模式下运行的内核可以在运行时检测是否是这种情况。我是否遗漏了什么,或者这些信息是否只能通过编译内核的具体处理器类型隐式获得?

【问题讨论】:

    标签: arm mmu armv8


    【解决方案1】:

    既然 ARMv8 支持 64 位地址(带有物理总线),那么所有 ARMv8-A 都应该激活 LPAE 吗?

    对于某些 ARMv7,他们可能/可能没有 LPAE,而 AArch32 文档可能是其中一本手册的副本/粘贴。如果您尝试对更多 ARM cpus 通用,我相信 CP15 ID_MMFR0 具有此信息。其值为 VSMA 字段的 0b0101。它被称为支持长描述符,通常称为LPAE(用于大型物理地址扩展)。

    假设您尝试在 AArch32 中使用两级页表并物理寻址 40 位...

    ARMv8-A ARM 有关于超级节支持的文档,

    • ID_MMFR3_EL1 - 位 31:28
    • 0b0000 支持超部分。
    • 0b1111 不支持超部分。

    G5.3 翻译表

    • 短描述符格式
    • 最多 40 位的输出地址。
    • 通过使用具有 16MB 粒度的超节支持超过 32 位的 PA。

    长描述符始终支持 40 位地址。

    【讨论】:

    • 您提到的 VSMA 值意味着支持长描述符格式转换表条目。正如我所看到的,这与 40 位输出地址无关,因为它们也可以使用短描述符格式(请参阅“超节的翻译流程 (K7-5554)”)。但是你关于 Armv8 的观点可能是正确的,我会进一步研究一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多