Кажется, что прерывание не было выдано с моего устройства: я где-то читал, что на устаревших IRQ устройства соединены в цепочку на выводах IRQ 10 и 11. Таким образом, процессор / ядро не может сказать, какой из них выданIRQ.
Если я правильно понял, когда выдается IRQ, каждое устройство, имеющее устаревшие прерывания, должно сказать, было ли оно создано или нет.Это делается путем установки регистров, которые будут считываться драйвером, который сможет обрабатывать IRQ.И затем устройство, следующее за ним в списке, будет делать то же самое.
Поскольку я адаптировал свое устройство PCI QEMU, чтобы оно возвращало 0 для регистров, которые указывают, выдало ли устройство IRQ, IRQ проходит и отключается послетот.Поэтому я предполагаю, что это потому, что IRQ был выдан другим устройством.
Если кто-то считает, что это не настоящая причина, я был бы рад узнать, есть ли другая возможность:)
Спасибоснова @ peter-maydell за вашу помощь!