From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Gleixner Subject: Re: [3/6] 2.6.21-rc4: known regressions Date: Mon, 26 Mar 2007 18:26:47 +0200 Message-ID: <1174926407.7911.1.camel@chaos> References: <20070318184919.GW752@stusta.de> <20070326040509.GU16477@stusta.de> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-acpi-owner@vger.kernel.org To: Jeff Chua Cc: Adrian Bunk , Linus Torvalds , Andrew Morton , Linux Kernel Mailing List , "Eric W. Biederman" , "Rafael J. Wysocki" , pavel@suse.cz, linux-pm@lists.osdl.org, gregkh@suse.de, linux-pci@atrey.karlin.mff.cuni.cz, Jens Axboe , Len Brown , linux-acpi@vger.kernel.org, jgarzik@pobox.com, linux-ide@vger.kernel.org, "Michael S. Tsirkin" , Ingo Molnar List-Id: linux-pm@vger.kernel.org On Mon, 2007-03-26 at 13:37 +0800, Jeff Chua wrote: > On 3/26/07, Adrian Bunk wrote: > > > > Resume from RAM (s2ram) still broke (tried with or without > > > CONFIG_NO_HZ). Suspend to RAM seems ok, but upon resume, the screen > > > will only display "inu" and only after pressing the power button will > > > the system return to console. But "date" still doesn't advance. > > > > This might be related to the following regression: > > > > Subject : first disk access after resume takes several minutes > > ('date' does not advance after resume from RAM, CONFIG_NO_HZ=n) > > References : http://lkml.org/lkml/2007/3/8/117 > > http://lkml.org/lkml/2007/3/25/20 > > Submitter : Michael S. Tsirkin > > Handled-By : Thomas Gleixner > > Ingo Molnar > > Status : problem is being debugged > > Adrian, > > It's related. I tested without CONFIG_HPET_TIMER, and now my X60 can > suspend and resume from RAM (s2ram). Even better, it works > with/without CONFIG_NO_HZ. Does the patch below fix the HPET_TIMER=y case ? tglx diff --git a/arch/i386/kernel/hpet.c b/arch/i386/kernel/hpet.c index f3ab61e..76afea6 100644 --- a/arch/i386/kernel/hpet.c +++ b/arch/i386/kernel/hpet.c @@ -197,7 +197,7 @@ static int hpet_next_event(unsigned long delta, cnt += delta; hpet_writel(cnt, HPET_T0_CMP); - return ((long)(hpet_readl(HPET_COUNTER) - cnt ) > 0); + return ((long)(hpet_readl(HPET_COUNTER) - cnt ) > 0) ? -ETIME : 0; } /*