how to change PCI IRQ?
Posted: Thu May 04, 2023 8:34 pm
Hi guys! I have 3 PCI devices inserted into pci slot. My OS is using the old PIC mode. And I checked the PCI IRQLine all these devices are using IRQ5. I want these 3 devices not to share the same IRQ number.
1. is it possible to change PCI IRQ? my understanding is at old PIC mode the interrupt goes from PCI device to PIC(8259A) and then goes to CPU. it will skip both the IO APIC and Local APIC, so no way to change , right?
2. another way is to make MSI/MSI-X working. So I enable the MSI control bit , write 0xFEE00000 to Message address(only 1 cpu is used), 0x26 to Message Data(I guess IRQ6 is 0x26) , install interrupt handler to IRQ6. But when interrupt happens the handler is not called. So I change the address to a RAM address, and I say the value 0x26 is written. I am sure that the MSI is working on the PCI side, but it is not working on CPU side. Does the Local APIC is not enabled under old PIC mode? if it is true, how to enable it?
I am using RTEMS/i386, the link is here(https://github.com/RTEMS/rtems/tree/mas ... i386/pc386).
1. is it possible to change PCI IRQ? my understanding is at old PIC mode the interrupt goes from PCI device to PIC(8259A) and then goes to CPU. it will skip both the IO APIC and Local APIC, so no way to change , right?
2. another way is to make MSI/MSI-X working. So I enable the MSI control bit , write 0xFEE00000 to Message address(only 1 cpu is used), 0x26 to Message Data(I guess IRQ6 is 0x26) , install interrupt handler to IRQ6. But when interrupt happens the handler is not called. So I change the address to a RAM address, and I say the value 0x26 is written. I am sure that the MSI is working on the PCI side, but it is not working on CPU side. Does the Local APIC is not enabled under old PIC mode? if it is true, how to enable it?
I am using RTEMS/i386, the link is here(https://github.com/RTEMS/rtems/tree/mas ... i386/pc386).