All of lore.kernel.org
 help / color / mirror / Atom feed
* how to tell Linux *not* to share IRQs ?
@ 2001-07-25 23:23 Scott McDermott
  2001-07-25 23:37 ` Alan Cox
  0 siblings, 1 reply; 13+ messages in thread
From: Scott McDermott @ 2001-07-25 23:23 UTC (permalink / raw)
  To: linux-kernel

I cannot for the life of me get Linux to use all the available IRQs; it
insists on sharing IRQs even though there are enough available to give
each PCI device a separate one.

I have a system which I'm configuring as a gateway; it has three 3c509B
NICs, an AIC7892 SCSI card and an ATI 128 AGP.  I'm getting interrupts
shared between the SCSI and video card, and two of the NICs are sharing
an interrupt as well (the third takes its own).  There are IRQs
available to give each of these devices a different IRQ, but Linux won't
do it on this hardware it seems.  System is a UP Dell T800r.

I have tried using PnP OS setting in BIOS, non-PnP OS, disabling
parallel and USB, giving all manner of "pci=" kernel parameters, tried
with APIC and without (even though it's UP, it seems to still use it if
enabled), and tried lots of "pirq=" lines (although I gather that's only
relevant with SMP?).  If I move the cards around they change IRQs and
even use different IRQs which are unused with different slot
configuration, but they always share interrupts.

Is there some way to tell Linux "don't even boot if you have to share an
IRQ?"

Here's lspci presently:

   00:00.0 Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge (rev 03)
           Flags: bus master, medium devsel, latency 64
           Memory at f4000000 (32-bit, prefetchable) [size=64M]
           Capabilities: [a0] AGP version 1.0

   00:01.0 PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev 03) (prog-if 00 [Normal decode])
           Flags: bus master, 66Mhz, medium devsel, latency 128
           Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
           I/O behind bridge: 00009000-00009fff
           Memory behind bridge: f0100000-f01fffff
           Prefetchable memory behind bridge: f8000000-fbffffff

   00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 02)
           Flags: bus master, medium devsel, latency 0

   00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) (prog-if 80 [Master])
           Flags: bus master, medium devsel, latency 64
           I/O ports at 1000 [size=16]

   00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) (prog-if 00 [UHCI])
           Flags: bus master, medium devsel, latency 64, IRQ 9
           I/O ports at 1020 [size=32]

   00:07.3 Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 02)
           Flags: medium devsel, IRQ 9

   00:0e.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone]
           Subsystem: 3Com Corporation 3C905B Fast Etherlink XL 10/100
           Flags: bus master, medium devsel, latency 80, IRQ 10
           I/O ports at 1080 [size=128]
           Memory at f0000000 (32-bit, non-prefetchable) [size=128]
           Expansion ROM at <unassigned> [disabled] [size=128K]
           Capabilities: [dc] Power Management version 1

   00:0f.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone]
           Subsystem: 3Com Corporation 3C905B Fast Etherlink XL 10/100
           Flags: bus master, medium devsel, latency 80, IRQ 7
           I/O ports at 1400 [size=128]
           Memory at f0000400 (32-bit, non-prefetchable) [size=128]
           Expansion ROM at <unassigned> [disabled] [size=128K]
           Capabilities: [dc] Power Management version 1

   00:10.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone]
           Subsystem: 3Com Corporation 3C905B Fast Etherlink XL 10/100
           Flags: bus master, medium devsel, latency 80, IRQ 9
           I/O ports at 1480 [size=128]
           Memory at f0000800 (32-bit, non-prefetchable) [size=128]
           Expansion ROM at <unassigned> [disabled] [size=128K]
           Capabilities: [dc] Power Management version 1

   00:11.0 SCSI storage controller: Adaptec 7892A (rev 02)
           Subsystem: Adaptec: Unknown device e2a0
           Flags: bus master, 66Mhz, medium devsel, latency 72, IRQ 7
           BIST result: 00
           I/O ports at 1800 [disabled] [size=256]
           Memory at f0001000 (64-bit, non-prefetchable) [size=4K]
           Expansion ROM at <unassigned> [disabled] [size=128K]
           Capabilities: [dc] Power Management version 2

   01:00.0 VGA compatible controller: ATI Technologies Inc Rage 128 PF (prog-if 00 [VGA])
           Subsystem: ATI Technologies Inc: Unknown device 0404
           Flags: bus master, stepping, fast Back2Back, 66Mhz, medium devsel, latency 66, IRQ 11
           Memory at f8000000 (32-bit, prefetchable) [size=64M]
           I/O ports at 9000 [size=256]
           Memory at f0100000 (32-bit, non-prefetchable) [size=16K]
           Expansion ROM at <unassigned> [disabled] [size=128K]
           Capabilities: [50] AGP version 2.0
           Capabilities: [5c] Power Management version 2

I've -DDEBUG in pci-i386.h to get some more verbose IRQ config messages:

   Linux version 2.4.7 (root@asmodeus) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85)) #7 Wed Jul 25 12:54:14 EDT 2001
   BIOS-provided physical RAM map:
    BIOS-e820: 0000000000000000 - 000000000009f400 (usable)
    BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
    BIOS-e820: 00000000000e6c00 - 0000000000100000 (reserved)
    BIOS-e820: 0000000000100000 - 00000000040fd800 (usable)
    BIOS-e820: 00000000040fd800 - 00000000040ff800 (ACPI data)
    BIOS-e820: 00000000040ff800 - 00000000040ffc00 (ACPI NVS)
    BIOS-e820: 00000000040ffc00 - 0000000018000000 (usable)
    BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
   Scan SMP from c0000000 for 1024 bytes.
   Scan SMP from c009fc00 for 1024 bytes.
   Scan SMP from c00f0000 for 65536 bytes.
   Scan SMP from c009f400 for 4096 bytes.
   On node 0 totalpages: 98304
   zone(0): 4096 pages.
   zone(1): 94208 pages.
   zone(2): 0 pages.
   mapped APIC to ffffe000 (01664000)
   Kernel command line: auto BOOT_IMAGE=production ro root=802 BOOT_FILE=/boot/bzImage video=aty128fb:1024x768-16@76
   Initializing CPU#0
   Detected 798.177 MHz processor.
   Console: colour VGA+ 80x25
   Calibrating delay loop... 1592.52 BogoMIPS
   Memory: 384508k/393216k available (956k kernel code, 8308k reserved, 362k data, 204k init, 0k highmem)
   Dentry-cache hash table entries: 65536 (order: 7, 524288 bytes)
   Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
   Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
   Buffer-cache hash table entries: 32768 (order: 5, 131072 bytes)
   Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
   CPU: Before vendor init, caps: 0383f9ff 00000000 00000000, vendor = 0
   CPU: L1 I cache: 16K, L1 D cache: 16K
   CPU: L2 cache: 256K
   Intel machine check architecture supported.
   Intel machine check reporting enabled on CPU#0.
   CPU: After vendor init, caps: 0383f9ff 00000000 00000000 00000000
   CPU:     After generic, caps: 0383f9ff 00000000 00000000 00000000
   CPU:             Common caps: 0383f9ff 00000000 00000000 00000000
   CPU: Intel Pentium III (Coppermine) stepping 03
   Enabling fast FPU save and restore... done.
   Enabling unmasked SIMD FPU exception support... done.
   Checking 'hlt' instruction... OK.
   POSIX conformance testing by UNIFIX
   mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
   mtrr: detected mtrr type: Intel
   PCI: BIOS32 Service Directory structure at 0xc00f6be0
   PCI: BIOS32 Service Directory entry at 0xfd790
   PCI: BIOS probe returned s=00 hw=01 ver=02.10 l=01
   PCI: PCI BIOS revision 2.10 entry at 0xfd993, last bus=1
   PCI: Using configuration type 1
   PCI: Probing PCI hardware
   PCI: IDE base address fixup for 00:07.1
   PCI: Scanning for ghost devices on bus 0
   PCI: Scanning for ghost devices on bus 1
   PCI: IRQ init
   PCI: Interrupt Routing Table found at 0xc00fdf20
   00:0d slot=01 0:60/deb8 1:61/deb8 2:62/deb8 3:63/deb8
   00:0e slot=02 0:61/deb8 1:62/deb8 2:63/deb8 3:60/deb8
   00:0f slot=03 0:62/deb8 1:63/deb8 2:60/deb8 3:61/deb8
   00:10 slot=04 0:63/deb8 1:60/deb8 2:61/deb8 3:62/deb8
   00:11 slot=05 0:62/deb8 1:63/deb8 2:60/deb8 3:61/deb8
   00:0c slot=00 0:63/deb8 1:00/def8 2:00/def8 3:00/def8
   00:00 slot=00 0:60/def8 1:61/def8 2:62/def8 3:63/def8
   00:07 slot=00 0:60/def8 1:61/def8 2:62/def8 3:63/def8
   00:01 slot=00 0:60/def8 1:61/def8 2:62/def8 3:63/def8
   01:00 slot=00 0:60/def8 1:61/def8 2:00/def8 3:00/def8
   PCI: Attempting to find IRQ router for 8086:122e
   PCI: Using IRQ router PIIX [8086/7110] at 00:07.0
   PCI: IRQ fixup
   PCI: Allocating resources
   PCI: Resource f4000000-f7ffffff (f=1208, d=0, p=0)
   PCI: Resource 00001000-0000100f (f=101, d=0, p=0)
   PCI: Resource 00001020-0000103f (f=101, d=0, p=0)
   PCI: Resource 00001800-000018ff (f=101, d=0, p=0)
   PCI: Resource f0001000-f0001fff (f=204, d=0, p=0)
   PCI: Resource f8000000-fbffffff (f=1208, d=0, p=0)
   PCI: Resource 00009000-000090ff (f=101, d=0, p=0)
   PCI: Resource f0100000-f0103fff (f=200, d=0, p=0)
   PCI: Resource 00001080-000010ff (f=101, d=1, p=1)
   PCI: Resource f0000000-f000007f (f=200, d=1, p=1)
   PCI: Resource 00001400-0000147f (f=101, d=1, p=1)
   PCI: Resource f0000400-f000047f (f=200, d=1, p=1)
   PCI: Resource 00001480-000014ff (f=101, d=1, p=1)
   PCI: Resource f0000800-f000087f (f=200, d=1, p=1)
   PCI: Sorting device list...
   Limiting direct PCI/PCI transfers.
   Linux NET4.0 for Linux 2.4
   Based upon Swansea University Computer Society NET3.039
   Initializing RT netlink socket
   Starting kswapd v1.8
   IRQ for 01:00.0:0 -> PIRQ 60, mask def8, excl 0000 -> newirq=11 -> got IRQ 11
   PCI: Found IRQ 11 for device 01:00.0
   aty128fb: Rage128 BIOS located at segment C00C0000
   aty128fb: Rage128 Pro PF (AGP) [chip rev 0x1] 16M 128-bit SDR SGRAM (1:1)
   Console: switching to colour frame buffer device 128x48
   fb0: ATY Rage128 frame buffer device on PCI
   aty128fb: Rage128 MTRR set to ON
   Detected PS/2 Mouse Port.
   pty: 256 Unix98 ptys configured
   Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
   ttyS00 at 0x03f8 (irq = 4) is a 16550A
   block: queued sectors max/low 255200kB/124128kB, 768 slots per queue
   NET4: Frame Diverter 0.46
   Linux agpgart interface v0.99 (c) Jeff Hartmann
   agpgart: Maximum main memory to use for agp memory: 322M
   agpgart: Detected Intel 440BX chipset
   agpgart: AGP aperture is 64M @ 0xf4000000
   SCSI subsystem driver Revision: 1.00
   IRQ for 00:11.0:0 -> PIRQ 62, mask deb8, excl 0000 -> newirq=7 -> got IRQ 7
   PCI: Found IRQ 7 for device 00:11.0
   PCI: Sharing IRQ 7 with 00:0f.0
   scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.1.13
           <Adaptec 29160 Ultra160 SCSI adapter>
           aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/255 SCBs
     Vendor: QUANTUM   Model: ATLAS 10K 18WLS   Rev: UCH0
     Type:   Direct-Access                      ANSI SCSI revision: 03
   (scsi0:A:0): 160.000MB/s transfers (80.000MHz DT, offset 31, 16bit)
   scsi0:0:0:0: Tagged Queuing enabled.  Depth 253
   Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
   SCSI device sda: 35877972 512-byte hdwr sectors (18370 MB)
   Partition check:
    sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 >
   md: raid1 personality registered
   md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
   md: Autodetecting RAID arrays.
   md: autorun ...
   md: ... autorun DONE.
   NET4: Linux TCP/IP 1.0 for NET4.0
   IP Protocols: ICMP, UDP, TCP, IGMP
   IP: routing cache hash table of 4096 buckets, 32Kbytes
   TCP: Hash tables configured (established 32768 bind 32768)
   Linux IP multicast router 0.06 plus PIM-SM
   NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
   VFS: Mounted root (ext2 filesystem) readonly.
   Freeing unused kernel memory: 204k freed
   Adding Swap: 1574360k swap-space (priority -1)
   PCI: Enabling device 00:0e.0 (0114 -> 0117)
   IRQ for 00:0e.0:0 -> PIRQ 61, mask deb8, excl 0000 -> newirq=10 -> got IRQ 10
   PCI: Found IRQ 10 for device 00:0e.0
   3c59x.c:LK1.1.15 6 June 2001  Donald Becker and others. http://www.scyld.com/network/vortex.html
   See Documentation/networking/vortex.txt
   00:0e.0: 3Com PCI 3c905B Cyclone 100baseTx at 0x1080,  00:10:4b:63:97:50, IRQ 10
     product code 4e43 rev 00.0 date 02-21-98
     8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
     MII transceiver found at address 24, status 7809.
     Enabling bus-master transmits and whole-frame receives.
   00:0e.0: scatter/gather enabled. h/w checksums enabled
   divert: allocating divert_blk for eth0
   PCI: Enabling device 00:0f.0 (0114 -> 0117)
   IRQ for 00:0f.0:0 -> PIRQ 62, mask deb8, excl 0000 -> newirq=7 -> got IRQ 7
   PCI: Found IRQ 7 for device 00:0f.0
   PCI: Sharing IRQ 7 with 00:11.0
   00:0f.0: 3Com PCI 3c905B Cyclone 100baseTx at 0x1400,  00:10:4b:63:97:26, IRQ 7
     product code 4e43 rev 00.0 date 02-21-98
     8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
     MII transceiver found at address 24, status 7809.
     Enabling bus-master transmits and whole-frame receives.
   00:0f.0: scatter/gather enabled. h/w checksums enabled
   divert: allocating divert_blk for eth1
   PCI: Enabling device 00:10.0 (0114 -> 0117)
   IRQ for 00:10.0:0 -> PIRQ 63, mask deb8, excl 0000 -> newirq=9 -> got IRQ 9
   PCI: Found IRQ 9 for device 00:10.0
   PCI: Sharing IRQ 9 with 00:07.2
   00:10.0: 3Com PCI 3c905B Cyclone 100baseTx at 0x1480,  00:10:4b:63:95:9f, IRQ 9
     product code 4e43 rev 00.0 date 02-21-98
     8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
     MII transceiver found at address 24, status 7809.
     Enabling bus-master transmits and whole-frame receives.
   00:10.0: scatter/gather enabled. h/w checksums enabled
   divert: allocating divert_blk for eth2
   eth0: using NWAY device table, not 8

The system is intended to be a gateway between three networks and I
expect non-trivial interrupt rates; I really don't want to share IRQs.

Any ideas how I might get these to play nice and actually use the
available IRQs?

^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: how to tell Linux *not* to share IRQs ?
@ 2001-08-08 19:03 Per Jessen
  2001-08-08 19:19 ` Chris Meadors
  2001-08-09 14:27 ` Andreas Bombe
  0 siblings, 2 replies; 13+ messages in thread
From: Per Jessen @ 2001-08-08 19:03 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, Mark H. Wood

On Wed, 8 Aug 2001 12:13:40 -0500 (EST), Mark H. Wood wrote:

>On Wed, 8 Aug 2001, Andrew McNamara wrote:
>[snippage]
>> The problem is largely historical - each interrupt traditionally had a
>> physically line associated with it, and lines on your backplane were a
>> limited resource.
>>
>> If you were to do it again these days, you might have some sort of
>> shared serial bus, so devices could give detailed data to the cpu
>> (not only to uniquely identify the interrupting device, but also
>> identify sub-devices - say a USB peripheral).
>
>See for example "vectored interrupts" on the PDP10.  The device driver
>tells the device where the driver's ISR is, and when the device
>interrupts, it puts that address on the bus.  The interrupt logic jumps
>directly to the ISR, which "knows" it is the only driver that would be
>interested in this interrupt.  (You could set up a jump table if you
>wanted to, so that each device of the same type could identify itself
>uniquely, but that typically wasn't a big problem in '10 installations
>where multiples were most likely in a PDP11 on the other side of a DTE20,
>or Massbus devices on a single RH20.)
>
>Apparently this idea is now so old that it is new. :-)

Yeah - I believe the same was possible on the Z80 - though I'd have to 
go read the manual to be certain.


regards,
Per Jessen, Zurich

Windows 2001: "I'm sorry Dave ...  I'm afraid I can't do that."




regards,
Per Jessen, Zurich
http://www.enidan.com - home of the J1 serial console.

Windows 2001: "I'm sorry Dave ...  I'm afraid I can't do that."



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2001-11-06 23:19 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-07-25 23:23 how to tell Linux *not* to share IRQs ? Scott McDermott
2001-07-25 23:37 ` Alan Cox
2001-07-26  7:06   ` Andrew McNamara
2001-07-26  7:39     ` Chris Wedgwood
2001-08-07 15:09       ` Jes Sorensen
2001-08-08  0:05         ` Andrew McNamara
2001-08-08 11:14           ` Eric W. Biederman
2001-08-08 17:13           ` Mark H. Wood
2001-07-26  7:54     ` Francois Romieu
  -- strict thread matches above, loose matches on Subject: below --
2001-08-08 19:03 Per Jessen
2001-08-08 19:19 ` Chris Meadors
2001-11-06 23:17   ` H. Peter Anvin
2001-08-09 14:27 ` Andreas Bombe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.