From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sudeep Holla Subject: Re: [PATCH 16/20] sched/idle: Use explicit broadcast oneshot control function Date: Tue, 28 Apr 2015 14:04:56 +0100 Message-ID: <553F8578.5050109@arm.com> References: <2112147.0kYCHhbEJT@vostro.rjw.lan> <18575128.8R6Lp68k0Q@vostro.rjw.lan> <553F6236.5020300@linaro.org> <553F6424.1090704@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from foss.arm.com ([217.140.101.70]:59217 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965502AbbD1NFA (ORCPT ); Tue, 28 Apr 2015 09:05:00 -0400 In-Reply-To: Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: Sudeep Holla , Daniel Lezcano , Linus Walleij , "Rafael J. Wysocki" , Linux PM list , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Linux Kernel Mailing List , ACPI Devel Maling List Hi Rafael, On 28/04/15 13:19, Rafael J. Wysocki wrote: > On Tue, Apr 28, 2015 at 12:42 PM, Sudeep Holla wrote: [...] >> >> At-least I observed issue only when I am using hardware broadcast timer. >> It doesn't hang when I am using hrtimer as broadcast timer in which case >> one of the cpu will be not enter deeper idle states that lose timer. >> I will rerun on v4.1-rc1 and post the complete log. > > So the bug here is that cpuidle_enter() enables interrupts, so the > assumption about them being not enabled made by > tick_broadcast_oneshot_control() is actually not valid. > > It looks like we need to acquire the clockevents_lock at least in this > particular case. Let me see where to put it and I'll send a patch for > testing. > Thanks for looking at this, I can also help in testing. Sending the complete log again with v4.1-rc1 if it's any useful. Regards, Sudeep --->8 BUG: spinlock lockup suspected on CPU#0, swapper/0/0 lock: tick_broadcast_lock+0x0/0x40, .magic: dead4ead, .owner: swapper/0/0, .owner_cpu: 0 CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.0-rc1 #16 Hardware name: ARM-Versatile Express [] (unwind_backtrace) from [] (show_stack+0x11/0x14) [] (show_stack) from [] (dump_stack+0x6d/0x78) [] (dump_stack) from [] (do_raw_spin_lock+0xc3/0x144) [] (do_raw_spin_lock) from [] (tick_handle_oneshot_broadcast+0x25/0x164) [] (tick_handle_oneshot_broadcast) from [] (sp804_timer_interrupt+0x31/0x34) [] (sp804_timer_interrupt) from [] (handle_irq_event_percpu+0x45/0x154) [] (handle_irq_event_percpu) from [] (handle_irq_event+0x2f/0x44) [] (handle_irq_event) from [] (handle_fasteoi_irq+0x6f/0xf0) [] (handle_fasteoi_irq) from [] (generic_handle_irq+0x23/0x2c) [] (generic_handle_irq) from [] (__handle_domain_irq+0x45/0x84) [] (__handle_domain_irq) from [] (gic_handle_irq+0x27/0x50) [] (gic_handle_irq) from [] (__irq_svc+0x3f/0x64) Exception stack(0xc07ebf08 to 0xc07ebf50) bf00: 00000000 c1038814 00000001 00000001 c07f3f80 ee78dec0 bf20: 00000000 c1038810 00000000 00000001 c07ebf88 c0520fc8 00000000 c07ebf50 bf40: c008151d c02e104e 40000173 ffffffff [] (__irq_svc) from [] (_test_and_clear_bit+0x26/0x48) [] (_test_and_clear_bit) from [] (tick_broadcast_oneshot_control+0x159/0x1ec) [] (tick_broadcast_oneshot_control) from [] (cpu_startup_entry+0x2c3/0x2f8) [] (cpu_startup_entry) from [] (start_kernel+0x327/0x330) BUG: spinlock lockup suspected on CPU#3, swapper/3/0 BUG: spinlock lockup suspected on CPU#4, swapper/4/0 lock: tick_broadcast_lock+0x0/0x40, .magic: dead4ead, .owner: swapper/0/0, .owner_cpu: 0 CPU: 4 PID: 0 Comm: swapper/4 Not tainted 4.1.0-rc1 #16 Hardware name: ARM-Versatile Express [] (unwind_backtrace) from [] (show_stack+0x11/0x14) [] (show_stack) from [] (dump_stack+0x6d/0x78) BUG: spinlock lockup suspected on CPU#2, swapper/2/0 [] (dump_stack) from [] (do_raw_spin_lock+0xc3/0x144) lock: tick_broadcast_lock+0x0/0x40, .magic: dead4ead, .owner: swapper/0/0, .owner_cpu: 0 [] (do_raw_spin_lock) from [] (tick_broadcast_oneshot_control+0x45/0x1ec) [] (tick_broadcast_oneshot_control) from [] (cpu_startup_entry+0x2c3/0x2f8) [] (cpu_startup_entry) from [<800093d1>] (0x800093d1) CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.1.0-rc1 #16 Hardware name: ARM-Versatile Express [] (unwind_backtrace) from [] (show_stack+0x11/0x14) [] (show_stack) from [] (dump_stack+0x6d/0x78) [] (dump_stack) from [] (do_raw_spin_lock+0xc3/0x144) [] (do_raw_spin_lock) from [] (tick_broadcast_oneshot_control+0x45/0x1ec) [] (tick_broadcast_oneshot_control) from [] (cpu_startup_entry+0x2c3/0x2f8) [] (cpu_startup_entry) from [<800093d1>] (0x800093d1) lock: tick_broadcast_lock+0x0/0x40, .magic: dead4ead, .owner: swapper/0/0, .owner_cpu: 0 CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.1.0-rc1 #16 Hardware name: ARM-Versatile Express [] (unwind_backtrace) from [] (show_stack+0x11/0x14) [] (show_stack) from [] (dump_stack+0x6d/0x78) [] (dump_stack) from [] (do_raw_spin_lock+0xc3/0x144) [] (do_raw_spin_lock) from [] (tick_broadcast_oneshot_control+0x45/0x1ec) [] (tick_broadcast_oneshot_control) from [] (cpu_startup_entry+0x2c3/0x2f8) [] (cpu_startup_entry) from [<800093d1>] (0x800093d1)