summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2008-04-21 17:22:20 +0200
committerIngo Molnar <mingo@elte.hu>2008-04-23 11:39:25 +0200
commit0801326f911522ba4140688f0604e76a49cea0c4 (patch)
tree6c04b8f4b6a16dd4d6620f94cfcef857905e475f /net
parentae7bdce43fdcf6f517a7fb54a90c16ea43324668 (diff)
RE: idle (arch,acpi and apm) and lockdep
On Fri, 2008-04-18 at 10:09 -0700, Pallipadi, Venkatesh wrote: > >@@ -255,7 +254,6 @@ void mwait_idle_with_hints(unsigned long > >ax, unsigned long cx) > > /* Default MONITOR/MWAIT with no hints, used for default C1 state */ > > static void mwait_idle(void) > > { > >- local_irq_enable(); > > mwait_idle_with_hints(0, 0); > > Interrupts are disabled at this point. Correct? > I don't think this is going to work. mwait_idle with hints 0, 0 needs > interrupts to be enabled to wake up out of mwait on an interrupt (it can > wake out of resched due to monitor, but not other interrutps). Only the > newer chips that support specific ecx flag has "wake up out of interrupt > even when interrupt is disabled" feature. > > We will need something similar to sti_mwait and other code in 64 bit > mwait_idle() here. > > >@@ -244,6 +242,8 @@ void mwait_idle_with_hints(unsigned long > >ax, unsigned long cx) > > if (!need_resched()) > > __mwait(ax, cx); > > } > >+ > >+ local_irq_enable(); > > This is problematic. The reason being that we want interrupts to be > disabled until ACPI code reads timer register to get the accurate idle > residency. Enabling interrupts here and disabling later in > acpi_processor_ffh_cstate_enter() above will not help the timing as we > will have some interrupt handler running in between. We need interrupts > disabled until ACPI code reads time and enables it. ok, so we can't merge mwait_idle_with_hints and mwait_idle. how about this Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions