Re: [patch 3/3] clockevents: Fix resume logic - updated version

Andrew Morton
2007-05-12T09:01:31Z

On Sat, 12 May 2007 10:46:03 +0200 Thomas Gleixner <tglx@linutronix.de> wrote:

> On Fri, 2007-05-11 at 23:56 -0700, Andrew Morton wrote:
> > On Fri, 11 May 2007 23:09:15 +0200 "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> >
> > > > >
> > > > > hm, Fedora don't seem to want to give me an RPM which contains acpidump and
> > > > > all the yum servers are featuring scrogged checksums. I could build it, I
> > > > > guess, but there's a principle involved ;)
> > > > >
> > > > > http://userweb.kernel.org/~akpm/dsdt is /proc/acpi/dsdt. Is that OK?
> > > >
> > > > Yes, thanks.
> > >
> > > Hmm, have you tried to do 'echo shutdown > /sys/power/disk' before the
> > > hibernation?
> >
> > That didn't change the behaviour.
>
> Andrew,
>
> can you try the desperate witchcraft patch below ?
>
> tglx
>
> Index: linux-2.6.21/arch/i386/kernel/apic.c
> ===================================================================
> --- linux-2.6.21.orig/arch/i386/kernel/apic.c
> +++ linux-2.6.21/arch/i386/kernel/apic.c
> @@ -238,9 +238,13 @@ static void lapic_timer_setup(enum clock
> break;
> case CLOCK_EVT_MODE_UNUSED:
> case CLOCK_EVT_MODE_SHUTDOWN:
> - v = apic_read(APIC_LVTT);
> - v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
> - apic_write_around(APIC_LVTT, v);
> +
> + if (evt->mode == CLOCK_EVT_MODE_PERIODIC ||
> + evt->mode == CLOCK_EVT_MODE_ONESHOT) {
> + v = apic_read(APIC_LVTT);
> + v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
> + apic_write_around(APIC_LVTT, v);
> + }
> break;
> case CLOCK_EVT_MODE_RESUME:
> /* Nothing to do here */
>

Still hangs in the same fashion, sorry.

It's peculiar that the hang happens when acpi_evaluate_object() hits its
return statement. Any theories there?