On Wed, May 11, 2005 at 01:42:35PM -0700, Paul Jackson wrote: > So what we'd really like to do would be to first fallback to all the > cpus allowed in the specified tasks cpuset (no walking the cpuset > hierarchy), and see if any of those cpus are still online to receive > this orphan task. Unless someone has botched the system configuration, > and taken offline all the cpus in a cpuset, this should yield up a cpu > that is still both allowed and online. If that fails, then to heck with > honoring cpuset placement - just take the first online cpu we can find. > I tried your suggestion, but hit another oops. This has more to do with hotplug+preempt looks like Code: fc 89 ec 5d e9 8b 0e 00 00 c7 04 24 5c 49 41 c0 e8 7f 39 00 00 e8 da 87 fe ff eb c1 0f 0b 36 11 32 96 41 c0 eb 92 83 f8 <6>note: cpuoff.sh[25439] exited with preempt_count 1 scheduling while atomic: cpuoff.sh/0x10000001/25439 [] schedule+0x4b2/0x4c0 [] unmap_page_range+0xc0/0xe0 [] cond_resched+0x28/0x40 [] unmap_vmas+0x196/0x290 [] exit_mmap+0xa3/0x1a0 [] mmput+0x43/0x100 [] do_exit+0xf0/0x3b0 [] die+0x18a/0x190 [] do_invalid_op+0x0/0xd0 [] do_invalid_op+0xae/0xd0 [] migrate_dead+0xa7/0xc0 [] schedule+0x2f4/0x4c0 [] preempt_schedule+0x4b/0x70 [] preempt_schedule+0x4b/0x70 [] error_code+0x4f/0x54 [] svc_proc_unregister+0x1b/0x20 [] __acpi_map_table+0x7b/0xc0 [] migrate_dead+0xa7/0xc0 [] profile_handoff_task+0x39/0x50 [] migrate_dead_tasks+0x62/0x90 [] migration_call+0x116/0x2c0 [] __stop_machine_run+0x92/0xb0 [] notifier_call_chain+0x2d/0x50 [] cpu_down+0x16b/0x2a0 [] store_online+0x5b/0x80 [] sysdev_store+0x35/0x40 [] flush_write_buffer+0x3e/0x50 [] sysfs_write_file+0x58/0x80 [] vfs_write+0xc6/0x180 [] sys_write+0x51/0x80 [] syscall_call+0x7/0xb On 2.6.12-rc4-mm1 it is even worse, it panics Booting processor 2/1 eip 3000 Calibrating delay using timer specific routine.. 1800.08 BogoMIPS (lpj=900043) CPU2: Intel Pentium III (Cascades) stepping 04 Unable to handle kernel NULL pointer dereference<7>CPU0 attaching sched-domain: at virtual address 00000001 printing eip: 00000001 *pde = 000001e3 *pte = 00000001 Oops: 0000 [#1] PREEMPT SMP Modules linked in: CPU: 2 EIP: 0060:[<00000001>] Not tainted VLI EFLAGS: 00010006 (2.6.12-rc4-mm1) EIP is at 0x1 eax: c18c0000 ebx: c04758a0 ecx: 00000001 edx: e8c13eb4 esi: ffffffff edi: c185c030 ebp: c18c1f80 esp: c18c1f2c ds: 007b es: 007b ss: 0068 Process swapper (pid: 0, threadinfo=c18c0000 task=c185c030) Stack: c0114e0d e8c13eb4 c18c0000 c0103ecc c18c0000 00000008 00000002 ffffffff c185c030 c18c1f80 00000001 0000007b 0000007b fffffffb c04048a0 00000060 00000206 c040511c 00000003 00000000 00000000 c18c0000 c01033ee 00000003 Call Trace: [] smp_call_function_interrupt+0x3d/0x60 [] call_function_interrupt+0x1c/0x24 [] schedule+0x0/0x7c0 [] preempt_schedule_irq+0x4c/0x80 [] need_resched+0x1f/0x21 [] start_secondary+0x10f/0x1a0 Code: Bad EIP value. <0>Kernel panic - not syncing: Fatal exception in interrupt Booting processor 3/2 eip 3000 Initializing CPU#3 I really havent had a chance to investigate whats going on, should be able to do that tomorrow. Here is the patch I tried, my .config and scripts -Dinakar