lkml.org 
[lkml]   [1998]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: floppy in 2.1.99

On Sat, 2 May 1998, Charles Shannon Hendrix wrote:

> My system dies booting 2.1.99 right after the floppy init message.
> I thought that was fixed in 2.1.99?

your system has one known MP-BIOS bug, the BIOS creates such IRQ MP-table
entries on your board:

I/O Ints: Type Polarity Trigger Bus ID IRQ
INT active-hi level 1 6

such 'active-hi+level' IRQs are illegal, the only allowed combinations are
these:

INT active-hi edge 1 1 [ISA IRQ]
INT active-lo level 0 7:D [PCI IRQ]

io-apic-patch-2.1.97-A (attached) works this around (without affecting
working boards), but it's not included in 2.1.99 yet. Yes it generates
some nasty flood of bootup messages, but the problem is nasty too ...

[i think this is the only known outstanding problem with your system, can
you confirm that this fixes the floppy hang?]

-- mingo

--- linux/arch/i386/kernel/io_apic.c.orig Sat Apr 25 04:30:53 1998
+++ linux/arch/i386/kernel/io_apic.c Sat Apr 25 04:46:18 1998
@@ -361,6 +361,21 @@
}
}

+ /*
+ * There are broken mptables which register ISA+high-active+level IRQs,
+ * these are illegal and are converted here to ISA+high-active+edge
+ * IRQ sources. Careful, ISA+low-active+level is another broken entry
+ * type, it represents PCI IRQs 'embedded into an ISA bus', they have
+ * to be accepted. Yes, ugh.
+ */
+ if ( (mp_bus_id_to_type[bus] == MP_BUS_ISA) &&
+ (entry.polarity == 0) /* active-high */ &&
+ (entry.trigger == 1) /* level */ )
+ {
+ printk("broken BIOS, changing pin %d to edge\n", i);
+ entry.trigger = 0;
+ }
+
io_apic_write(0x10+2*i, *(((int *)&entry)+0));
io_apic_write(0x11+2*i, *(((int *)&entry)+1));
}


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 13:42    [from the cache]
©2003-2011 Jasper Spaans