Unable to get MSI interrupt from my e1000 card!

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
tonytian
Posts: 17
Joined: Tue Jul 12, 2011 2:53 pm

Unable to get MSI interrupt from my e1000 card!

Post by tonytian »

I set up the MSI address register with value 0xfee00000 and data register with 0x70 (my IDT vector). I also set the ENABLE bit in MSI control register. However, I cannot get any interrupt.

I verified the behavior of my network card by replacing 0xfee00000 with an RAM location. I can clearly see that my card is writing the vector to the specified location. So I believe the MSI setting of the card is correct and the card is actually doing PCI write transaction. The problem seems to be that the processor fails to pick up the interrupt. My understand is that when the destination is in local APIC range such as 0xfee00000, some chipset should be able to cache it and convert it to an interrupt message to CPU. But the interrupt handler installed at vector 0x70 is not invoked at all. I have checked whether local APIC has been enabled by reading MSR, which gives 0xfee00900. So the enable bit (bit 11) is also set. I don't know where I missed. Any ideas?
liaoo
Member
Member
Posts: 36
Joined: Wed Jun 13, 2012 8:37 pm

Re: Unable to get MSI interrupt from my e1000 card!

Post by liaoo »

Do you check the IRR/ISR in Local APIC to see if the corresponding bit is set or not ?
Nable
Member
Member
Posts: 453
Joined: Tue Nov 08, 2011 11:35 am

Re: Unable to get MSI interrupt from my e1000 card!

Post by Nable »

I hope that this post/topic would help in the process of understanding: http://forum.osdev.org/viewtopic.php?f= ... ta#p203973
Post Reply