mjbrantley
04-06-2008, 06:12 PM
Hi,
I'm trying to install RHEL v4 in a new VM on my home system using VMWare Workstation 4.0.
Getting the following error very early on in the install (right after hitting return from the initial install screen),
[<c011c26b>] dequeue_task+0xa/0x3b
[<c011c4c9>] deactivate_task+0x1d/0x27
[<c030e9a2>] schedule+0x1f6/0x5ea
[<c02345ad>] poke_blanked_console+0x8f/0x9a
[<c02339dd>] vt_console_print+0x293/0x2a3
[<c030fe26>] schedule_timeout+0xf1/0x10c
[<c012b811>] process_timeout+0x0/0x5
[<c012191f>] printk+0xe/0x11
[<c0106920>] die+0x21a/0x22b
[<c0136c17>] search_exception_tables+0x1f/0x21
[<c0106c83>] do_invalid_op+0xcf/0xf2
[<c01040c7>] mwait_idle+0x23/0x40
[<c0108910>] do_IRQ+0x2b3/0x2bf
[<c0106bb4>] do_invalid_op+0x0/0xf2
[<c03115c7>] error_code+0x2f/0x38
[<c01040c7>] mwait_idle+0x23/0x40
[<c010408f>] cpu_idle+0x1f/0x34
[<c03ba6b9>] start_kernel+0x214/0x216
Kernel panic - not syncing: kernel/sched.c:2689: spin_lock(kernel/sched.c:c03ea
20) already locked by kernel/sched.c/2689
<0>Kernel panic - not syncing: kernel/sched.c:460: spin_lock(kernel/sched.c:c0
ea120) already locked by kernel/sched.c/2689
I went and looked up the code in sched.c at line 2689 and it looks like it is reponsible for locking the CPU in some fashion.
Here is the code that contains line 2689,
2689 static void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2690 {
2691 struct sched_domain *tmp, *sd = NULL;
2692 cpumask_t sibling_map;
2693 int i;
2694
2695 for_each_domain(this_cpu, tmp)
2696 if (tmp->flags & SD_SHARE_CPUPOWER)
2697 sd = tmp;
2698
2699 if (!sd)
2700 return;
2701
2702 /*
2703 * Unlock the current runqueue because we have to lock in
2704 * CPU order to avoid deadlocks. Caller knows that we might
2705 * unlock. We keep IRQs disabled.
2706 */
2707 spin_unlock(&this_rq->lock);
2708
2709 sibling_map = sd->span;
2710
2711 for_each_cpu_mask(i, sibling_map)
2712 spin_lock(&cpu_rq(i)->lock);
2713 /*
2714 * We clear this CPU from the mask. This both simplifies the
2715 * inner loop and keps this_rq locked when we exit:
2716 */
2717 cpu_clear(this_cpu, sibling_map);
2718
2719 for_each_cpu_mask(i, sibling_map) {
2720 runqueue_t *smt_rq = cpu_rq(i);
2721
2722 wakeup_busy_runqueue(smt_rq);
2723 }
2724
2725 for_each_cpu_mask(i, sibling_map)
2726 spin_unlock(&cpu_rq(i)->lock);
2727 /*
2728 * We exit with this_cpu's rq still held and IRQs
2729 * still disabled:
2730 */
2731 }
I have a Pentium 4 3.0 Ghz Hyperthread. I've tried disabling Hyperthreading through my bios but that didn't help.
When the VM is sitting in this state, my CPU is lingering at ~90% utilization. Clearly, some thing the linux kernel does not like about locking my CPU but I'm not sure what!
Any help would be appreciated!!
Thanks,
Mike
I'm trying to install RHEL v4 in a new VM on my home system using VMWare Workstation 4.0.
Getting the following error very early on in the install (right after hitting return from the initial install screen),
[<c011c26b>] dequeue_task+0xa/0x3b
[<c011c4c9>] deactivate_task+0x1d/0x27
[<c030e9a2>] schedule+0x1f6/0x5ea
[<c02345ad>] poke_blanked_console+0x8f/0x9a
[<c02339dd>] vt_console_print+0x293/0x2a3
[<c030fe26>] schedule_timeout+0xf1/0x10c
[<c012b811>] process_timeout+0x0/0x5
[<c012191f>] printk+0xe/0x11
[<c0106920>] die+0x21a/0x22b
[<c0136c17>] search_exception_tables+0x1f/0x21
[<c0106c83>] do_invalid_op+0xcf/0xf2
[<c01040c7>] mwait_idle+0x23/0x40
[<c0108910>] do_IRQ+0x2b3/0x2bf
[<c0106bb4>] do_invalid_op+0x0/0xf2
[<c03115c7>] error_code+0x2f/0x38
[<c01040c7>] mwait_idle+0x23/0x40
[<c010408f>] cpu_idle+0x1f/0x34
[<c03ba6b9>] start_kernel+0x214/0x216
Kernel panic - not syncing: kernel/sched.c:2689: spin_lock(kernel/sched.c:c03ea
20) already locked by kernel/sched.c/2689
<0>Kernel panic - not syncing: kernel/sched.c:460: spin_lock(kernel/sched.c:c0
ea120) already locked by kernel/sched.c/2689
I went and looked up the code in sched.c at line 2689 and it looks like it is reponsible for locking the CPU in some fashion.
Here is the code that contains line 2689,
2689 static void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2690 {
2691 struct sched_domain *tmp, *sd = NULL;
2692 cpumask_t sibling_map;
2693 int i;
2694
2695 for_each_domain(this_cpu, tmp)
2696 if (tmp->flags & SD_SHARE_CPUPOWER)
2697 sd = tmp;
2698
2699 if (!sd)
2700 return;
2701
2702 /*
2703 * Unlock the current runqueue because we have to lock in
2704 * CPU order to avoid deadlocks. Caller knows that we might
2705 * unlock. We keep IRQs disabled.
2706 */
2707 spin_unlock(&this_rq->lock);
2708
2709 sibling_map = sd->span;
2710
2711 for_each_cpu_mask(i, sibling_map)
2712 spin_lock(&cpu_rq(i)->lock);
2713 /*
2714 * We clear this CPU from the mask. This both simplifies the
2715 * inner loop and keps this_rq locked when we exit:
2716 */
2717 cpu_clear(this_cpu, sibling_map);
2718
2719 for_each_cpu_mask(i, sibling_map) {
2720 runqueue_t *smt_rq = cpu_rq(i);
2721
2722 wakeup_busy_runqueue(smt_rq);
2723 }
2724
2725 for_each_cpu_mask(i, sibling_map)
2726 spin_unlock(&cpu_rq(i)->lock);
2727 /*
2728 * We exit with this_cpu's rq still held and IRQs
2729 * still disabled:
2730 */
2731 }
I have a Pentium 4 3.0 Ghz Hyperthread. I've tried disabling Hyperthreading through my bios but that didn't help.
When the VM is sitting in this state, my CPU is lingering at ~90% utilization. Clearly, some thing the linux kernel does not like about locking my CPU but I'm not sure what!
Any help would be appreciated!!
Thanks,
Mike