PCI irq sharing and X on Linux

Javier Vizcaino (javizca@bbvnet.com)
Tue, 6 Jul 1999 11:11:17 +0200


Hi from Spain.

Sorry to disturb people in this list. This relates to: Linux
2.2.35, Riva128, XFree86, irq sharing.
I don't belong to the list, so I would appreciate any help
sent to my email. The question is if X 3.3.2 has problems
sharing PCI interrupts, and if, being the case, this is
solved in X 3.3.3.1. If you have patience to study the
problem, please read on.

In the book "Linux device drivers", on the chapter on
interrupt handling, it is mentioned that including SA_SHIRQ
flag when a driver installs its interrupt, the driver will
behave well as about interrupt sharing.

Because of a bunch of reasons (find the PC composition
below), I need to share IRQ11 between the PCI graphics card
and the PCI lan card, but I get genuine Linux crashes:
-If having done 'ifconfig ...' I start X.
-If having started X ('ifconfig ...' commented where
appropiate on rc.d), I do 'ifconfig ...'.
A hard reset is needed. I use ne2k-pci as module to support
the lan card (clone based on Realtek 8029AS chip). The
relevant line is:
if (request_irq(dev->irq, ei_interrupt, SA_SHIRQ, dev->name,
dev)) return -EAGAIN;
But I have no idea if X servers (SVGA for Elsa Victory
Erazor with Riva 128) are well behaved about interrupt
sharing. Do you know about this? Or do you guess if I miss
something?
Assigning on bios IRQ5 to the Elsa PCI slot (and not using
at all COM4/IRQ5 (see below)) all works perfectly in Linux
and X. Consider that the PC also boots in W98 and NT4 and
works perfectly on both (PCI irq sharing is admitted and,
moreless, documented in these operating systems).
Looking for related cases on the net, I see that people tend
to assign unique interrupts to devices, avoiding interrupt
sharing.

Sincerely, Javier Vizcaino.

P.D. The PC is MMX200 (switchable at 3x75 or 3x83) on Asus
TX97 mobo (Intel TX chipset), 96 MB, 4 GB (mobo primary IDE
IRQ14), sound ISA AWE32 (IRQ7, cuaternary IDE IRQ10 with CD
4X), CDROM 24X (mobo secondary IDE IRQ15), diskettes 1.44
and 1.2 (mobo, IRQ6), 4 COM's (COM1/IRQ4 and COM2/IRQ3 on
mobo, COM3/IRQ9 and COM4/IRQ5 on ISA card), 3 LPT's
(monochrome, mobo, ISA card), main VGA PCI Elsa Victory
Erazor (4 MB, Riva 128, IRQ11), second VGA PCI S3 Virge, ISA
monochrome adaptador, PS/2 mouse (mobo, IRQ12), USB mouse
(IRQ11), standard and USB keyboards, PCI lan card NE2000
type (chip Realtek 8029AS, IRQ11), bootable with lilo on the
MBR in W98 (FAT32), NT4-SP4 (NTFS) or Linux 2.2.35. Only in
W98 second VGA (S3) and USB devices are supported, but
interrupt sharing works, as well as in NT4. In Linux, with
'mdacon', I have a couple of virtual sessions on the
monochrome. There are two color monitors and a monochrome
one.
Assignable IRQ's: COM1/IRQ4, COM2/IRQ3, COM4/IRQ5,
sound/IRQ7, COM3/IRQ9, IDE4/IRQ10, lan-Elsa
graphics-USB/IRQ11 (PCI sharing), PS/2 mouse/IRQ12,
IDE1/IRQ14, IDE2/IRQ15. I plan to add other IDE disk, an
internal IDE Zip, a CDRW and a DVD, taking out the CD 4X,
and totalling six IDE devices. The case is a semitower with
three 5"1/4 bays. The CD/CDRW/DVD/1.2 floppy will total
four, so the 1.2 floppy, seldom used, is accessed at the
back of the PC (I cut the case and managed to fix the 1.2
floppy).

************************************
Javier Vizcaino. Ability Electronics. javizca@bbvnet.com
http://www.automodelismo.com http://ability53.hypermart.net
Starting point: (-1)^(-1) = -1
Applying logarithms: (-1)*ln(-1) = ln(-1)
Since ln(-1) <> 0, dividing: -1 = 1 (ln(-1) is
complex, but exists)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/