lkml.org 
[lkml]   [2001]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [OOPS] [resolution]
    Brian Gerst <bgerst@didntduck.org>, on Tue Aug 21, 2001 [11:37:40 PM] said:
    > Paul wrote:
    > >
    > > Brian Gerst <bgerst@didntduck.org>, on Tue Aug 21, 2001 [10:45:51 PM] said:
    > > > > CPU: 0
    > > > > EIP: 0010:[<c0180a18>]
    > > > > Using defaults from ksymoops -t elf32-i386 -a i386
    > > > > EFLAGS: 00010002
    > > > > eax: 00001000 ebx: c4562368 ecx: 00000000 edx: 00000001
    > > > > esi: c4562368 edi: c4a954d4 ebp: 00000001 esp: c6887d88
    > > > > ds: 008 es: 0000 ss: 0018
    > > > ^^^^
    > > > Here is your problem. %es is set to the null segment. I had my
    > > > suspicions about the segment reload optimisation in the -ac kernels, and
    > > > this proves it. Try backing out the changes to arch/i386/kernel/entry.S
    > > > and include/asm-i386/hw_irq.h and see if that fixes the problem.
    > > >

    [....]

    > Try the attached diff.
    >

    Dear Brian;

    Well, with this backed out, I cannot get an oops anymore.
    Thanks.

    Paul
    set@pobox.com

    > --
    > Brian Gerst
    > --- linux-2.4.8-ac7/arch/i386/kernel/entry.S Mon Aug 20 19:21:49 2001
    > +++ linux-2.4.8/arch/i386/kernel/entry.S Sat Jul 7 13:55:12 2001
    > @@ -106,14 +106,10 @@
    > popl %edi; \
    > popl %ebp; \
    > popl %eax; \
    > - cmpl $__KERNEL_DS,(%esp); \
    > - je 4f ; \
    > 1: popl %ds; \
    > 2: popl %es; \
    > addl $4,%esp; \
    > 3: iret; \
    > -4: addl $12,%esp; \
    > - iret; \
    > .section .fixup,"ax"; \
    > 4: movl $0,(%esp); \
    > jmp 1b; \
    > @@ -289,11 +285,9 @@
    > pushl %esi # push the error code
    > pushl %edx # push the pt_regs pointer
    > movl $(__KERNEL_DS),%edx
    > - cmpl %edx,%ecx
    > - jz 1f
    > movl %edx,%ds
    > movl %edx,%es
    > -1: GET_CURRENT(%ebx)
    > + GET_CURRENT(%ebx)
    > call *%edi
    > addl $8,%esp
    > jmp ret_from_exception
    > --- linux-2.4.8-ac7/include/asm-i386/hw_irq.h Mon Aug 20 19:22:19 2001
    > +++ linux-2.4.8/include/asm-i386/hw_irq.h Sat Jul 7 13:55:40 2001
    > @@ -95,10 +95,6 @@
    > #define __STR(x) #x
    > #define STR(x) __STR(x)
    >
    > -/*
    > - * A segment register reload is rather expensive. Try to avoid it
    > - * if possible.
    > - */
    > #define SAVE_ALL \
    > "cld\n\t" \
    > "pushl %es\n\t" \
    > @@ -110,12 +106,9 @@
    > "pushl %edx\n\t" \
    > "pushl %ecx\n\t" \
    > "pushl %ebx\n\t" \
    > - "movl $" STR(__KERNEL_DS) ",%eax\n\t" \
    > - "cmpl %eax,7*4(%esp)\n\t" \
    > - "je 1f\n\t" \
    > - "movl %eax,%ds\n\t" \
    > - "movl %eax,%es\n\t" \
    > - "1:\n\t"
    > + "movl $" STR(__KERNEL_DS) ",%edx\n\t" \
    > + "movl %edx,%ds\n\t" \
    > + "movl %edx,%es\n\t"
    >
    > #define IRQ_NAME2(nr) nr##_interrupt(void)
    > #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)

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

    \
     
     \ /
      Last update: 2005-03-22 12:57    [W:0.038 / U:58.724 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site