Hotplug CPU printk issue

From: Shaohua Li
Date: Wed May 25 2005 - 21:54:15 EST


On Thu, 2005-04-14 at 16:27 +0800, Li Shaohua wrote:
> On Wed, 2005-04-13 at 16:32, Pavel Machek wrote:
> > root@hobit:/sys/devices/system/cpu/cpu1# dmesg | tail -25
> > [<c011d001>] activate_task+0x1/0xa0
> > [<c011d128>] resched_task+0x68/0x90
> > [<c011d8ba>] try_to_wake_up+0x2aa/0x2f0
> > [<c025ed7a>] fbcon_cursor+0x19a/0x270
> > [<c02c4958>] hide_cursor+0x18/0x30
> > [<c02c758f>] vt_console_print+0x24f/0x260
> > [<c02c7340>] vt_console_print+0x0/0x260
> > [<c01247e7>] __call_console_drivers+0x57/0x60
> > [<c01248e0>] call_console_drivers+0x80/0x110
> > [<c0124d8e>] release_console_sem+0x4e/0xc0
> > [<c0124c12>] vprintk+0x192/0x240
> > [<c0528891>] preempt_schedule_irq+0x51/0x80
> > [<c02adeca>] acpi_processor_idle+0x0/0x265
> > [<c010325e>] need_resched+0x1f/0x21
> > [<c02adeca>] acpi_processor_idle+0x0/0x265
> > [<c0124a77>] printk+0x17/0x20
> > [<c010b583>] cpu_init+0x73/0x360
> > [<c0117bd6>] start_secondary+0x6/0x170
> > Code: d2 74 bd fc 8b 44 24 28 b9 0e 00 00 00 8b 74 24 14 01 c6 b8
> 0e
> > 00 00 00 89 74 24 1c 8b 74 24 30 89 44 24 10 8b 7c 24 1c 83 c6 10
> <f3>
> > a5 8b 74 24 24 8b 44 24 1c 89 4c 24 10 01 ee f7 d5 21 ee 89
> > <0>Kernel panic - not syncing: Attempted to kill the idle task!
> > Stuck ??
> > Inquiring remote APIC #0...
> > ... APIC #0 ID: 00000000
> > ... APIC #0 VERSION: 00040011
> > ... APIC #0 SPIV: 000000ff
> > root@hobit:/sys/devices/system/cpu/cpu1#
> Andrew,
> Below patch fixed Pavel's oops. But strange is the 'system_state'
> check
> is added for CPU hotplug by Rusty. This really makes me confused.
> Could
> you please look at it.
> This can be reproduced 100% with radeonfb driver load. Attached is
> the
> dmesg of an oops. It seems the 'objp' parameter for
> 'cache_alloc_debugcheck_after' is invalid.
>
> Thanks,
> Shaohua
>
> --- a/kernel/printk.c 2005-04-12 10:12:19.000000000 +0800
> +++ b/kernel/printk.c 2005-04-13 17:22:40.912897328 +0800
> @@ -624,8 +624,7 @@ asmlinkage int vprintk(const char *fmt,
> log_level_unknown = 1;
> }
>
> - if (!cpu_online(smp_processor_id()) &&
> - system_state != SYSTEM_RUNNING) {
> + if (!cpu_online(smp_processor_id())) {
> /*
> * Some console drivers may assume that per-cpu resources have
> * been allocated. So don't allow them to be called by this
Andrew,
Could above patch be put into mm tree? It fixes the oops of CPU hotplug
with radeon fb enabled.
The reason is the per-cpu data (radeon fb calls kmalloc) isn't
initialized when CPU hotplug is processing. system_state is
SYSTEM_RUNNING for cpu hotplug.

Thanks,
Shaohua

-
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/