Re: [PATCH] Re: Unknown interrupt code

Andrea Arcangeli (andrea@e-mind.com)
Wed, 17 Feb 1999 16:18:31 +0100 (CET)


On Tue, 9 Feb 1999, Philipp Rumpf wrote:

>On Tue, Feb 09, 1999 at 10:39:56AM +0000, Philipp Rumpf wrote:
>> This one would work better IMO.
>
>Argh. I did not set up %ds / %es. The problem with the code in

I did not know why %ds %es has to be changed across userspace/kernel. Can
somebody tell two words to me to speed up my learning (Intel pdf specs are
quite long ;).

>2.2.1 is we do not setup the stack correctly. This code is not
>nice either, it dies without reenabling interrupts, which means
>we cannot use SysRq, the panic reboot won't work aso.

the for(;;) sucks if you was under X (as the most of userbase that may
want to report us a printk instead of a lockup ;). I think it's better to
do _only_ this:

patch against 2.2.2-pre4:

Index: irq.c
===================================================================
RCS file: /var/cvs/linux/arch/i386/kernel/irq.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 irq.c
--- irq.c 1999/01/23 16:25:26 1.1.1.2
+++ linux/arch/i386/kernel/irq.c 1999/02/17 14:50:39
@@ -999,8 +999,7 @@

void strange_interrupt(int irqnum)
{
- printk("Unexpected interrupt %d\n", irqnum & 255);
- for (;;);
+ printk("Unexpected interrupt %d\n", irqnum);
}

extern int common_unexpected;
@@ -1013,7 +1012,7 @@

jumpto -= (unsigned long)(code+10);
code[0] = 0x68; /* pushl */
- *(int *)(code+1) = i - 512;
+ *(int *)(code+1) = i;
code[5] = 0xe9; /* jmp */
*(int *)(code+6) = jumpto;

Andrea Arcangeli

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