linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Nvidia nforce2 IRQ polarity with IO-APIC problem
@ 2003-07-26 18:26 Andrew de Quincey
  0 siblings, 0 replies; only message in thread
From: Andrew de Quincey @ 2003-07-26 18:26 UTC (permalink / raw)
  To: lkml

Hi, over the last week or so I have been developing a patch against 2.5.75 to 
fix the IRQ problems I was having with onboard devices on my Nvidia 
Nforce2-based Epox 8RDA+ motherboard.

It turned out that i386 linux was assuming all IRQs > 15 were active low, 
level, and programming the IO-APIC with these parameters.

However, on my board, it turned out this was not the case. They were actually 
active HIGH, level. My patch fixes the io_apic code in linux to use the IRQ 
resource definitions from ACPI to setup the APIC. With this, my onboard 
devices now work.

The next problem is more troublesome. PCI cards plugged into the expansion 
slots do not appear to transmit IRQs (I'm testing with a Netgear MA311 
wavelan card).

The PCI expansion slot IRQs are mapped to IO-APIC pins 16,17,18,19 (system 
IRQ#16,17,18,19). In the ACPI IRQ resource definitions, these are defined as 
active HIGH, level (whereas standard PCI IRQs are active LOW, level).

I suspected there might be an error in the ACPI definitions, so I tried 
hacking my patch to force IRQs 16->19 to active low. With this hack, I do see 
device IRQs, but I also see MILLIONS of spurious IRQs.... so the code in 
irq.c masks off the interrupts with the message "IRQ#18: nobody cared".

I went into windows and checked how it was programming the IO-APIC. It is 
programming it as per the ACPI definitions.... i.e. the PCI expansion device 
IRQs are set to active HIGH, level. The PCI cards work in windows perfectly.

Checking the chip documentation for the wavelan PCI device shows that 
(suprise!) it generates IRQs which are active low, level.

So. 

1) The motherboard is expecting IRQs which are active HIGH, level.
2) PCI expansion devices are generating active LOW, level IRQs.

Something must be missing between these two. Does anyone have any ideas what. 
As this is an nvidia chipset, I do not have documentation on the MCP-T 
southbridge chipset.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-07-26 18:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-26 18:26 Nvidia nforce2 IRQ polarity with IO-APIC problem Andrew de Quincey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).