Re: ISAPNP using an invalid IRQ, 2.4.0-test7

From: Jaroslav Kysela (perex@suse.cz)
Date: Tue Aug 29 2000 - 03:01:40 EST


On Tue, 29 Aug 2000, M.H.VanLeeuwen wrote:

> With default BIOS settings, IRQ 5 is unavailable for ISA yet
> it is being assigned by the ne.c driver and NFS root system
> doesn't finish booting.
>
> Is this a driver problem or a ISAPNP problem?

It is general IRQ manager problem. ISA PnP code cannot determine which
interrupts cannot be used. I think that we need some next layer between
IO APIC control code and Plug & Play routines to exchange this information
to prevent allocation of a free but unuseable IRQ for ISA PnP devices.

                                                Jaroslav

> I changed drivers/pnp/isapnp.c to switch IRQ 5 & 9 to temporarily
> work around this problem, is there a better solution?
> Maybe, mask out the interrupts that aren't provided by the BIOS when
> reading this table?
>
> static int isapnp_valid_irq(struct isapnp_cfgtmp *cfg, int idx)
> {
> /* IRQ priority: this table is good for i386 */
> static unsigned short xtab[16] = {
> - 5, 10, 11, 12, 9, 14, 15, 7, 3, 4, 13, 0, 1, 6, 8, 2
> + 9, 10, 11, 12, 5, 14, 15, 7, 3, 4, 13, 0, 1, 6, 8, 2
> };
>
>
> Here is a diff -u of dmesg's with and without "Assign IRQ for VGA" set
> in the BIOS. Don't know if it will be useful.
>
> System is an ABIT BP6 dual 466's w/QQ bios, ~OC.
>
> Martin
>
> --- dmesg.vgairq Mon Aug 28 23:32:50 2000
> +++ dmesg.novgairq Sat Aug 26 22:27:31 2000
> @@ -42,6 +42,7 @@
> Int: type 0, pol 0, trig 0, bus 2, IRQ 00, APIC ID 2, APIC INT 02
> Int: type 0, pol 0, trig 0, bus 2, IRQ 03, APIC ID 2, APIC INT 03
> Int: type 0, pol 0, trig 0, bus 2, IRQ 04, APIC ID 2, APIC INT 04
> +Int: type 0, pol 0, trig 0, bus 2, IRQ 05, APIC ID 2, APIC INT 05
> Int: type 0, pol 0, trig 0, bus 2, IRQ 06, APIC ID 2, APIC INT 06
> Int: type 0, pol 0, trig 0, bus 2, IRQ 07, APIC ID 2, APIC INT 07
> Int: type 0, pol 1, trig 1, bus 2, IRQ 08, APIC ID 2, APIC INT 08
> @@ -53,7 +54,6 @@
> Int: type 0, pol 3, trig 3, bus 0, IRQ 1f, APIC ID 2, APIC INT 13
> Int: type 0, pol 3, trig 3, bus 0, IRQ 4c, APIC ID 2, APIC INT 12
> Int: type 0, pol 3, trig 3, bus 0, IRQ 4d, APIC ID 2, APIC INT 12
> -Int: type 0, pol 3, trig 3, bus 1, IRQ 00, APIC ID 2, APIC INT 10
> Int: type 2, pol 0, trig 0, bus 2, IRQ 00, APIC ID 2, APIC INT 17
> Lint: type 3, pol 0, trig 0, bus 0, IRQ 00, APIC ID ff, APIC LINT 00
> Lint: type 1, pol 0, trig 0, bus 0, IRQ 00, APIC ID ff, APIC LINT 01
> @@ -126,7 +126,7 @@
> ...changing IO-APIC physical APIC ID to 2 ... ok.
> Synchronizing Arb IDs.
> init IO_APIC IRQs
> - IO-APIC (apicid-pin) 2-0, 2-5, 2-10, 2-11, 2-17, 2-20, 2-21, 2-22, 2-23 not connected.
> + IO-APIC (apicid-pin) 2-0, 2-10, 2-11, 2-16, 2-17, 2-20, 2-21, 2-22, 2-23 not connected.
> ..TIMER: vector=49 pin1=2 pin2=0
> activating NMI Watchdog ... done.
> number of MP IRQ sources: 18.
> @@ -148,18 +148,18 @@
> 02 003 03 0 0 0 0 0 1 1 31
> 03 003 03 0 0 0 0 0 1 1 41
> 04 003 03 0 0 0 0 0 1 1 49
> - 05 000 00 1 0 0 0 0 0 0 00
> - 06 003 03 0 0 0 0 0 1 1 51
> - 07 003 03 0 0 0 0 0 1 1 59
> - 08 003 03 0 0 0 0 0 1 1 61
> - 09 003 03 0 0 0 0 0 1 1 69
> + 05 003 03 0 0 0 0 0 1 1 51
> + 06 003 03 0 0 0 0 0 1 1 59
> + 07 003 03 0 0 0 0 0 1 1 61
> + 08 003 03 0 0 0 0 0 1 1 69
> + 09 003 03 0 0 0 0 0 1 1 71
> 0a 000 00 1 0 0 0 0 0 0 00
> 0b 000 00 1 0 0 0 0 0 0 00
> - 0c 003 03 0 0 0 0 0 1 1 71
> + 0c 003 03 0 0 0 0 0 1 1 79
> 0d 000 00 1 0 0 0 0 0 0 00
> - 0e 003 03 0 0 0 0 0 1 1 79
> - 0f 003 03 0 0 0 0 0 1 1 81
> - 10 003 03 1 1 0 1 0 1 1 89
> + 0e 003 03 0 0 0 0 0 1 1 81
> + 0f 003 03 0 0 0 0 0 1 1 89
> + 10 000 00 1 0 0 0 0 0 0 00
> 11 000 00 1 0 0 0 0 0 0 00
> 12 003 03 1 1 0 1 0 1 1 91
> 13 003 03 1 1 0 1 0 1 1 99
> @@ -172,6 +172,7 @@
> IRQ1 -> 1
> IRQ3 -> 3
> IRQ4 -> 4
> +IRQ5 -> 5
> IRQ6 -> 6
> IRQ7 -> 7
> IRQ8 -> 8
> @@ -180,7 +181,6 @@
> IRQ13 -> 13
> IRQ14 -> 14
> IRQ15 -> 15
> -IRQ16 -> 16
> IRQ18 -> 18
> IRQ19 -> 19
> .................................... done.
> @@ -202,7 +202,6 @@
> PCI->APIC IRQ transform: (B0,I7,P3) -> 19
> PCI->APIC IRQ transform: (B0,I19,P0) -> 18
> PCI->APIC IRQ transform: (B0,I19,P1) -> 18
> -PCI->APIC IRQ transform: (B1,I0,P0) -> 16
> Limiting direct PCI/PCI transfers.
> isapnp: Scanning for Pnp cards...
> isapnp: Card 'SMC EZ Card (1660)'
>

-----
Jaroslav Kysela <perex@suse.cz>
SuSE Linux http://www.suse.com
ALSA project http://www.alsa-project.org

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



This archive was generated by hypermail 2b29 : Thu Aug 31 2000 - 21:00:23 EST