From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-iw0-f179.google.com (mail-iw0-f179.google.com [209.85.214.179]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id BAC8EB6F74 for ; Thu, 21 Jul 2011 08:14:26 +1000 (EST) Received: by iwg8 with SMTP id 8so644219iwg.38 for ; Wed, 20 Jul 2011 15:14:23 -0700 (PDT) Message-ID: <4E2752F6.6000803@gmail.com> Date: Wed, 20 Jul 2011 16:13:10 -0600 From: David Ahern MIME-Version: 1.0 To: linuxppc-dev@lists.ozlabs.org Subject: Fwd: perf PPC: kernel panic with callchains and context switch events Content-Type: text/plain; charset=ISO-8859-1 List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , [suggestion to try this mailing list as well] -------- Original Message -------- Subject: perf PPC: kernel panic with callchains and context switch events Date: Wed, 20 Jul 2011 15:57:51 -0600 From: David Ahern To: Anton Blanchard , Paul Mackerras , linux-perf-users@vger.kernel.org, LKML I am hoping someone familiar with PPC can help understand a panic that is generated when capturing callchains with context switch events. Call trace is below. The short of it is that walking the callchain generates a page fault. To handle the page fault the mmap_sem is needed, but it is currently held by setup_arg_pages. setup_arg_pages calls shift_arg_pages with the mmap_sem held. shift_arg_pages then calls move_page_tables which has a cond_resched at the top of its for loop. If the cond_resched() is removed from move_page_tables everything works beautifully - no panics. So, the question: is it normal for walking the stack to trigger a page fault on PPC? The panic is not seen on x86 based systems. []rb_erase+0x1b4/0x3e8 []__dequeue_entity+0x50/0xe8 []set_next_entity+0x178/0x1bc []pick_next_task_fair+0xb0/0x118 []schedule+0x500/0x614 []rwsem_down_failed_common+0xf0/0x264 []rwsem_down_read_failed+0x34/0x54 []down_read+0x3c/0x54 []do_page_fault+0x114/0x5e8 []handle_page_fault+0xc/0x80 []perf_callchain+0x224/0x31c []perf_prepare_sample+0x240/0x2fc []__perf_event_overflow+0x280/0x398 []perf_swevent_overflow+0x9c/0x10c []perf_swevent_ctx_event+0x1d0/0x230 []do_perf_sw_event+0x84/0xe4 []perf_sw_event_context_switch+0x150/0x1b4 []perf_event_task_sched_out+0x44/0x2d4 []schedule+0x2c0/0x614 []__cond_resched+0x34/0x90 []_cond_resched+0x4c/0x68 []move_page_tables+0xb0/0x418 []setup_arg_pages+0x184/0x2a0 []load_elf_binary+0x394/0x1208 []search_binary_handler+0xe0/0x2c4 []do_execve+0x1bc/0x268 []sys_execve+0x84/0xc8 []ret_from_syscall+0x0/0x3c Thanks, David