Re: [Kgdb-bugreport] [GIT PULL] kgdb regression fixes for2.6.35-rc5

From: Frederic Weisbecker
Date: Wed Jul 28 2010 - 22:55:16 EST


On Thu, Jul 29, 2010 at 10:49:50AM +0800, DDD wrote:
> Frederic Weisbecker wrote:
>> On Wed, Jul 28, 2010 at 07:14:42PM -0500, Jason Wessel wrote:
>>> On 07/28/2010 04:26 PM, Linus Torvalds wrote:
>>>> On Wed, Jul 28, 2010 at 2:17 PM, Frederic Weisbecker <fweisbec@xxxxxxxxx> wrote:
>>>>> I'm sorry I spot it a bit late.
>>>>> There is a little issue in this patch, irqs won't
>>>>> be restored:
>>>>>
>>>>> @@ -588,9 +588,10 @@ int kgdb_ll_trap(int cmd, const char *str,
>>>>> if (!kgdb_io_module_registered)
>>>>> return NOTIFY_DONE;
>>>>>
>>>>> + local_irq_save(flags);
>>>>> return __kgdb_notify(&args, cmd);
>>>>> + local_irq_restore(flags);
>>>>> }
>>>> Yeah, that's obviously crap. I also wonder why __kgdb_notify messes up
>>>> the flags to begin with.
>>>>
>>> This should not be needed as the irqs should already be off while in the overflow handler.
>>
>>
>>
>> Interrupts are not disabled in the debug exception handler.
>
> Hi Frederic,
>
> The debug was initialized as an intr gate, thus the interrupts have been
> disabled in the debug exception handler. :-)



Ah ok. Thanks for the correction :)




> arch/x86/kernel/traps.c:
> 820 /* Set of traps needed for early debugging. */
> 821 void __init early_trap_init(void)
> 822 {
> 823 set_intr_gate_ist(1, &debug, DEBUG_STACK);
> 824 /* int3 can be called from all */
> 825 set_system_intr_gate_ist(3, &int3, DEBUG_STACK);
> 826 set_intr_gate(14, &page_fault);
> 827 load_idt(&idt_descr);
> 828 }
>
> Thanks,
> Dongdong

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