how to make PCI MSI working?
Posted: Thu Jun 01, 2023 3:20 am
Hello everyone. I am a new beginner to OS developer. when I am developping my OS, I got issues which is ralated to MSI interrupt.
in my os, I disabled legacy PIC and enabled APIC, and I also added HPET timer. all these devices interrupts are working well through APIC. But when I am trying to add MSI , I cannot get it working.
according to chapter 6.8 of <PCI local bus sepecification 2.3> , I write 0xFEE00000(only 1 cpu used) to message address register, 0 to upper address(this device supports 64bits address). and then write 0x26(I want to use IRQ6) to message data. and then set bit 0 of message control. set Interrupt Disable of PCI cmd register at last. connect ISR to IRQ6. when the trigger happens, no ISR is called.
can you help me how to fix this issue? it would be a great appreciate to you.
in my os, I disabled legacy PIC and enabled APIC, and I also added HPET timer. all these devices interrupts are working well through APIC. But when I am trying to add MSI , I cannot get it working.
according to chapter 6.8 of <PCI local bus sepecification 2.3> , I write 0xFEE00000(only 1 cpu used) to message address register, 0 to upper address(this device supports 64bits address). and then write 0x26(I want to use IRQ6) to message data. and then set bit 0 of message control. set Interrupt Disable of PCI cmd register at last. connect ISR to IRQ6. when the trigger happens, no ISR is called.
can you help me how to fix this issue? it would be a great appreciate to you.