工具与软件:
您好!
在 AM6202 (在 tqma62xx SoC 上)上工作时、我看到 Linux 设备树 中有适用于 GiCv2 (GICC、GiCH、GiCV)的寄存器组。 但是我在技术手册中找不到这方面的信息、GICC 地址设置为0、转接器列出两次、这是奇数。
它是否与 GiCv2驱动程序向后兼容、如果是、GICC/H/V 使用的地址是什么?
感谢您的帮助。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
在 AM6202 (在 tqma62xx SoC 上)上工作时、我看到 Linux 设备树 中有适用于 GiCv2 (GICC、GiCH、GiCV)的寄存器组。 但是我在技术手册中找不到这方面的信息、GICC 地址设置为0、转接器列出两次、这是奇数。
它是否与 GiCv2驱动程序向后兼容、如果是、GICC/H/V 使用的地址是什么?
感谢您的帮助。
您好、Bin、
为了便于参考、我将使用 tq 在 Linux 内核6.1的 Yocto 构建中使用的 tqma62xx 的器件树(此处为 https://github.com/tq Linux-systems/linux-tqmaxx/blob/kirkstone.TQMa62xx.bsp.sw.0001/arch/arm64/boot/dts/ti/k3-am62-main.dtsi#L17)、尽管我看起来与6.13相同。
我提到这样一个事实,即 gicv3只需要分发和再分发寄存器。 因此、当将其用作 gicv3时、仅使用 GICD 和 GICR。 GICC/H/V 是 GiCv2寄存器、gicv3驱动程序不需要这些寄存器。 我想知道这些 GiCv2寄存器是之前版本的剩余部分、还是在某种兼容模式下的剩余部分;在这种情况下、我想知道重复 GICR 线路是否是有意为之、以及为 gicv2寄存器指定的地址是否正确。
由于我在文档中没有找到这些 GICC/H/V 寄存器的任何参考、因此我有点犹豫。
您好、Simon:
我不是回答您问题的 GIC 专家、但根据适用于 GIC-v3的内核 devicetree 绑定文档(见下方链接)、A53需要 GICC/H/V 寄存器区域、这正是 AM62x 器件所具有的。
您好、Simon:
我不是 GIC 专家、但我想这些值包含在 ARM GIC 手册中。
GICC/H/V 区域主要用于在 KVM 中模拟 GICv2、这在 Processor SDK 中基本上是无用的。 因此、我们可以认为它们是 devicetree fillers。
您可能还会注意到 k3-am62-main.dtsi 中 gic500节点的一个错误、即第二个和第三个"reg"区域与"GICR"重复。 这会导致内核 GIC 驱动程序获取错误的 GICC/H/V 区域数据、但不会导致任何问题、因为未使用 GICv2仿真。 我已将该错误报告给我们的软件开发团队、应该在将来的 SDK 中修复。
您好、Bin、
GIC 地址特定于 SoC、ARM 未对这些地址进行描述。 您是否知道是否有人可以确认这些寄存器(GICC/H/V)是否存在于硬件中? 如果是、在哪些地址?
看看其他 SoC 的设备树、有些节点具有这些寄存器、有些节点没有、这使我认为它们没有文档中建议的那样具有强制性(正如您指出的、如果使用了重分配器、由于复制该重分配器会导致 Linux 错误)。 但是、当它们存在时、所用地址通过了32位的完整性检查、这与我在上面链接的 DTS 中的情况不同(我以为 CPU 是0x0、但我出错了、它是0x100000000)。
实际上我只需要知道这些寄存器是否存在于 SoC 中、我需要在论坛上提问的原因是文档(它们所在的位置不存在)和器件树(它们所在的位置、但节点可疑)之间的差异。
谢谢你
您好、Simon:
我只需要知道这些寄存器是否存在于 SoC 中
无论寄存器是否存在、Linux 内核都不会使用它们。 DT 条目被传递到 GIC 驱动程序并分配给变量、但驱动程序不使用这些区域。