From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752874AbYDUUjq (ORCPT ); Mon, 21 Apr 2008 16:39:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751707AbYDUUjg (ORCPT ); Mon, 21 Apr 2008 16:39:36 -0400 Received: from wa-out-1112.google.com ([209.85.146.182]:45561 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751291AbYDUUjf (ORCPT ); Mon, 21 Apr 2008 16:39:35 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=wERmlDJrnR7BwH5PTZfXf/ayPCL5Ty338LtRYQyu6gBs79UCjwzWp8ZmnethFKt0RmTHMVj76b/Zwc7oUn1yU6Jvvoh2PSUTO/90ctDAwz2r30c18bGq2Ccu5a7mPmaH3xgbPHKDtHhP8tPesPbSFN8k4xWVJI//bnoFL2ga3GI= Message-ID: Date: Mon, 21 Apr 2008 22:39:34 +0200 From: "Dmitry Adamushko" To: "Dan Upton" Subject: Re: migration thread and active_load_balance Cc: linux-kernel@vger.kernel.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 21/04/2008, Dan Upton wrote: > On Mon, Apr 21, 2008 at 7:03 AM, Dmitry Adamushko > > wrote: > > > On 21/04/2008, Dan Upton wrote: > > > [ ... ] > > > > > > > > kernel BUG at kernel/sched.c:2103 > > > > and what's this line in your patched sched.c? > > > > is it -- BUG_ON(!irqs_disabled()); ? > > > > anything in your unposted code (e.g. find_coolest_cpu()) that might > > re-enable the interrupts before __migration_task() is called? > > > > If you post your modifications as a patch > > (Documentation/applying-patches.txt) that contains _all_ relevant > > modifications, it'd be easier to guess what's wrong. > > > Yes, that's the line. I don't recall ever reenabling interrupts, migration_thread() -> find_coolest_cpu() -> get_temperature() -> rdmsr_on_cpu() -> [ if your configuration is SMP ] -> smp_call_function_single() -> (arch/x86/kernel/smpcommon.c) ... if (cpu == me) { local_irq_disable(); func(info); local_irq_enable(); <----------- REENABLES the interrupts put_cpu(); return 0; } ... as a result, __migrate_task() -> double_rq_lock() -> BUG_ON(!irqs_disabled()) gives you an "oops". > > -dan > -- Best regards, Dmitry Adamushko