1
我正在使用PCIe Linux驱动程序。我想为设备注册一个ISR。由Linux系统分配给设备的IRQ编号为16,也由其他(USB主机控制器)设备共享。 (通过lspci -v检查)。这是一个基于引脚的中断。PCIe中断处理linux内核
通过在线搜索,我发现几乎所有PCI驱动程序示例仅在API request_irq()中仅提供IRQF_SHARED作为标志,并且不提供任何其他标志来提及高/低级别中断的行为。
我的问题是,Linux内核如何确定共享中断(对于PCIe设备)的行为,如果它是低电平或高电平?
在我的情况下,我没有使用MSI。如果我向IRQF_TRIGGER_HIGH/LOW请求带IRQF_TRIGGER_HIGH/LOW标志的IRQ,系统会抛出错误“genirq:Flags mismatch”,因为IRQ已经被具有不同标志值的另一个设备共享。所以想了解Linux系统如何处理这种类型的共享中断。有没有描述这些事情的文件? –
进入内核中的一些更深层的机器特定代码。大部分将由BIOS或低级固件(或平台初始化代码)设置它,内核将适当地使用这些值。 –