From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261974AbVFGUbm (ORCPT ); Tue, 7 Jun 2005 16:31:42 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261975AbVFGUbm (ORCPT ); Tue, 7 Jun 2005 16:31:42 -0400 Received: from gateway-1237.mvista.com ([12.44.186.158]:44785 "EHLO av.mvista.com") by vger.kernel.org with ESMTP id S261974AbVFGUbi (ORCPT ); Tue, 7 Jun 2005 16:31:38 -0400 Subject: Re: [patch] Real-Time Preemption, -RT-2.6.12-rc6-V0.7.47-29 From: Daniel Walker Reply-To: dwalker@mvista.com To: Ingo Molnar Cc: linux-kernel@vger.kernel.org, Esben Nielsen , Michal Schmidt , Steven Rostedt In-Reply-To: <20050607194119.GA11185@elte.hu> References: <20050607194119.GA11185@elte.hu> Content-Type: text/plain Organization: MontaVista Date: Tue, 07 Jun 2005 13:31:30 -0700 Message-Id: <1118176290.18629.29.camel@dhcp153.mvista.com> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2005-06-07 at 21:41 +0200, Ingo Molnar wrote: > ere are more microoptimizations to the spin_lock/unlock hotpath: > > - the caching of mutex_getprio() priority in p->normal_prio > > - the mutex lock/unlock paths are now all fall-through. (Found a gcc > bug, it mishandles __builtin_expect() in certain cases and produces > correct but suboptimal code - we are working it around now.) > > - reduced the amount of recursive preemption-counter bumps via the use > of raw spinlocks > > - rely on the preemption-counter instead of IRQs-off sections There is a local_irq_enable missing someplace in UP .. BUG: scheduling with irqs disabled: khelper/0x00000000/5 caller is __down_mutex+0x276/0x440 [] __down_mutex+0x276/0x440 (4) [] schedule+0xec/0x100 (4) [] __down_mutex+0x276/0x440 (12) [] remove_wait_queue+0x10/0x40 (64) [] __spin_lock+0x22/0x40 (32) [] remove_wait_queue+0x10/0x40 (8) [] _spin_lock_irqsave+0xc/0x20 (12) [] remove_wait_queue+0x10/0x40 (8) [] remove_wait_queue+0x10/0x40 (4) [] worker_thread+0x14b/0x280 (20) [] __call_usermodehelper+0x0/0x60 (16) [] default_wake_function+0x0/0x40 (28) [] default_wake_function+0x0/0x40 (32) [] worker_thread+0x0/0x280 (36) [] kthread+0x84/0xc0 (4) [] kthread+0x0/0xc0 (20) [] kernel_thread_helper+0x5/0x18 (16)