Я не программист драйверов, у меня нет четкого представления о том, как linux назначает номер irq для устройств pcie.
Из примера драйвера сетевого адаптера кажется, что Linux уже знает, какой номер irq должен быть использован до того, как была выполнена функция 'probe' или 'open'.
например:
https://github.com/torvalds/linux/blob/4608f064532c28c0ea3c03fe26a3a5909852811a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c#L6608
err = ixgbe_request_irq (адаптер);
ixgbe может получить номер irq, используя данные переменной 'adapter', это означает, что значение irq уже находится внутри структуры адаптера, это не сгенерированное число, это уже существующее значение.
если он читается из пространства конфигурации pci / pcie, разве не было очень легко конфликтовать с другими устройствами?
если оно сгенерировано / упорядочено ядром, как число irq уже внутри переменной 'adapter'? (или это назначено BIOS?)
Для прерывания для MSI, похоже, генерируется ядром ??