Skip to contentSkip to conversation

PCI IRQ routing problem in 2.4.0

DISCUSSION Robert Siemer 5 participants 16 messages Jan 29, 2001 – Jan 30, 2001 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

From: Linus Torvalds <[email protected]>

Quoted 4 lines

Another one..

Robert, can you get the dump_pirq script from the pcmcia_cs package and send the output to us?

...it seems to reflect my settings in the bios:

Interrupt routing table found at address 0xf0a50:
Version 1.0, size 0x0080
Interrupt router is device 00:01.0
PCI exclusive interrupt mask: 0x0000 []
Compatible router: vendor 0x1039 device 0x0008

Device 00:0c.0 (slot 1): SCSI storage controller
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Device 00:0b.0 (slot 2): VGA compatible controller
INTA: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Device 00:0a.0 (slot 3): Ethernet controller
INTA: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Device 00:09.0 (slot 4): Multimedia video controller
INTA: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Device 00:01.0 (slot 0): ISA bridge
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Device 00:13.0 (slot 0): VGA compatible controller
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Interrupt router at 00:01.0: SiS 85C503 PCI-to-ISA bridge
INTA (link 0x41): irq 12
INTB (link 0x42): irq 14
INTC (link 0x43): irq 10
INTD (link 0x44): irq 11
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#2 lore raw
Quoted 8 lines · Robert Siemer

From: Linus Torvalds <[email protected]>

Quoted 4 lines

Another one..

Robert, can you get the dump_pirq script from the pcmcia_cs package and send the output to us?

...it seems to reflect my settings in the bios:

No, but that's really interesting..

Quoted 5 lines

Device 00:01.0 (slot 0): ISA bridge
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Your "link" values are in the range 1-4. Which makes perfect sense, but that's absolutely _not_ what the Linux SiS routing code expects (the code seems to expect them to be ASCII 'A' - 'D').

It looks very much like "pirq_sis_get()" and "pirq_sis_set()" in arch/i386/kernel/pci-irq.c are broken for your setup.

Can you replace them with the following:

	static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
	{
		if (pirq <= 4) {
			u8 x;
			pci_read_config_byte(router, 0x40+pirq, &x);
			return (x & 0x80) ? 0 : (x & 0xf);
		}
		printk("Unknown SiS pirq value %d\n", pirq);
		return 0;
	}

and

	static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
	{
		if (pirq <= 4) {
			pci_write_config_byte(router, 0x40 + pirq, irq);
			return 1;
		}
		printk("Unknown SiS pirq value %d\n", pirq);
		return 0;
	}

and see if that changes the behaviour.

Anybody else with SiS chipsets that want to try the above? Please..

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#3 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results)

| Your "link" values are in the range 1-4. Which makes perfect sense, but
| that's absolutely _not_ what the Linux SiS routing code expects (the code
| seems to expect them to be ASCII 'A' - 'D').
| It looks very much like "pirq_sis_get()" and "pirq_sis_set()" in
| arch/i386/kernel/pci-irq.c are broken for your setup.

My ASUS SP97-V complains about PIRQ conflicts so I gave this a whirl (It is SiS 5598 based)

| Anybody else with SiS chipsets that want to try the above? Please..

Here is my dmesg:
Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #3 Mon Jan 29 00:16:07 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.229 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10Unknown SiS pirq value 98
-> assigning IRQ 10Unknown SiS pirq value 98
... failed
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5Unknown SiS pirq value 67
-> assigning IRQ 5Unknown SiS pirq value 67
... failed
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10Unknown SiS pirq value 65
-> assigning IRQ 10Unknown SiS pirq value 65
... failed
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: wow
registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=7Unknown SiS pirq value 98
-> assigning IRQ 7Unknown SiS pirq value 98
... failed
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 7
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#4 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results)

Quoted 3 lines · Aaron Tiensivu

My ASUS SP97-V complains about PIRQ conflicts so I gave this a whirl (It is SiS 5598 based)

Your pirq values are different - they are in the 0x41-0x44 range, like the old SiS router code assumes. Except for one that has value 0x62, which the old SiS code actually refused to set because it refused anything that matches (x & 0x20).

I suspect that the low bits are the "PCI interrupt number", and that the high bits are some other state information. (ie 0x02, 0x42 and 0x62 all imply PCI irq INTB, just with different flags set for some reason).

Which one was it you got a PIRQ conflict for before? as it te device at 00:01.00 with the strange "0x62" entry?

How about you try adding the line

	pirq = (pirq-1) & 3;

at the top of both pirq_sis_get() and pirq_sis_set() (with my "alternate" SiS routines). What happens then?

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#5 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results part 2)

| Which one was it you got a PIRQ conflict for before? as it te device at | 00:01.00 with the strange "0x62" entry?

Yes.

| How about you try adding the line
| pirq = (pirq-1) & 3;
| at the top of both pirq_sis_get() and pirq_sis_set() (with my "alternate"
| SiS routines). What happens then?

Done.

Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #4 Mon Jan 29 01:53:12 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.227 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:01.1
PCI: The same IRQ used for device 00:01.2
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5 -> got IRQ 11 IRQ routing conflict in pirq table! Try 'pci=autoirq'
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10 -> assigning IRQ 10 ... OK
PCI: Assigned IRQ 10 for device 00:0c.0
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:01.2
PCI: The same IRQ used for device 00:01.1
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 10
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)

I also attached my dmesg from the original pre-modded SiS after this.

Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #5 Mon Jan 29 01:59:59 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.224 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 7 IRQ routing conflict in pirq table! Try 'pci=autoirq'
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5 -> got IRQ 5
PCI: Found IRQ 5 for device 00:0a.0
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:0c.0
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Warning, log replay starting on readonly filesystem
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=7 -> got IRQ 7
PCI: Found IRQ 7 for device 00:01.2
PCI: The same IRQ used for device 00:01.1
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 7
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)
ip_tables: (c)2000 Netfilter core team
ip_conntrack (511 buckets, 4088 max)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#6 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results part 2)

Quoted 4 lines · Aaron Tiensivu

| Which one was it you got a PIRQ conflict for before? as it te device at | 00:01.00 with the strange "0x62" entry?

Yes.

You've got the pirq setup from hell.

Mind doing that "dump_pirq" thing, preferably run on an _unmodified_ 2.4.0 kernel (ie none of my test-hacks) or on a 2.2.x kernel (that doesn't even _try_ to do any routing at all - or you can get the same effect by just making "set_sis_pirq()" always just return 0 without doing anything)?

I don't want to get quantum effects of the observer changing what is being observed..

Quoted 6 lines
| How about you try adding the line
| pirq = (pirq-1) & 3;
| at the top of both pirq_sis_get() and pirq_sis_set() (with my "alternate"
| SiS routines). What happens then?

Done.

Not any better. The thing just moves around, it seems.

I'll think about this, and try to find the SiS irq routing register spec somewhere..

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#7 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results part 2)

In reply to Linus Torvalds

| Which one was it you got a PIRQ conflict for before? as it te device at | 00:01.00 with the strange "0x62" entry?

Yes.

| How about you try adding the line
| pirq = (pirq-1) & 3;
| at the top of both pirq_sis_get() and pirq_sis_set() (with my "alternate"
| SiS routines). What happens then?

Done.

Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #4 Mon Jan 29 01:53:12 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.227 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:01.1
PCI: The same IRQ used for device 00:01.2
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5 -> got IRQ 11 IRQ routing conflict in pirq table! Try 'pci=autoirq'
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10 -> assigning IRQ 10 ... OK
PCI: Assigned IRQ 10 for device 00:0c.0
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:01.2
PCI: The same IRQ used for device 00:01.1
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 10
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)

I also attached my dmesg from the original pre-modded SiS after this.

Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #5 Mon Jan 29 01:59:59 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.224 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 7 IRQ routing conflict in pirq table! Try 'pci=autoirq'
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5 -> got IRQ 5
PCI: Found IRQ 5 for device 00:0a.0
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10 -> got IRQ 10
PCI: Found IRQ 10 for device 00:0c.0
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Warning, log replay starting on readonly filesystem
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=7 -> got IRQ 7
PCI: Found IRQ 7 for device 00:01.2
PCI: The same IRQ used for device 00:01.1
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 7
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)
ip_tables: (c)2000 Netfilter core team
ip_conntrack (511 buckets, 4088 max)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#8 lore raw

Re: PCI IRQ routing problem in 2.4.0 (SiS results)

In reply to Linus Torvalds
| Your "link" values are in the range 1-4. Which makes perfect sense, but
| that's absolutely _not_ what the Linux SiS routing code expects (the code
| seems to expect them to be ASCII 'A' - 'D').
| It looks very much like "pirq_sis_get()" and "pirq_sis_set()" in
| arch/i386/kernel/pci-irq.c are broken for your setup.

My ASUS SP97-V complains about PIRQ conflicts so I gave this a whirl (It is SiS 5598 based)

| Anybody else with SiS chipsets that want to try the above? Please..

Here is my dmesg:
Linux version 2.4.0-ac12 ([email protected]) (gcc version 2.95.3 20010125 (prerelease)) #3 Mon Jan 29 00:16:07 EST 2001 BIOS-provided physical RAM map:
BIOS-e820: 00000000000a0000 @ 0000000000000000 (usable)
BIOS-e820: 0000000000010000 @ 00000000000f0000 (reserved)
BIOS-e820: 0000000003efd000 @ 0000000000100000 (usable)
BIOS-e820: 0000000000002000 @ 0000000003ffd000 (ACPI data)
BIOS-e820: 0000000000001000 @ 0000000003fff000 (ACPI NVS)
BIOS-e820: 0000000000010000 @ 00000000ffff0000 (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 c0000000 for 4096 bytes.
On node 0 totalpages: 16381
zone(0): 4096 pages.
zone(1): 12285 pages.
zone(2): 0 pages.
APIC turned off by hardware.
mapped APIC to ffffe000 (01112000)
Kernel command line: auto BOOT_IMAGE=lnew ro root=341 BOOT_FILE=/home/kernel/kernel/linux/arch/i386/boot/bzImage Initializing CPU#0
Detected 374.229 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 747.11 BogoMIPS
Memory: 62368k/65524k available (940k kernel code, 2772k reserved, 327k data, 188k init, 0k highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
VFS: Diskquotas version dquot_6.5.0 initialized
CPU: Before vendor init, caps: 008021bf 808029bf 00000000, vendor = 2
CPU: L1 I Cache: 32K (32 bytes/line), D cache 32K (32 bytes/line)
CPU: After vendor init, caps: 008021bf 808029bf 00000000 00000002
CPU: After generic, caps: 008021bf 808029bf 00000000 00000002
CPU: Common caps: 008021bf 808029bf 00000000 00000002
CPU: AMD-K6(tm) 3D processor stepping 0c
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.37 (20001109) Richard Gooch ([email protected])
mtrr: detected mtrr type: AMD K6
PCI: BIOS32 Service Directory structure at 0xc00f9b50
PCI: BIOS32 Service Directory entry at 0xf04d0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=00
PCI: PCI BIOS revision 2.10 entry at 0xf0500, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Setting max latency to 32
PCI: IDE base address trash cleared for 00:01.1
PCI: IDE base address fixup for 00:01.1
PCI: Scanning for ghost devices on bus 0
PCI: IRQ init
PCI: Interrupt Routing Table found at 0xc00f0af0
00:0c slot=01 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
00:0b slot=02 0:42/1eb8 1:43/1eb8 2:44/1eb8 3:41/1eb8
00:0a slot=03 0:43/1eb8 1:44/1eb8 2:41/1eb8 3:42/1eb8
00:09 slot=04 0:44/1eb8 1:41/1eb8 2:42/1eb8 3:43/1eb8
00:01 slot=00 0:62/1eb8 1:00/0000 2:00/0000 3:00/0000
00:13 slot=00 0:41/1eb8 1:42/1eb8 2:43/1eb8 3:44/1eb8
PCI: Using IRQ router SIS [1039/0008] at 00:01.0
PCI: IRQ fixup
PCI: Allocating resources
PCI: Resource 0000d000-0000d00f (f=101, d=0, p=0)
PCI: Resource dd000000-dd000fff (f=200, d=0, p=0)
PCI: Resource 0000b800-0000b807 (f=101, d=0, p=0)
PCI: Resource dc800000-dc87ffff (f=200, d=0, p=0)
PCI: Resource e0000000-e7ffffff (f=1208, d=0, p=0)
PCI: Resource df000000-df000fff (f=1208, d=0, p=0)
PCI: Resource 0000b400-0000b41f (f=101, d=0, p=0)
PCI: Resource dc000000-dc0fffff (f=200, d=0, p=0)
PCI: Resource de000000-de3fffff (f=1208, d=1, p=1)
PCI: Resource db800000-db80ffff (f=200, d=1, p=1)
PCI: Resource 0000b000-0000b07f (f=101, d=1, p=1)
PCI: Sorting device list...
Disabling direct PCI/PCI transfers.
isapnp: Scanning for Pnp cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.14)
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 41341kB/31006kB, 128 slots per queue Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller on PCI bus 00 dev 09
IRQ for 00:01.1:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=10Unknown SiS pirq value 98
-> assigning IRQ 10Unknown SiS pirq value 98
... failed
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SiS5597

    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio

keyboard: Timeout - AT keyboard not present?
keyboard: Timeout - AT keyboard not present?
hda: ST5660A, ATA DISK drive
hdb: IBM-DJAA-31700, ATA DISK drive
hdc: Maxtor 72700 AP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 1066184 sectors (546 MB) w/256KiB Cache, CHS=528/32/63, DMA
hdb: 3334464 sectors (1707 MB) w/96KiB Cache, CHS=827/64/63, DMA
hdc: 5290320 sectors (2709 MB) w/128KiB Cache, CHS=5248/16/63, DMA Partition check:
/dev/ide/host0/bus0/target0/lun0: p1 p2 /dev/ide/host0/bus0/target1/lun0: p1 /dev/ide/host0/bus1/target0/lun0: [PTBL] [656/128/63] p1
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ DETECT_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
IRQ for 00:0a.0:0 -> PIRQ 43, mask 1eb8, excl 0000 -> newirq=5Unknown SiS pirq value 67
-> assigning IRQ 5Unknown SiS pirq value 67
... failed
ttyS02 at port 0xb800 (irq = 5) is a 16550A
Real Time Clock Driver v1.10d
eepro100.c:v1.09j-t 9/29/99 Donald Becker
http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
eepro100.c: $Revision: 1.35 $ 2000/11/17 Modified by Andrey V. Savochkin <[email protected]> and others
IRQ for 00:0c.0:0 -> PIRQ 41, mask 1eb8, excl 0000 -> newirq=10Unknown SiS pirq value 65
-> assigning IRQ 10Unknown SiS pirq value 65
... failed
eth0: Intel Corporation 82557 [Ethernet Pro 100], 00:A0:C9:0D:A6:1F, IRQ 10.
Board assembly 352509-003, Physical connectors present: RJ45 Primary interface chip DP83840 PHY #1.
DP83840 specific setup, setting register 23 to 8462.
General self-test: passed.
Serial sub-system self-test: passed.
Internal registers self-test: passed.
ROM checksum self-test: passed (0x49caa8d6).
Receiver lock-up workaround activated.
PPP generic driver version 2.4.1
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
devfs: v0.102 (20000622) Richard Gooch ([email protected])
devfs: boot_options: 0x0
reiserfs: checking transaction log (device 03:41) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
VFS: Mounted root (reiserfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 188k freed
Adding Swap: 18136k swap-space (priority -1)
usb.c: registered new driver usbdevfs
usb.c: wow
registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 62, mask 1eb8, excl 0000 -> newirq=7Unknown SiS pirq value 98
-> assigning IRQ 7Unknown SiS pirq value 98
... failed
usb-ohci.c: USB OHCI at membase 0xc48c6000, IRQ 7
usb-ohci.c: usb-00:01.2, Silicon Integrated Systems [SiS] 7001 usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
reiserfs: checking transaction log (device 03:01) ...
Using r5 hash to sort names
ReiserFS version 3.6.25
Adding Swap: 65528k swap-space (priority -2)
Adding Swap: 131064k swap-space (priority -3)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#9 lore raw
In reply to Linus Torvalds
Quoted 9 lines
Quoted 5 lines

Device 00:01.0 (slot 0): ISA bridge
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Your "link" values are in the range 1-4. Which makes perfect sense, but that's absolutely _not_ what the Linux SiS routing code expects (the code seems to expect them to be ASCII 'A' - 'D').

In reading the PIRQ specs, and making it work for our board, I thought about this. PIRQ states that link is chipset-dependant. No chipset that I have seen specifies what link should be. So, as this case demonstrates, it may be 'A' - the value the chipset expects, or 1, the logical index. Either one makes sense, assuming the PIRQ routing code knows what link means. Here we see two BIOS vendors/versions that apparently do it
differently for the same chipset. Grrr.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#10 lore raw
Quoted 8 lines · Tim Hockin

In reading the PIRQ specs, and making it work for our board, I thought about this. PIRQ states that link is chipset-dependant. No chipset that I have seen specifies what link should be. So, as this case demonstrates, it may be 'A' - the value the chipset expects, or 1, the logical index. Either one makes sense, assuming the PIRQ routing code knows what link means. Here we see two BIOS vendors/versions that apparently do it
differently for the same chipset. Grrr.

They _may_ do the same thing for the same chipset, it's just that we don't know exactly what that "same" thing is.

Ok, I want to see what people have. ANYBODY who has a SiS chipset, please take 5 seconds to do this as root (yes, you need to be root):

dump_pirq | mail -s "dump_pirq" [email protected]

and I'm attaching the "dump_pirq" perl script here in this email so that you don't even have to go to the bother of finding it on the net.

Oh, before you bombard me with email, please check that dump_pirq actually prints out a PIRQ table. If it says

No PCI interrupt routing table was found.

followed by a router dump, it's not interesting, and I'd rather not get a million of those particular emails, ok?

In fact, even if you don't have a SiS chipset, you could do the above. The exception to that rule is if you have an Intel PIIX router, in which case we pretty much _know_ that we do the right thing already.

(And _please_ don't make the subject line anything fancy. I want that subject line to be "dump_pirq" and nothing else, ok?)

Linus

#!/usr/bin/perl
#

# dump_pirq 1.20 2000/12/19 19:19:52
#
# A utility to parse the BIOS PCI IRQ Routing Table
#
# Copyright (C) 2000 David A. Hinds -- [email protected]
#

#-----------------------------------------------------------------------

sub dev {
    my($devfn) = @_;
    sprintf "%02x.%d", ($devfn>>3), ($devfn&7);
}

sub print_mask

{
    my($mask) = @_;
    printf "0x%04x [", $mask;
    for (my $i = 0; $i < 16; $i++) {
	next if (!($mask & (1<<$i)));
	$mask &= ~(1<<$i);
	print (($mask) ? "$i," : "$i");
    }
    print "]\n";
}
sub row {
    my($tag, $link, $mask) = @_;
    if ($link != 0) {
	printf "  INT$tag: link 0x%02x, irq mask ", $link;
	print_mask($mask);
    }
}

sub class_of

{
    my($slot) = @_;
    open(IN, "/sbin/lspci -s $slot |");
    $_ = <IN>;
    close(IN);
    return (/^....... ([^:]+):/) ? $1 : "";
}

sub parse_pirq

{
    my($buf) = @_;

    my($p) = index($buf, "\$PIR");
    my($minor,$major,$size,$rbus,$rdev,$mask,$cvd,$mini) =
	unpack "CCSCCSLL", substr($buf, $p+4, 16);

    printf "Interrupt routing table found at address 0xf%04x:\n", $p;
    printf "  Version $major.$minor, size 0x%04x\n", $size;
    printf "  Interrupt router is device %02x:%s\n", $rbus, dev($rdev);
    print "  PCI exclusive interrupt mask: ";
    print_mask($mask);
    if ($cvd) {
	printf("  Compatible router: vendor 0x%04x device 0x%04x\n",
	       ($cvd & 0xffff), ($cvd >> 16));
    }

    $ofs = 32;
    while ($ofs < $size) {
	# Parse a table entry describing a single PCI device
	($bus, $devfn, $la, $ma, $lb, $mb, $lc, $mc, $ld, $md, $slot) =
	    unpack "CCCSCSCSCSC", substr($buf, $p+$ofs, 15);
	$s = sprintf "%02x:%s", $bus, dev($devfn);
	printf "\nDevice $s (slot $slot): %s\n", class_of($s);
	row("A", $la, $ma); row("B", $lb, $mb);
	row("C", $lc, $mc); row("D", $ld, $md);
	push(@{$dev{$la}}, $s . "1");
	push(@{$dev{$lb}}, $s . "2");
	push(@{$dev{$lc}}, $s . "3");
	push(@{$dev{$ld}}, $s . "4");
	$ofs += 16;
    }
    return ($rbus, $rdev, $cvd);
}

#-----------------------------------------------------------------------

# The link values in the interrupt routing table are implementation

# dependent.  Here, we'll try to interpret the link values for some
# known PCI bridge types.

%pIIx = (0x122e8086, "82371FB PIIX",

	 0x70008086, "82371SB PIIX3",
	 0x71108086, "82371AB PIIX4/PIIX4E",
	 0x71988086, "82443MX",
	 0x24108086, "82801AA ICH",
	 0x24208086, "82801AB ICH0",
	 0x24408086, "82801BA ICH2",
	 0x244c8086, "82801BAM ICH2-M");

%via = (0x05861106, "82C586",

	0x05961106, "82C596",
	0x06861106, "82C686");

%opti = (0xc7001045, "82C700");

%pico = (0x00021066, "PT86C523");

%ali = (0x153310b9, "Aladdin M1533");

%sis = (0x04961039, "85C496/497",

	0x00081039, "85C503");

%cyrix = (0x01001078, "5530");

%all_routers = (%pIIx, %via, %opti, %pico, %ali, %sis, %cyrix);

sub outb

{
    my($data,$port) = @_;
    open(IO, ">/dev/port") || die;
    sysseek(IO, $port, 0) || die;
    my $x = pack "C", $data;
    syswrite(IO, $x, 1);
    close(IO);
}

sub inb

{
    my($port) = @_;
    my($data);
    open(IO, "/dev/port") || die;
    sysseek(IO, $port, 0) || die;
    sysread(IO, $data, 1);
    close(IO);
    return unpack "C", $data;
}

sub dump_router

{
    my($rbus, $rdev, $cvd) = @_;
    my($buf, @p, $i, $irq);

    printf "\nInterrupt router at %02x:%s: ", $rbus, dev($rdev);
    $rf = sprintf "/proc/bus/pci/%02x/%s", $rbus, dev($rdev);
    open(IN, $rf);
    if (sysread(IN, $buf, 0x100) != 0x100) {
	print "\nCould not read router info from $rf.\n";
	exit;
    }
    close(IN);
    my $vd = unpack "L", substr($buf, 0, 4);

    if ((defined $pIIx{$vd}) || (defined $pIIx{$cvd})) {

	$name = (defined $pIIx{$vd}) ? $pIIx{$vd} : $pIIx{$cvd};
	printf "Intel $name PCI-to-ISA bridge\n";
	@p = unpack "CCCCC", substr($buf, 0x60, 5);
	for ($i = 0; $i < 4; $i++) {
	    printf "  PIRQ%d (link 0x%02x): ", $i+1, 0x60+$i;
	    print (($p[$i] < 16) ? "irq $p[$i]\n" : "unrouted\n");
	}
	print "  Serial IRQ:";
	print (($p[4] & 0x80) ? " [enabled]" : " [disabled]");
	print (($p[4] & 0x40) ? " [continuous]" : " [quiet]");
	print " [frame=", (($p[4] >> 2) & 15) + 17, "]";
	print " [pulse=", (($p[4] & 3) * 4 + 4), "]\n";
	print "  Level mask: "; print_mask((inb(0x4d1)<<8) + inb(0x4d0));

    } elsif ((defined $via{$vd}) || (defined $via{$cvd})) {

	$name = (defined $via{$vd}) ? $via{$vd} : $via{$cvd};
	printf "VIA $name PCI-to-ISA bridge\n";
	$p = unpack "L", substr($buf, 0x55, 4);
	%tag = (1, "A", 2, "B", 3, "C", 5, "D");
	foreach $link (1,2,3,5) {
	    $irq = ($p >> ($link * 4)) & 15;
	    print "  PIRQ$tag{$link} (link 0x0$link): ";
	    print ($irq ? "irq $irq\n" : "unrouted\n");
	}

    } elsif ((defined $opti{$vd}) || (defined $opti{$cvd})) {

	$name = (defined $opti{$vd}) ? $opti{$vd} : $opti{$cvd};
	printf "OPTi $name PCI-to-ISA bridge\n";
	$p = unpack "S", substr($buf, 0xb8, 2);
	for ($i = 0; $i < 4; $i++) {
	    $irq = ($p >> ($i * 4)) & 15;
	    printf "  PCIRQ$i (link 0x%02x): ", ($i<<4)+0x02;
	    print ($irq ? "irq $irq\n" : "unrouted\n");
	}

    } elsif ((defined $pico{$vd} || defined $pico{$cvd})) {

	$name = (defined $pico{$vd}) ? $pico{$vd} : $pico{$cvd};
	printf "PicoPower $name PCI-to-ISA bridge\n";
	outb(0x10, 0x24); $p = inb(0x26);
	outb(0x11, 0x24); $p += inb(0x26)<<8;
	@tag = ("A", "B", "C", "D");
	for ($i = 0; $i < 4; $i++) {
	    $irq = ($p >> ($i * 4)) & 15;
	    print "  INT$tag[$i] (link 0x0", $i+1, "): ";
	    print ($irq ? "irq $irq\n" : "unrouted\n");
	}

    } elsif ((defined $ali{$vd} || defined $ali{$cvd})) {

	$name = (defined $ali{$vd}) ? $ali{$vd} : $ali{$cvd};
	printf "AcerLabs $name PCI-to-ISA bridge\n";
	$p = unpack "L", substr($buf, 0x48, 4);
	# This mapping is insane!
	@map = (0, 9, 3, 10, 4, 5, 7, 6, 1, 11, 0, 12, 0, 14, 0, 15);
	for ($i = 0; $i < 8; $i++) {
	    $irq = ($p >> ($i*4)) & 15;
	    print "  INT", $i+1, " (link ", $i+1, "): ";
	    print ($map[$irq] ? "irq $map[$irq]\n" : "unrouted\n");
	}
	$s = unpack "C", substr($buf, 0x70, 1);
	print "  Serial IRQ:";
	print (($s & 0x80) ? " [enabled]" : " [disabled]");
	print (($s & 0x40) ? " [continuous]" : " [quiet]");
	print " [frame=", (($s >> 2) & 15) + 17, "]";
	print " [pulse=", (($s & 3) * 4 + 4), "]\n";

    } elsif ((defined $sis{$vd}) || (defined $sis{$cvd})) {

	$name = (defined $sis{$vd}) ? $sis{$vd} : $sis{$cvd};
	printf "SiS $name PCI-to-ISA bridge\n";
	$base = ($name eq "85C496/497") ? 0xc0 : 0x41;
	@p = unpack "CCCC", substr($buf, $base, 4);
	@tag = ("A", "B", "C", "D");
	for ($i = 0; $i < 4; $i++) {
	    $irq = ($p[$i] & 0x80) ? 0 : ($p[$i] & 0x0f);
	    printf "  INT$tag[$i] (link 0x%02x): ", $i+$base;
	    print ($irq ? "irq $irq\n" : "unrouted\n");
	}

    } elsif ((defined $cyrix{$vd}) || (defined $cyrix{$cvd})) {

	$name = (defined $cyrix{$vd}) ? $cyrix{$vd} : $cyrix{$cvd};
	printf "CYRIX $name PCI-to-ISA bridge\n";
	$p = unpack "S", substr($buf, 0x5c, 2);
	%tag = ("A", "B", "C", "D");
	for ($i = 0; $i < 4; $i++) {
	    $irq = ($p >> ($i * 4)) & 15;
	    printf "  PIRQ$tag{$i} (link 0x%02x): ", $i+1;
	    print ($irq ? "irq $irq\n" : "unrouted\n");
	}

    } else {

	printf("unknown vendor 0x%04x device 0x%04x\n",
	       ($vd & 0xffff), ($vd >> 16));
	foreach $k (sort keys %dev) {
	    next if ($k == 0);
	    printf "  PIRQ? (link 0x%02x): ", $k;
	    $irq = 0;
	    foreach $d (@{$dev{$k}}) {
		$d =~ /(..):(..)\..(.)/;
		($bus,$dev,$pin) = ($1,$2,$3);
		for ($fn = 0; $fn < 8; $fn++) {
		    open(IN, "/proc/bus/pci/$bus/$dev.$fn") || last;
		    sysread(IN, $buf, 0x100);
		    close(IN);
		    ($i,$p) = unpack "CC", substr($buf, 0x3c, 2);
		    $irq = $i if (($p == $pin) && $i && ($i != 255));
		}
	    }
	    print ($irq ? "irq $irq\n" : "unrouted?\n");
	}
    }

}

#-----------------------------------------------------------------------

# Grab the BIOS from 0xf0000-0xfffff
open(IN, "/dev/mem") || die "cannot open /dev/mem\n"; sysseek(IN, 0xf0000, 0) || die;
die if (sysread(IN, $buf, 0x10000) != 0x10000); close(IN);

if (index($buf, "\$PIR") >= 0) {

    # Dump the PIRQ table, and the router information
    ($rbus, $rdev, $cvd) = parse_pirq($buf);
    dump_router($rbus, $rdev, $cvd);

} else {

    # Scan for any interrupt router device we recognize
    print "No PCI interrupt routing table was found.\n";
    open(DEV, "/proc/bus/pci/devices");
    while (<DEV>) {
	($rbus,$rdev,$vd) = /^(..)(..)\s+(........)/;
	$rbus = hex($rbus); $rdev = hex($rdev); $vd = hex($vd);
	$vd = (($vd & 0xffff0000) >> 16) | (($vd & 0xffff) << 16);
	if (defined $all_routers{$vd}) {
	    dump_router($rbus, $rdev, $vd);
	    $nr++;
	}
    }
    print "\nNo known PCI interrupt routers were found.\n" if (!$nr);

}

#11 lore raw

Via PCI IRQ routing problem related? (was: PCI IRQ routing problem in 2.4.0)

In reply to Tim Hockin

hmmm, would these sis-related pirq problems be related to the current problems lots of people with a via chipset (at least the apollo pro 133a chipset) and an smp-enabled kernel are seeing? currently, people with this chipset and an smp-enabled kernel have to disable apic if they wish to use usb. i've been told a few times that it's a problem with pci irq routing, but have been able to find a fix. reports of this problem pop up every-so-often on the linux-usb list.

here's my dump_pirq output:

Interrupt routing table found at address 0xfdb50:
Version 1.0, size 0x00a0
Interrupt router is device 00:07.0
PCI exclusive interrupt mask: 0x1c20 [5,10,11,12] Compatible router: vendor 0x1106 device 0x0596

Device 00:0f.0 (slot 1): FireWire (IEEE 1394)
INTA: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:10.0 (slot 2): SCSI storage controller
INTA: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:11.0 (slot 3): Multimedia audio controller
INTA: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:12.0 (slot 4): Unknown mass storage controller
INTA: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:13.0 (slot 5): Ethernet controller
INTA: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:14.0 (slot 6):
INTA: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:01.0 (slot 0): PCI bridge
INTA: link 0x01, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTB: link 0x02, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTC: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Device 00:07.0 (slot 0): ISA bridge
INTC: link 0x03, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]
INTD: link 0x05, irq mask 0xdeb8 [3,4,5,7,9,10,11,12,14,15]

Interrupt router at 00:07.0: VIA 82C596 PCI-to-ISA bridge
PIRQA (link 0x01): irq 11
PIRQB (link 0x02): irq 5
PIRQC (link 0x03): irq 10
PIRQD (link 0x05): irq 12

any ideas? i also saved the lspci -vvvxxx and dmesg output if that'll be helpful.

thanks,
pete

Quoted 17 lines · Linus Torvalds
Quoted 8 lines · Tim Hockin

In reading the PIRQ specs, and making it work for our board, I thought about this. PIRQ states that link is chipset-dependant. No chipset that I have seen specifies what link should be. So, as this case demonstrates, it may be 'A' - the value the chipset expects, or 1, the logical index. Either one makes sense, assuming the PIRQ routing code knows what link means. Here we see two BIOS vendors/versions that apparently do it
differently for the same chipset. Grrr.

They _may_ do the same thing for the same chipset, it's just that we don't know exactly what that "same" thing is.

Ok, I want to see what people have. ANYBODY who has a SiS chipset, please take 5 seconds to do this as root (yes, you need to be root):

dump_pirq | mail -s "dump_pirq" [email protected]

Signature · 2 lines
Pete Toscano    p:[email protected]     w:[email protected]
GPG fingerprint: D8F5 A087 9A4C 56BB 8F78  B29C 1FF0 1BA7 9008 2736
#12 lore raw
In reply to Linus Torvalds

From: Linus Torvalds <[email protected]>

Quoted 42 lines · Robert Siemer

(...) that's really interesting..

Quoted 5 lines

Device 00:01.0 (slot 0): ISA bridge
INTA: link 0x01, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTB: link 0x02, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTC: link 0x03, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]
INTD: link 0x04, irq mask 0x1eb8 [3,4,5,7,9,10,11,12]

Your "link" values are in the range 1-4. Which makes perfect sense, but that's absolutely _not_ what the Linux SiS routing code expects (the code seems to expect them to be ASCII 'A' - 'D').

It looks very much like "pirq_sis_get()" and "pirq_sis_set()" in arch/i386/kernel/pci-irq.c are broken for your setup.

Can you replace them with the following:

	static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
	{
		if (pirq <= 4) {
			u8 x;
			pci_read_config_byte(router, 0x40+pirq, &x);
			return (x & 0x80) ? 0 : (x & 0xf);
		}
		printk("Unknown SiS pirq value %d\n", pirq);
		return 0;
	}

and

	static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
	{
		if (pirq <= 4) {
			pci_write_config_byte(router, 0x40 + pirq, irq);
			return 1;
		}
		printk("Unknown SiS pirq value %d\n", pirq);
		return 0;
	}
Quoted 1 line

and see if that changes the behaviour.

It doesn't. A diff from the kernel output is following. Maybe it
helps...

Thanks,
Robert

dmesg.2.4.0 renamed from dmesg.2.4.0.debug +6 -5
@@ -1,4 +1,4 @@
-Linux version 2.4.0 ([email protected]) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #4 Sun Jan 28 19:03:05 CET 2001
+Linux version 2.4.0 ([email protected]) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #5 Mon Jan 29 06:19:16 CET 2001
 BIOS-provided physical RAM map:
  BIOS-e820: 000000000009fc00 @ 0000000000000000 (usable)
  BIOS-e820: 0000000000000400 @ 000000000009fc00 (reserved)
@@ -231,8 +231,9 @@
 bttv: using 2 buffers with 2080k (4160k total) for capture
 BT848 and your chipset may not work together.
 bttv: Bt8xx card found (0).
-IRQ for 00:09.0:0 -> PIRQ 04, mask 1eb8, excl 0000 -> newirq=11 -> got IRQ 7
-IRQ routing conflict in pirq table! Try 'pci=autoirq'
+IRQ for 00:09.0:0 -> PIRQ 04, mask 1eb8, excl 0000 -> newirq=11 -> got IRQ 11
+PCI: Found IRQ 11 for device 00:09.0
+PCI: The same IRQ used for device 00:09.1
 bttv0: Bt878 (rev 2) at 00:09.0, irq: 11, latency: 32, memory: 0xe7800000
 bttv0: subsystem: 0070:13eb  =>  Hauppauge WinTV  =>  card=10
 bttv0: model: BT878(Hauppauge new (bt878)) [autodetected]
@@ -278,8 +279,8 @@
 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
 SIS5513: IDE controller on PCI bus 00 dev 09
 PCI: Enabling device 00:01.1 (0000 -> 0001)
-IRQ for 00:01.1:0 -> PIRQ 01, mask 1eb8, excl 0000 -> newirq=12 -> assigning IRQ 12 ... OK
-PCI: Assigned IRQ 12 for device 00:01.1
+IRQ for 00:01.1:0 -> PIRQ 01, mask 1eb8, excl 0000 -> newirq=12 -> got IRQ 12
+PCI: Found IRQ 12 for device 00:01.1
 PCI: The same IRQ used for device 00:01.2
 PCI: The same IRQ used for device 00:0c.0
 SIS5513: chipset revision 208

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#13 lore raw
Quoted 5 lines · Robert Siemer
Quoted 2 lines

and see if that changes the behaviour.

It doesn't. A diff from the kernel output is following. Maybe it
helps...

Actually, this looks like it _did_ fix something - now the kernel no longer thinks there is a IRQ routing conflict, so it does seem to be happier.

Also, while you're unhappy that it assigns irq 12 instead of 9, the pirq table actually says that it's ok, and again the code seems to say that this was actually what the system was set up for.

Can you re-iterate what the failure mode is, again? Preferable with this kernel that definitely looks like it at least agrees with what the BIOS tells it.

Oh, and please do a "lspci -vvvxxx" as root and send me that as well.

Thanks,

Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#14 lore raw

From: Linus Torvalds <[email protected]>

Quoted 7 lines · Robert Siemer
Quoted 5 lines
Quoted 2 lines

and see if that changes the behaviour.

It doesn't. A diff from the kernel output is following. Maybe it
helps...

Quoted 7 lines

Actually, this looks like it _did_ fix something - now the kernel no longer thinks there is a IRQ routing conflict, so it does seem to be happier.

Also, while you're unhappy that it assigns irq 12 instead of 9, the pirq table actually says that it's ok, and again the code seems to say that this was actually what the system was set up for.

I'm not just unhappy to be unable to control the IRQs with the bios anymore, sym53c8xx doesn't want to share IRQs with the usb subsystem in this case... (kernel panic (killing interrupt handler(?)) and reboot (rebooting in 60 seconds))

2.4.0-test9 behaviour was different. It really used what the 'bios box' stated during bootup. - A way to set the IRQ distribution via kernel-params is okay for me, too.

Quoted 3 lines

Can you re-iterate what the failure mode is, again? Preferable with this kernel that definitely looks like it at least agrees with what the BIOS tells it.

I'm native German - what is 'failure mode'?

2.4.0-test9 agrees with the bios. [Currently I gave my VGA card (the S3) an IRQ - without one in the bios 2.4.0-test9 was happy, but 2.4.0 gave it IRQ 8 on its own.]

Quoted 2 lines

Oh, and please do a "lspci -vvvxxx" as root and send me that as well.

Okay. For 2.4.0-test9 it's following immediately. After that a diff of "lspci -vvx" from 2.4.0-test9 to 2.4.0 is included.

Full "lspci -vvx" are in my original post:
http://boudicca.tux.org/hypermail/linux-kernel/latest/0130.html

To mention it: I have also an ASUS SP97 like Aaron Tiensivu. But the XV version with (unused) onboard VGA.

Further I always see '09' in the Configuration Space at Interrupt_Line (0x3c) for the 00:01.2 USB Controller. But 2.4.0 says:
Interrupt: pin A routed to IRQ 12
while 2.4.0-test9 states:
Interrupt: pin A routed to IRQ 9

Please tell me if it helps te see a "lspci -vvvxxx" from 2.4.0 and whether I should give some 2.4.0-test?? a try...
I must go to bed now - otherwise my mother kills me when she reads linux-kernel tomorrow... (-:

00:00.0 Host bridge: Silicon Integrated Systems [SiS] 5597 [SiS5582] (rev 02)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 32 set
00: 39 10 97 55 07 00 00 22 02 00 00 06 00 20 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: c0 ea c0 1e fc 04 43 01 60 00 00 00 00 00 00 00
60: e6 00 00 f9 00 ff 00 ff 00 ff 00 ff 80 02 00 00
70: cc 88 00 00 88 88 88 00 00 00 00 00 00 00 00 00
80: 7c c8 ce f7 40 00 10 40 00 00 00 00 00 00 00 00
90: 02 00 03 44 00 00 00 00 00 00 00 07 00 00 ff ff
a0: ff ff 00 80 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:01.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 (rev 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0 set
00: 39 10 08 00 07 00 00 02 01 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: fa 0c 0e 0a 0b 64 00 00 ff ff 10 0f 11 20 04 01
50: 11 28 02 01 60 0b 64 0b 9c 2e 12 00 a6 0b 00 00
60: ff 80 49 00 88 00 00 02 00 80 80 00 20 19 00 00
70: 1a 00 00 c1 00 c1 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 ec 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:01.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) (prog-if 8f [Master SecP SecO PriP PriO])
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 12
Region 0: I/O ports at <ignored>
Region 1: I/O ports at <ignored>
Region 2: I/O ports at <ignored>
Region 3: I/O ports at <ignored>
Region 4: I/O ports at d000 [size=16]
00: 39 10 13 55 01 00 00 00 d0 8f 01 01 00 20 80 00
10: 01 e4 00 00 01 e0 00 00 01 d8 00 00 01 d4 00 00
20: 01 d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 00 00
40: 00 00 00 00 00 00 00 00 00 07 e0 00 00 02 00 02
50: 00 01 07 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:01.2 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 10) (prog-if 10 [OHCI])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 set, cache line size 08
Interrupt: pin A routed to IRQ 9
Region 0: Memory at e5000000 (32-bit, non-prefetchable) [size=4K]
00: 39 10 01 70 17 00 80 02 10 10 03 0c 08 20 80 00
10: 00 00 00 e5 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 09 01 00 00
40: 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:09.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
Subsystem: Hauppage computer works Inc.: Unknown device 13eb
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 16 min, 40 max, 32 set
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e7800000 (32-bit, prefetchable) [size=4K]
00: 9e 10 6e 03 06 00 80 02 02 00 00 04 00 20 80 00
10: 08 00 80 e7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 70 00 eb 13
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 10 28
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:09.1 Multimedia controller: Brooktree Corporation Bt878 (rev 02)
Subsystem: Hauppage computer works Inc.: Unknown device 13eb
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 4 min, 255 max, 32 set
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e7000000 (32-bit, prefetchable) [size=4K]
00: 9e 10 78 08 06 00 80 02 02 00 80 04 00 20 80 00
10: 08 00 00 e7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 70 00 eb 13
30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 04 ff
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:0a.0 Ethernet controller: Winbond Electronics Corp W89C940 (rev 0b)
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at b800 [size=32]
00: 50 10 40 09 03 00 80 02 0b 00 00 02 00 00 00 00
10: 01 b8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 0a 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:0b.0 VGA compatible controller: S3 Inc. 86c968 [Vision 968 VRAM] rev 0 (prog-if 00 [VGA])
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 14
Region 0: Memory at 10000000 (32-bit, non-prefetchable) [size=64M]
Expansion ROM at <unassigned> [disabled] [size=64K]
00: 33 53 f0 88 83 00 00 02 00 00 00 03 00 00 00 00
10: 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 0e 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00:0c.0 SCSI storage controller: Symbios Logic Inc. (formerly NCR) 53c875 (rev 03)
Subsystem: Tekram Technology Co.,Ltd. DC390F Ultra Wide SCSI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 17 min, 64 max, 32 set, cache line size 08
Interrupt: pin A routed to IRQ 12
Region 0: I/O ports at b400 [size=256]
Region 1: Memory at e1800000 (32-bit, non-prefetchable) [size=256]
Region 2: Memory at e1000000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at <unassigned> [disabled] [size=64K]
00: 00 10 0f 00 57 00 00 02 03 00 00 01 08 20 00 00
10: 01 b4 00 00 00 00 80 e1 00 00 00 e1 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 e1 1d 04 39
30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 11 40
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: da 00 00 9d 47 0f 09 07 04 00 89 00 80 00 0f 0a
90: ff 60 2a 01 00 ff ff ff 20 f0 35 30 98 03 00 e1
a0: 00 08 24 00 00 00 00 50 b8 03 00 e1 c0 03 00 e1
b0: 00 00 00 e1 b0 76 2a 01 46 6d 00 81 c0 03 00 e1
c0: 8f 05 00 00 75 00 70 0f 0c 00 80 00 76 0c 00 80
d0: 00 00 00 80 00 00 00 80 00 00 00 80 00 84 00 20
e0: 43 d1 e6 21 d0 18 28 00 f8 41 22 81 aa ff cf 53
f0: 12 0f 80 20 6f bf 02 81 8e 84 22 a8 d5 f3 45 73

00:13.0 VGA compatible controller: Silicon Integrated Systems [SiS] 5597/5598 VGA (rev 65) (prog-if 00 [VGA])

	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Region 0: Memory at e6000000 (32-bit, prefetchable) [disabled] [size=4M]
	Region 1: Memory at e0800000 (32-bit, non-prefetchable) [disabled] [size=64K]
	Region 2: I/O ports at b000 [disabled] [size=128]
	Expansion ROM at e5ff0000 [disabled] [size=32K]

00: 39 10 00 02 00 00 00 02 65 00 00 03 00 00 00 00 10: 08 00 00 e6 00 00 80 e0 01 b0 00 00 00 00 00 00 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30: 00 00 ff e5 00 00 00 00 00 00 00 00 00 00 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 80 e0 01 b0 00 00 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90: 00 00 00 00 00 00 80 e0 01 b0 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 80 e0 01 b0 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

lspci-vvx.2.4.0 renamed from lspci-vvx.2.4.0-test9 +3 -3
@@ -16,7 +16,7 @@
 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
-00:01.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) (prog-if 8f [Master SecP SecO PriP PriO])
+00:01.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) (prog-if 8a [Master SecP PriP])
 	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
 	Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
 	Interrupt: pin A routed to IRQ 12
@@ -25,7 +25,7 @@
 	Region 2: I/O ports at <ignored>
 	Region 3: I/O ports at <ignored>
 	Region 4: I/O ports at d000 [size=16]
-00: 39 10 13 55 01 00 00 00 d0 8f 01 01 00 20 80 00
+00: 39 10 13 55 01 00 00 00 d0 8a 01 01 00 20 80 00
 10: 01 e4 00 00 01 e0 00 00 01 d8 00 00 01 d4 00 00
 20: 01 d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 00 00
@@ -34,7 +34,7 @@
 	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B-
 	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
 	Latency: 32 set, cache line size 08
-	Interrupt: pin A routed to IRQ 9
+	Interrupt: pin A routed to IRQ 12
 	Region 0: Memory at e5000000 (32-bit, non-prefetchable) [size=4K]
 00: 39 10 01 70 17 00 80 02 10 10 03 0c 08 20 80 00
 10: 00 00 00 e5 00 00 00 00 00 00 00 00 00 00 00 00

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#15 lore raw
Quoted 6 lines · Robert Siemer

Further I always see '09' in the Configuration Space at Interrupt_Line (0x3c) for the 00:01.2 USB Controller. But 2.4.0 says:
Interrupt: pin A routed to IRQ 12
while 2.4.0-test9 states:
Interrupt: pin A routed to IRQ 9

Ahhah!

I bet it's the code that goes through all PCI devices, and tries to find devices that have the same "pirq" (aka "link") value in the tables.

How about this patch? I bet that you'll get a message about pirq table conflicts. Does USB end up working afterwards?

Linus

----

arch/i386/kernel/pci-irq.c renamed from linux/arch/i386/kernel/pci-irq.c +5 -9
@@ -462,18 +462,9 @@
 		irq = pirq & 0xf;
 		DBG(" -> hardcoded IRQ %d\n", irq);
 		msg = "Hardcoded";
-		if (dev->irq && dev->irq != irq) {
-			printk("IRQ routing conflict in pirq table! Try 'pci=autoirq'\n");
-			return 0;
-		}
 	} else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq))) {
 		DBG(" -> got IRQ %d\n", irq);
 		msg = "Found";
-		/* We refuse to override the dev->irq information. Give a warning! */
-	    	if (dev->irq && dev->irq != irq) {
-	    		printk("IRQ routing conflict in pirq table! Try 'pci=autoirq'\n");
-	    		return 0;
-	    	}
 	} else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
 		DBG(" -> assigning IRQ %d", newirq);
 		if (r->set(pirq_router_dev, dev, pirq, newirq)) {
@@ -504,6 +495,11 @@
 		if (!info)
 			continue;
 		if (info->irq[pin].link == pirq) {
+			/* We refuse to override the dev->irq information. Give a warning! */
+		    	if (dev2->irq && dev2->irq != irq) {
+		    		printk("IRQ routing conflict in pirq table for device %s\n", dev2->slot_name);
+		    		continue;
+		    	}
 			dev2->irq = irq;
 			pirq_penalty[irq]++;
 			if (dev != dev2)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

#16 lore raw

From: Linus Torvalds <[email protected]>

Quoted 8 lines · Robert Siemer
Quoted 6 lines

Further I always see '09' in the Configuration Space at Interrupt_Line (0x3c) for the 00:01.2 USB Controller. But 2.4.0 says:
Interrupt: pin A routed to IRQ 12
while 2.4.0-test9 states:
Interrupt: pin A routed to IRQ 9

Quoted 7 lines

Ahhah!

I bet it's the code that goes through all PCI devices, and tries to find devices that have the same "pirq" (aka "link") value in the tables.

How about this patch? I bet that you'll get a message about pirq table conflicts. Does USB end up working afterwards?

The patch is good! (: Currently I'm using 2.4.0 with both the patch and the alternate pirq-sis-functions.

Here some lines from the kernel after loading usb-ohci:

usb.c: registered new driver hub
IRQ for 00:01.2:0 -> PIRQ 01, mask 1eb8, excl 0000 -> newirq=9 -> got IRQ 12
PCI: Found IRQ 12 for device 00:01.2
PCI: The same IRQ used for device 00:01.1
IRQ routing conflict in pirq table for device 00:01.2
PCI: The same IRQ used for device 00:0c.0
usb-ohci.c: USB OHCI at membase 0xc8901000, IRQ 9

I send two diffs: the first of "dmesg" from a nonworking 2.4.0 to my current (working) kernel, the second of "lspci -vvvxxx" from a working 2.4.0-test9 to the working 2.4.0 I use now.

Many thanks, Linus!
Robert

----

dmesg.2.4.0.alternate+traversepatch renamed from dmesg.2.4.0.alternate_sis_func +8 -7
@@ -1,4 +1,4 @@
-Linux version 2.4.0 ([email protected]) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #5 Mon Jan 29 06:19:16 CET 2001
+Linux version 2.4.0 ([email protected]) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #7 Mon Jan 29 15:44:39 CET 2001
 BIOS-provided physical RAM map:
  BIOS-e820: 000000000009fc00 @ 0000000000000000 (usable)
  BIOS-e820: 0000000000000400 @ 000000000009fc00 (reserved)
@@ -231,9 +231,10 @@
 bttv: using 2 buffers with 2080k (4160k total) for capture
 BT848 and your chipset may not work together.
 bttv: Bt8xx card found (0).
-IRQ for 00:09.0:0 -> PIRQ 04, mask 1eb8, excl 0000 -> newirq=11 -> got IRQ 11
-PCI: Found IRQ 11 for device 00:09.0
-PCI: The same IRQ used for device 00:09.1
+IRQ for 00:09.0:0 -> PIRQ 04, mask 1eb8, excl 0000 -> newirq=11 -> got IRQ 10
+PCI: Found IRQ 10 for device 00:09.0
+IRQ routing conflict in pirq table for device 00:09.0
+IRQ routing conflict in pirq table for device 00:09.1
 bttv0: Bt878 (rev 2) at 00:09.0, irq: 11, latency: 32, memory: 0xe7800000
 bttv0: subsystem: 0070:13eb  =>  Hauppauge WinTV  =>  card=10
 bttv0: model: BT878(Hauppauge new (bt878)) [autodetected]
@@ -279,9 +280,9 @@
 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
 SIS5513: IDE controller on PCI bus 00 dev 09
 PCI: Enabling device 00:01.1 (0000 -> 0001)
-IRQ for 00:01.1:0 -> PIRQ 01, mask 1eb8, excl 0000 -> newirq=12 -> got IRQ 12
-PCI: Found IRQ 12 for device 00:01.1
-PCI: The same IRQ used for device 00:01.2
+IRQ for 00:01.1:0 -> PIRQ 01, mask 1eb8, excl 0000 -> newirq=12 -> assigning IRQ 12 ... OK
+PCI: Assigned IRQ 12 for device 00:01.1
+IRQ routing conflict in pirq table for device 00:01.2
 PCI: The same IRQ used for device 00:0c.0
 SIS5513: chipset revision 208
 SIS5513: not 100% native mode: will probe irqs later
lspci-vvvxxx.2.4.0.alternate+traversepatch renamed from lspci-vvvxxx.2.4.0-test9 +11 -11
@@ -27,8 +27,8 @@
 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-40: fa 0c 0e 0a 0b 64 00 00 ff ff 10 0f 11 20 04 01
-50: 11 28 02 01 60 0b 64 0b 9c 2e 12 00 a6 0b 00 00
+40: 0c 0c 0e 0a 0b 64 00 00 ff ff 10 0f 11 20 04 01
+50: 11 28 02 01 62 0b 64 0b 9c 2e 12 00 36 06 00 00
 60: ff 80 49 00 88 00 00 02 00 80 80 00 20 19 00 00
 70: 1a 00 00 c1 00 c1 00 00 00 00 00 00 00 00 00 00
 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
@@ -40,7 +40,7 @@
 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
-00:01.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) (prog-if 8f [Master SecP SecO PriP PriO])
+00:01.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0) (prog-if 8a [Master SecP PriP])
 	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
 	Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
 	Interrupt: pin A routed to IRQ 12
@@ -49,7 +49,7 @@
 	Region 2: I/O ports at <ignored>
 	Region 3: I/O ports at <ignored>
 	Region 4: I/O ports at d000 [size=16]
-00: 39 10 13 55 01 00 00 00 d0 8f 01 01 00 20 80 00
+00: 39 10 13 55 01 00 00 00 d0 8a 01 01 00 20 80 00
 10: 01 e4 00 00 01 e0 00 00 01 d8 00 00 01 d4 00 00
 20: 01 d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 00 00
@@ -200,14 +200,14 @@
 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-80: da 00 00 9d 47 0f 09 07 04 00 89 00 80 00 0f 0a
-90: ff 60 2a 01 00 ff ff ff 20 f0 35 30 98 03 00 e1
+80: da 00 00 35 47 08 00 07 04 00 80 00 80 00 0f 02
+90: ff c0 2c 01 00 ff ff ff 20 f0 35 30 98 03 00 e1
 a0: 00 08 24 00 00 00 00 50 b8 03 00 e1 c0 03 00 e1
-b0: 00 00 00 e1 b0 76 2a 01 46 6d 00 81 c0 03 00 e1
-c0: 8f 05 00 00 75 00 70 0f 0c 00 80 00 76 0c 00 80
-d0: 00 00 00 80 00 00 00 80 00 00 00 80 00 84 00 20
-e0: 43 d1 e6 21 d0 18 28 00 f8 41 22 81 aa ff cf 53
-f0: 12 0f 80 20 6f bf 02 81 8e 84 22 a8 d5 f3 45 73
+b0: 00 00 00 e1 d0 d5 2c 01 46 6d 00 81 c0 03 00 e1
+c0: 8f 05 00 00 93 00 70 0f 0c 00 80 00 76 0c 00 80
+d0: 00 00 00 80 00 00 00 80 00 00 00 80 00 84 00 08
+e0: ff c0 2c 01 ff c0 2c 01 d8 d5 2c 01 d8 d5 2c 01
+f0: 12 0f 80 20 12 0f 80 20 c4 00 00 a0 d5 f3 45 73
 
 00:13.0 VGA compatible controller: Silicon Integrated Systems [SiS] 5597/5598 VGA (rev 65) (prog-if 00 [VGA])
 	Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/