pci: rework interrupt handling