【问题标题】:Linux: How to use the same interrupt to be handled by more than one CPU in parallelLinux:如何使用相同的中断由多个 CPU 并行处理
【发布时间】:2020-09-10 11:01:34
【问题描述】:

我想使用一个中断来同时触发多个核心的动作。

我有什么:

  • 在其上运行 Linux 的多核 SoC。
  • 内置在 SoC 平台上的定时器,位于 CPU 外部。
  • 可用的中断线很少

我已经尝试过(并且在一个 CPU 上工作正常):

来自用户空间的内核模块:

  • 找到正确的 irq 行 irq_of_parse_and_map()
  • request_irq()
  • 通过使用 __raw_writel() 直接写入其寄存器来启动定时器
  • 使用 irq_set_affinity_hint() 更改对其他 cpu 的亲和力

我尝试过但没有成功(多个 CPU 使用相同的中断):

  • 与上述步骤类似。
  • 使用 request_percpu_irq()、enable_percpu_irq() 和 free_percpu_irq() 而不是 request_irq()。

但是 request_percpu_irq() 总是返回 -22。

问题: 这是正确的方法吗?如果没有,我怎样才能让它正常工作。

【问题讨论】:

    标签: linux interrupt multicore


    【解决方案1】:

    更新: 最后,我使用 on_each_cpu() 函数来触发 isr 中每个核心的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-12
      • 2023-02-21
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多