Every computer person knows what an IRQ is. The dumb things are a legacy of the Intel Architecture, the underlying multitasking technology of all Intel-compatible personal computers. It has been a thorn in the side of computer techs for at least the last fifteen years.
I remember (not so fondly), back in the DOS/Windows 3.1 era, trying to configure various PnP devices to “play nice” with each other and not share the same IRQs, as this would generally lock up the system (for a lark, you could have Windows 95 try to configure PnP devices for you…) Scanner cards and soundcards were particularly notorious for not playing well together. You see there are only 15 IRQs, and only 7 are generally programmable by the users (numbers 3, 4, 5, 7, 9, 10 and 11; also 12 if you don’t use a PS/2 mouse). Since the hardware couldn’t be trusted to configure itself, one would have to properly program the BIOS to ensure that the pushy ISA cards would get the correct IRQs assigned.
When the PCI bus came about the miracle of IRQ routing allowed PCI devices to share IRQs and self configure. This was made more complicated by the fact that some PCI slots always share the same IRQ (usually the first one and the last one) and many onboard devices like LAN controllers and sound cards inherently share an IRQ with one of the PCI sockets. But old OSes like Windows 95 could not do PCI routing properly either so once again you would have to hack your BIOS, turn off things, force IRQs to certain devices and certain slots or physically shuffle the cards in the PCI sockets to ensure that there was no sharing of IRQs.
Windows 98 Second Edition greatly lessened the problems and modern OSes like Windows 2000 and Windows XP have no problems at all with PCI interrupt sharing and the like. They simply create virtual IRQs, up to 255 of them, and interoperability is ensured.
Well, so you would think.
The other day I get a computer in the shop with a professional grade sound controller that’s having playback problems. The Echo-Layla is a popular system used by music artists to record multiple audio channels and digitize them on to the PC, where programs like Sonar can be used to stitch them together into songs. A lot of modern music is now made in this way.
The sound system’s playback of recorded multitrack stuff was slightly broken with clicks and pops and other unwanted junk, as if the machine is having trouble keeping up with the data output. This is not likely as 16 channels of PCM wouldn’t really give a Pentium 3 much of a workout let alone an Athlon XP 2500.
Suggestions on the various support websites suggest that this is a common problem with the nForce 2 chipset, like the one found on the customer’s Asus A7N8X-DX mainboard. It’s owner, figuring it was a PCI bus problem (common with older sound systems) had already tried unsucessfully tuning his PCI latency timers with the tweaking tool Powerstrip. He fears that the Serial-ATA controller his hard drives are hooked up to is monopolizing the system resources somehow.
We spend about an hour pissing with the PCI latency timers and following various other suggestions on the websites to no avail. I notice on one of the many reboots that 1) there are a crapload of PCI devices, as with any modern system, and 2) the SATA controller and the sound controller were sharing an interrupt.
On a modern system Interrupt sharing is generally not a problem. In fact, the sheer number of user devices kind of makes it necessary: serial port, USB root hub, USB root hub, yet another root hub, firewire contoller, video controller, SATA controller, modem, LAN controller, sound controller, etc, etc… So some sharing of those seven IRQs definately has to happen. But maybe the fact that the sound contoller and the SATA controller are shaing an IRQ is causing the problem, like in the bad old days. I turn off a bunch of stuff, and physically move the Echo card to a different PCI socket so it wasn’t sharing with anything. And low and behold — the clicks and pops went away.
Anyway, fixing this unusual problem was a serious flashback to 1995 when I was doing the same things to keep Windows 95 boxes from crashing. Kind of curious that after all these years adapter cards still can’t place nice with each other in the playground of Intel Architecture.