[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] xen: cpupools: avoid crashing if shutting down with free CPUs
On 05/06/2015 05:10 PM, Dario Faggioli wrote: in fact, before this change, shutting down or suspending the system with some CPUs not assigned to any cpupool, would crash as follows: (XEN) Xen call trace: (XEN) [<ffff82d080101757>] disable_nonboot_cpus+0xb5/0x138 (XEN) [<ffff82d0801a8824>] enter_state_helper+0xbd/0x369 (XEN) [<ffff82d08010614a>] continue_hypercall_tasklet_handler+0x4a/0xb1 (XEN) [<ffff82d0801320bd>] do_tasklet_work+0x78/0xab (XEN) [<ffff82d0801323f3>] do_tasklet+0x5e/0x8a (XEN) [<ffff82d080163cb6>] idle_loop+0x56/0x6b (XEN) (XEN) (XEN) **************************************** (XEN) Panic on CPU 0: (XEN) Xen BUG at cpu.c:191 (XEN) **************************************** This is because, for free CPUs, -EBUSY were being returned when trying to tear them down, making cpu_down() unhappy. It is certainly unpractical to forbid shutting down or suspenging if there are unassigned CPUs, so this change fixes the above by just avoiding returning -EBUSY for those CPUs. If shutting off, that does not matter much anyway. If suspending, we make sure that the CPUs remain unassigned when resuming. While there, take the chance to: - fix the doc comment of cpupool_cpu_remove() (it was wrong); - improve comments in general around and in cpupool_cpu_remove() and cpupool_cpu_add(); - add a couple of ASSERT()-s for checking consistency. I did a test with the patches applied. # xl cpupool-cpu-remove Pool-0 2 # echo mem >/sys/power/state When resuming this resulted in:(XEN) mce_intel.c:735: MCA Capability: BCAST 1 SER 0 CMCI 1 firstbank 0 extended MCE MSR 0 (XEN) CPU0 CMCI LVT vector (0xf2) already installed (XEN) Finishing wakeup from ACPI S3 state. (XEN) Enabling non-boot CPUs ... (XEN) Xen BUG at cpu.c:149 (XEN) ----[ Xen-4.6-unstable x86_64 debug=y Tainted: C ]---- (XEN) CPU: 0 (XEN) RIP: e008:[<ffff82d080101531>] cpu_up+0xaf/0xfe (XEN) RFLAGS: 0000000000010202 CONTEXT: hypervisor (XEN) rax: 0000000000008016 rbx: 0000000000000000 rcx: 0000000000000000 (XEN) rdx: ffff82d0802e0000 rsi: 0000000000000004 rdi: ffff82d080296488 (XEN) rbp: ffff82d0802e7e00 rsp: ffff82d0802e7de0 r8: 0000000000081000 (XEN) r9: ffff82d15ba99600 r10: 00000000dba99600 r11: ffff82d080299600 (XEN) r12: 0000000000000002 r13: ffff82d08025cf6c r14: 0000000000000002 (XEN) r15: ffff82d0802e0000 cr0: 000000008005003b cr4: 00000000001526f0 (XEN) cr3: 00000000dba94000 cr2: 0000000000000000 (XEN) ds: 0018 es: 0010 fs: 8100 gs: 0010 ss: e010 cs: e008 (XEN) Xen stack trace from rsp=ffff82d0802e7de0: (XEN) ffff82d0802e0000 ffff82d080297360 0000000000000002 0000000000000004 (XEN) ffff82d0802e7e30 ffff82d080101733 0000000000000003 0000000000000000 (XEN) ffff82d080329130 00000000001526f0 ffff82d0802e7e80 ffff82d0801a6a8d (XEN) ffff82d0802e7e60 0000000000000282 ffff82d080328de8 ffff8301351c4fd0 (XEN) ffff8300d8758000 ffff82d080328ec0 ffff82d080328de8 ffffffffffffffff (XEN) ffff82d0802e7ea0 ffff82d08010615f ffff8300d87581c8 0000000000000000 (XEN) ffff82d0802e7ec0 ffff82d08013101d ffff82d08012ebc4 ffff82d080328ed0 (XEN) ffff82d0802e7ef0 ffff82d08013134c 00000021dc728d2c ffff82d0802e0000 (XEN) 00000021dc728d2c ffff8300dbcf0000 ffff82d0802e7f10 ffff82d080161bcb (XEN) ffff82d08012e37a ffff8300dbcf0000 ffff82d0802e7e10 ffff8801fa5e8000 (XEN) ffff8801fa5e8000 ffff8801fa5e8000 0000000000000000 0000000000000000 (XEN) ffffffff818cb700 0000000000000246 0000000000000017 0000000000000007 (XEN) 000000000000e3b8 0000000000000000 ffffffff8100130a 00000000deadbeef (XEN) 00000000deadbeef 00000000deadbeef 0000010000000000 ffffffff8100130a (XEN) 000000000000e033 0000000000000246 ffff8801fa5ebed8 000000000000e02b (XEN) 0000000000000000 0000000000000000 0000000000000000 0000000000000000 (XEN) 0000000000000000 ffff8300dbcf0000 0000000000000000 0000000000000000 (XEN) Xen call trace: (XEN) [<ffff82d080101531>] cpu_up+0xaf/0xfe (XEN) [<ffff82d080101733>] enable_nonboot_cpus+0x4f/0xfc (XEN) [<ffff82d0801a6a8d>] enter_state_helper+0x2cb/0x370 (XEN) [<ffff82d08010615f>] continue_hypercall_tasklet_handler+0x4a/0xb1 (XEN) [<ffff82d08013101d>] do_tasklet_work+0x78/0xab (XEN) [<ffff82d08013134c>] do_tasklet+0x5e/0x8a (XEN) [<ffff82d080161bcb>] idle_loop+0x56/0x70 (XEN) (XEN) (XEN) **************************************** (XEN) Panic on CPU 0: (XEN) Xen BUG at cpu.c:149 (XEN) **************************************** Juergen _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |