kernel 2.4 以后的版本才支持把不同的硬件中断请求(IRQs)分配到特定的 CPU 上,这个绑定技术被称为 SMP IRQ Affinity. 更多介绍请参看 Linux 内核源代码自带的文档:linux-4.14/Documentation/IRQ-affinity.txt /proc/irq/{IRQ}/smp_affinity /proc/irq/{IRQ}/smp_affinity_list /proc/irq/{IRQ}/smp_affinity ...
kernel 2.4 以后的版本才支持把不同的硬件中断请求(IRQs)分配到特定的 CPU 上,这个绑定技术被称为 SMP IRQ Affinity. 更多介绍请参看Linux内核源代码自带的文档:linux-4.14/Documentation/IRQ-affinity.txt /proc/irq/{IRQ}/smp_affinity /proc/irq/{IRQ}/smp_affinity_list /proc/irq/{IRQ}/smp_affinity 指...
IRQ handler 中会调用 napi_schedule(),然后启动 NAPI poll(), 这里需要注意,虽然 IRQ handler 做的事情非常少,但是接下来处理这个包的 softirq 和 IRQ 在同一个 CPU 运行。这就是说,如果大量的包都放到了同一个 RX queue,那虽然 IRQ 的开销可能并不多,但这个 CPU 仍然会非常繁忙,都花在 softirq 上了。
* @suspended: Flag holding the device's PM status * @send_count: Number of bytes still expected to send * @recv_count: Number of bytes still expected to receive * @curr_recv_count: Number of bytes to be received in current transfer * @irq: IRQ number * @input_clk: Input clock to ...
因为每个 RX 队列有独立的 MSI-X 中断,因此可以被不同的 CPU 处理(通过 irqbalance 方式,或者修改/proc/irq/IRQ_NUMBER/smp_affinity)。处理中断的 CPU 也是随后处理这个包的 CPU。这样的话,从网卡硬件中断的层面就可以设置让收到的包被不同的 CPU 处理。
调用local_irq_save(flags),会禁止全局中断,并把当前的禁止状态保存在标志变量中,local_irq_restore用来恢复中断,并通过保存的flag状态字恢复原先的中断状态。 设备树中断信息 针对GIC而言,设备树的节点信息在文档中有说明(Documentation/devicetree/bindings/arm/gic.txt。主要内容如下: ...
关于设备数的各个字段含义,详细可以参考 Documentation/devicetree/bindings 下的对应信息。 初始化 1. irq chip driver 的声明: IRQCHIP_DECLARE(gic_v3,"arm,gic-v3",gic_of_init); 定义IRQCHIP_DECLARE 之后,相应的内容会保存到 __irqchip_of_table 里边: ...
正常情况下,console 中应该打印类似信息:<module_name> at mapped to , irq=<IRQ number> 运行cat /proc/interrupts后应该可以看到新注册的中断的虚拟中断号、硬件中断号(device-tree 的中断号 + 32)、中断源模块名称等信息。 2. 总结 新的Kernel 中虽然会...
关于设备数的各个字段含义,详细可以参考 Documentation/devicetree/bindings 下的对应信息。 初始化 1. irq chip driver 的声明: IRQCHIP_DECLARE(gic_v3,"arm,gic-v3", gic_of_init); 定义IRQCHIP_DECLARE 之后,相应的内容会保存到 __irqchip_of_table 里边: ...
光有高级可编程中断控制器的硬件支持还不够,Linux 内核还必须能利用到这些硬件特质,所以只有 kernel 2.4 以后的版本才支持把不同的硬件中断请求(IRQs)分配到特定的 CPU 上,这个绑定技术被称为 SMP IRQ Affinity. 更多介绍请参看 Linux 内核源代码自带的文档:linux-2.6.31.8/Documentation/IRQ-affinity.txt ...