中断路由

中断矩阵将外设中断源路由到某个 HP 核的 CLIC 输入。这条路径中有三种编号:设备树中的矩阵中断源、分配的 CLIC 槽位和返回给驱动的 Linux IRQ 编号。它们属于不同的编号空间,不能将矩阵中断源编号直接当作 Linux IRQ。

保留的系统分配

所属模块 / 用途

HP 核

矩阵中断源

CLIC 槽位

分配用途

Linux IPI 门铃

0

65

40

每核软件中断

Linux IPI 门铃

1

66

40

每核软件中断

Linux SYSTIMER 事件

0

33

41

每核定时事件

Linux SYSTIMER 事件

1

34

41

每核定时事件

OpenSBI TIMERG0 定时器 1

0

26

48

M 模式专用空闲唤醒保护

OpenSBI TIMERG1 定时器 1

1

29

48

M 模式专用空闲唤醒保护

Linux 通用外设分配器使用 CLIC 槽位 16–47,其中 40 和 41 保留给本地 IPI 和定时器路由。OpenSBI 使用的槽位 48 不属于这个分配池。两个核上的相同槽位编号代表不同的核本地输入。 参见槽位常量、本地中断源与配置、分配器保留项及 OpenSBI 保护定时器定义。

两个 GPTimer 设备树节点都设置了 espressif,reserved-timer-mask = <2>。位 1 保留定时器 1,Linux counter 驱动会跳过该通道。保护定时器使用 40 MHz 晶振除以 40 的时钟,并设置 10,000 个计数周期的闹钟。 参见 DTS 保留配置及使用它的 GPTimer 驱动。

无线运行时加载后,其使用的中断源归无线运行时管理;相应 Linux IRQ 通过平台中断路径申请。它们不是上表之外的固定 CLIC 槽位保留项。

外设与 GPIO 路由

外设的 interrupts 属性指定矩阵中断源及触发类型。Linux 选择 CLIC 槽位,并将 Linux IRQ 返回给驱动。当前通用外设路由指向 HP 核 0;具体亲和性限制与处理函数规则见中断与 SMP。

GPIO 信号路由通过 pinctrl 和覆盖文件路由设置单独配置。参见覆盖文件目录。