Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753974AbYJCWZS (ORCPT ); Fri, 3 Oct 2008 18:25:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752603AbYJCWZE (ORCPT ); Fri, 3 Oct 2008 18:25:04 -0400 Received: from www.tglx.de ([62.245.132.106]:46542 "EHLO www.tglx.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752156AbYJCWZC (ORCPT ); Fri, 3 Oct 2008 18:25:02 -0400 Date: Sat, 4 Oct 2008 00:24:40 +0200 (CEST) From: Thomas Gleixner To: Alan Stern cc: Dave Hansen , gregkh , "linux-kernel@vger.kernel.org" , USB list Subject: Re: USB disconnects every 30 seconds (2.6.27-rc8) In-Reply-To: Message-ID: References: User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1768 Lines: 49 On Fri, 3 Oct 2008, Alan Stern wrote: > On Fri, 3 Oct 2008, Dave Hansen wrote: > There are a number of other places in the trace where delays are > shorter than they should be. This is out of my area of expertise, so > I'm CC'ing Thomas Gleixner. With luck he'll be able to help. > > Thomas, the background for this problem is available here: > > http://marc.info/?l=linux-kernel&m=122305738430115&w=2 Is NOHZ and HIGHRES disabled on those kernels? Hugh spotted a typo in that code today. Fix is below. It causes jiffies to increment too fast which explains your short delays. Thanks, tglx --- diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index bd70345..cb01cd8 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -235,7 +235,8 @@ static void tick_do_broadcast_on_off(void *why) case CLOCK_EVT_NOTIFY_BROADCAST_FORCE: if (!cpu_isset(cpu, tick_broadcast_mask)) { cpu_set(cpu, tick_broadcast_mask); - if (bc->mode == TICKDEV_MODE_PERIODIC) + if (tick_broadcast_device.mode == + TICKDEV_MODE_PERIODIC) clockevents_shutdown(dev); } if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE) @@ -245,7 +246,8 @@ static void tick_do_broadcast_on_off(void *why) if (!tick_broadcast_force && cpu_isset(cpu, tick_broadcast_mask)) { cpu_clear(cpu, tick_broadcast_mask); - if (bc->mode == TICKDEV_MODE_PERIODIC) + if (tick_broadcast_device.mode == + TICKDEV_MODE_PERIODIC) tick_setup_periodic(dev, 0); } break; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/