Re: 2.6.21-rc6-mm1

Venki Pallipadi
2007-04-11T00:16:34Z

On Tue, Apr 10, 2007 at 07:59:29PM -0400, Adam Belay wrote:
> On Tue, 2007-04-10 at 15:20 -0700, Venki Pallipadi wrote:
> > On Mon, Apr 09, 2007 at 07:40:52PM +0200, Rafael J. Wysocki wrote:
> > > On Monday, 9 April 2007 18:14, Pallipadi, Venkatesh wrote:
> > > >
> > > > >-----Original Message-----
> > > > >From: Rafael J. Wysocki [mailto:rjw@sisk.pl]
> > > > >Sent: Monday, April 09, 2007 9:08 AM
> > > > >To: Andrew Morton
> > > > >Cc: linux-kernel@vger.kernel.org; randy.dunlap@oracle.com;
> > > > >lenb@kernel.org; Pallipadi, Venkatesh
> > > > >Subject: Re: 2.6.21-rc6-mm1
> > > > >
> > > > >On Sunday, 8 April 2007 23:35, Andrew Morton wrote:
> > > > >>
> > > > >>
> > > > >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2
> > > > >.6.21-rc6/2.6.21-rc6-mm1/
> > > > >>
> > > > >>
> > > > >> - Lots of x86 updates
> > > > >>
> > > > >> - This is a 25MB diff against mainline, which is rather large.
> > > > >
> > > > >The cpuidle thing tends to hang my x86-64 machines on boot.
> > > > >
> > > >
> > > > Hi Rafael,
> > > >
> > > > At what point during boot does it hang?
> > >
> > > When mounting the root filesystem. It hangs completely, even the magic SysRq
> > > doesn't work
> > >
> >
> > Rafael: Below patch should fix the hang.
> > Len: Please include this patch in acpi-test.
> >
> > Thanks,
> > Venki
> >
> > Prevent hang on x86-64, when ACPI processor driver is added as a module on
> > a system that does not support C-states.
> >
> > x86-64 expects all idle handlers to enable interrupts before returning from
> > idle handler. This is due to enter_idle(), exit_idle() races. Make
> > cpuidle_idle_call() confirm to this when there is no pm_idle_old.
> >
> > Also, cpuidle look at the return values of attch_driver() and set
> > current_driver to NULL if attach fails on all CPUs.
>
> My vote would be to instead remove enter_idle() and exit_idle() from
> x86-64, just as was done with i386. Performance monitoring
> infrastructure shouldn't be interfering with the idle interrupt
> delivery, as that could only hurt performance... Besides, there's
> probably a better way of doing this than an idle notifier anyway.
>

Agreed. I did not like local_irq_enable() in cpuidle either, but added it
anyway as it was a corner case when cpuidle is active and no driver is
active and not a common case. I thought we will have it as a bandaid solution
until enter_idle, exit_idle is around.

Andi/Stephane: What are the plans around enter_idle exit_idle in x86-64.
Is it still being used by perfmon for x86-64 arch?

Thanks,
Venki