Maneesh Soni <[EMAIL PROTECTED]> writes:
> On Thu, Mar 09, 2006 at 02:21:48AM -0700, Eric W. Biederman wrote:
>> Maneesh Soni <[EMAIL PROTECTED]> writes:
>>
>> > Following was observed by David Wilder while testig kexec on panic on
>> > a system with Pentium 4 with HT. Looks like the problem might have
>> > occured due to CPU0 holding the lock and then it might have
>> > received the NMI and it was stopped with runq lock held. CPU1,
>> > enabled the interrupts after stopping other CPU0. Somehow it received
>> > the local apic timer interrupt and started spinning on runq lock.
>> >
>> > Appended is the possible fix for this race condition, which avoids
>> > re-enabling irqs on panic shutdown
>>
>> Grumble. We should not be disabling apics in the first place
>> Grumble.
>>
> Agreed!!
>
>> It is probably better to save and restore the irq state
>> in lapic_shutdown(). Than to open code it.
>>
>
> I hope this looks ok.
Yes. That looks fine here.
> o lapic_shutdown() re-enables which is un-desirable for panic case,
> so use local_irq_save() and local_irq_restore() to keep the irqs
> disabled for kexec on panic case, and close a possible race window.
>
> Signed-off-by: Maneesh Soni <[EMAIL PROTECTED]>
> ---
>
> linux-2.6.16-rc5-git14-maneesh/arch/i386/kernel/apic.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff -puN arch/i386/kernel/apic.c~kdump-shutdown-hang-fix
> arch/i386/kernel/apic.c
> --- linux-2.6.16-rc5-git14/arch/i386/kernel/apic.c~kdump-shutdown-hang-fix
> 2006-03-10 17:42:48.473188808 +0530
> +++ linux-2.6.16-rc5-git14-maneesh/arch/i386/kernel/apic.c 2006-03-10
> 17:43:40.390296208 +0530
> @@ -570,16 +570,18 @@ void __devinit setup_local_APIC(void)
> */
> void lapic_shutdown(void)
> {
> + unsigned long flags;
> +
> if (!cpu_has_apic)
> return;
>
> - local_irq_disable();
> + local_irq_save(flags);
> clear_local_APIC();
>
> if (enabled_via_apicbase)
> disable_local_APIC();
>
> - local_irq_enable();
> + local_irq_restore(flags);
> }
>
> #ifdef CONFIG_PM
> _
_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot